content: // Generated by the protocol buffer compiler.  DO NOT EDIT!
  // source: Mumble.proto
  
  package com.morlunk.jumble.protobuf;
  
  public final class Mumble {
    private Mumble() {}
    public static void registerAllExtensions(
        com.google.protobuf.ExtensionRegistryLite registry) {
    }
  
    public static void registerAllExtensions(
        com.google.protobuf.ExtensionRegistry registry) {
      registerAllExtensions(
          (com.google.protobuf.ExtensionRegistryLite) registry);
    }
    public interface VersionOrBuilder extends
        // @@protoc_insertion_point(interface_extends:MumbleProto.Version)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <code>optional uint32 version = 1;</code>
       */
      boolean hasVersion();
      /**
       * <code>optional uint32 version = 1;</code>
       */
      int getVersion();
  
      /**
       * <code>optional string release = 2;</code>
       */
      boolean hasRelease();
      /**
       * <code>optional string release = 2;</code>
       */
      java.lang.String getRelease();
      /**
       * <code>optional string release = 2;</code>
       */
      com.google.protobuf.ByteString
          getReleaseBytes();
  
      /**
       * <code>optional string os = 3;</code>
       */
      boolean hasOs();
      /**
       * <code>optional string os = 3;</code>
       */
      java.lang.String getOs();
      /**
       * <code>optional string os = 3;</code>
       */
      com.google.protobuf.ByteString
          getOsBytes();
  
      /**
       * <code>optional string os_version = 4;</code>
       */
      boolean hasOsVersion();
      /**
       * <code>optional string os_version = 4;</code>
       */
      java.lang.String getOsVersion();
      /**
       * <code>optional string os_version = 4;</code>
       */
      com.google.protobuf.ByteString
          getOsVersionBytes();
    }
    /**
     * Protobuf type {@code MumbleProto.Version}
     */
    public  static final class Version extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:MumbleProto.Version)
        VersionOrBuilder {
      // Use Version.newBuilder() to construct.
      private Version(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private Version() {
        version_ = 0;
        release_ = "";
        os_ = "";
        osVersion_ = "";
      }
  
      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private Version(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        int mutable_bitField0_ = 0;
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder();
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              default: {
                if (!parseUnknownField(input, unknownFields,
                                       extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 8: {
                bitField0_ |= 0x00000001;
                version_ = input.readUInt32();
                break;
              }
              case 18: {
                com.google.protobuf.ByteString bs = input.readBytes();
                bitField0_ |= 0x00000002;
                release_ = bs;
                break;
              }
              case 26: {
                com.google.protobuf.ByteString bs = input.readBytes();
                bitField0_ |= 0x00000004;
                os_ = bs;
                break;
              }
              case 34: {
                com.google.protobuf.ByteString bs = input.readBytes();
                bitField0_ |= 0x00000008;
                osVersion_ = bs;
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_Version_descriptor;
      }
  
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_Version_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.morlunk.jumble.protobuf.Mumble.Version.class, com.morlunk.jumble.protobuf.Mumble.Version.Builder.class);
      }
  
      private int bitField0_;
      public static final int VERSION_FIELD_NUMBER = 1;
      private int version_;
      /**
       * <code>optional uint32 version = 1;</code>
       */
      public boolean hasVersion() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>optional uint32 version = 1;</code>
       */
      public int getVersion() {
        return version_;
      }
  
      public static final int RELEASE_FIELD_NUMBER = 2;
      private volatile java.lang.Object release_;
      /**
       * <code>optional string release = 2;</code>
       */
      public boolean hasRelease() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional string release = 2;</code>
       */
      public java.lang.String getRelease() {
        java.lang.Object ref = release_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            release_ = s;
          }
          return s;
        }
      }
      /**
       * <code>optional string release = 2;</code>
       */
      public com.google.protobuf.ByteString
          getReleaseBytes() {
        java.lang.Object ref = release_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          release_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
  
      public static final int OS_FIELD_NUMBER = 3;
      private volatile java.lang.Object os_;
      /**
       * <code>optional string os = 3;</code>
       */
      public boolean hasOs() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>optional string os = 3;</code>
       */
      public java.lang.String getOs() {
        java.lang.Object ref = os_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            os_ = s;
          }
          return s;
        }
      }
      /**
       * <code>optional string os = 3;</code>
       */
      public com.google.protobuf.ByteString
          getOsBytes() {
        java.lang.Object ref = os_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          os_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
  
      public static final int OS_VERSION_FIELD_NUMBER = 4;
      private volatile java.lang.Object osVersion_;
      /**
       * <code>optional string os_version = 4;</code>
       */
      public boolean hasOsVersion() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>optional string os_version = 4;</code>
       */
      public java.lang.String getOsVersion() {
        java.lang.Object ref = osVersion_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            osVersion_ = s;
          }
          return s;
        }
      }
      /**
       * <code>optional string os_version = 4;</code>
       */
      public com.google.protobuf.ByteString
          getOsVersionBytes() {
        java.lang.Object ref = osVersion_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          osVersion_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
  
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        memoizedIsInitialized = 1;
        return true;
      }
  
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeUInt32(1, version_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 2, release_);
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 3, os_);
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 4, osVersion_);
        }
        unknownFields.writeTo(output);
      }
  
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(1, version_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, release_);
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, os_);
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, osVersion_);
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }
  
      private static final long serialVersionUID = 0L;
      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.morlunk.jumble.protobuf.Mumble.Version)) {
          return super.equals(obj);
        }
        com.morlunk.jumble.protobuf.Mumble.Version other = (com.morlunk.jumble.protobuf.Mumble.Version) obj;
  
        boolean result = true;
        result = result && (hasVersion() == other.hasVersion());
        if (hasVersion()) {
          result = result && (getVersion()
              == other.getVersion());
        }
        result = result && (hasRelease() == other.hasRelease());
        if (hasRelease()) {
          result = result && getRelease()
              .equals(other.getRelease());
        }
        result = result && (hasOs() == other.hasOs());
        if (hasOs()) {
          result = result && getOs()
              .equals(other.getOs());
        }
        result = result && (hasOsVersion() == other.hasOsVersion());
        if (hasOsVersion()) {
          result = result && getOsVersion()
              .equals(other.getOsVersion());
        }
        result = result && unknownFields.equals(other.unknownFields);
        return result;
      }
  
      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptorForType().hashCode();
        if (hasVersion()) {
          hash = (37 * hash) + VERSION_FIELD_NUMBER;
          hash = (53 * hash) + getVersion();
        }
        if (hasRelease()) {
          hash = (37 * hash) + RELEASE_FIELD_NUMBER;
          hash = (53 * hash) + getRelease().hashCode();
        }
        if (hasOs()) {
          hash = (37 * hash) + OS_FIELD_NUMBER;
          hash = (53 * hash) + getOs().hashCode();
        }
        if (hasOsVersion()) {
          hash = (37 * hash) + OS_VERSION_FIELD_NUMBER;
          hash = (53 * hash) + getOsVersion().hashCode();
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static com.morlunk.jumble.protobuf.Mumble.Version parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.morlunk.jumble.protobuf.Mumble.Version parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.Version parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.morlunk.jumble.protobuf.Mumble.Version parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.Version parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.morlunk.jumble.protobuf.Mumble.Version parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.Version parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.morlunk.jumble.protobuf.Mumble.Version parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.Version parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.morlunk.jumble.protobuf.Mumble.Version parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
  
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(com.morlunk.jumble.protobuf.Mumble.Version prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }
  
      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code MumbleProto.Version}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:MumbleProto.Version)
          com.morlunk.jumble.protobuf.Mumble.VersionOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_Version_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_Version_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.morlunk.jumble.protobuf.Mumble.Version.class, com.morlunk.jumble.protobuf.Mumble.Version.Builder.class);
        }
  
        // Construct using com.morlunk.jumble.protobuf.Mumble.Version.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
  
        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
          }
        }
        public Builder clear() {
          super.clear();
          version_ = 0;
          bitField0_ = (bitField0_ & ~0x00000001);
          release_ = "";
          bitField0_ = (bitField0_ & ~0x00000002);
          os_ = "";
          bitField0_ = (bitField0_ & ~0x00000004);
          osVersion_ = "";
          bitField0_ = (bitField0_ & ~0x00000008);
          return this;
        }
  
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_Version_descriptor;
        }
  
        public com.morlunk.jumble.protobuf.Mumble.Version getDefaultInstanceForType() {
          return com.morlunk.jumble.protobuf.Mumble.Version.getDefaultInstance();
        }
  
        public com.morlunk.jumble.protobuf.Mumble.Version build() {
          com.morlunk.jumble.protobuf.Mumble.Version result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        public com.morlunk.jumble.protobuf.Mumble.Version buildPartial() {
          com.morlunk.jumble.protobuf.Mumble.Version result = new com.morlunk.jumble.protobuf.Mumble.Version(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.version_ = version_;
          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
            to_bitField0_ |= 0x00000002;
          }
          result.release_ = release_;
          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
            to_bitField0_ |= 0x00000004;
          }
          result.os_ = os_;
          if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
            to_bitField0_ |= 0x00000008;
          }
          result.osVersion_ = osVersion_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
  
        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.setField(field, value);
        }
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return (Builder) super.clearField(field);
        }
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return (Builder) super.clearOneof(oneof);
        }
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.morlunk.jumble.protobuf.Mumble.Version) {
            return mergeFrom((com.morlunk.jumble.protobuf.Mumble.Version)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(com.morlunk.jumble.protobuf.Mumble.Version other) {
          if (other == com.morlunk.jumble.protobuf.Mumble.Version.getDefaultInstance()) return this;
          if (other.hasVersion()) {
            setVersion(other.getVersion());
          }
          if (other.hasRelease()) {
            bitField0_ |= 0x00000002;
            release_ = other.release_;
            onChanged();
          }
          if (other.hasOs()) {
            bitField0_ |= 0x00000004;
            os_ = other.os_;
            onChanged();
          }
          if (other.hasOsVersion()) {
            bitField0_ |= 0x00000008;
            osVersion_ = other.osVersion_;
            onChanged();
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }
  
        public final boolean isInitialized() {
          return true;
        }
  
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.morlunk.jumble.protobuf.Mumble.Version parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (com.morlunk.jumble.protobuf.Mumble.Version) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;
  
        private int version_ ;
        /**
         * <code>optional uint32 version = 1;</code>
         */
        public boolean hasVersion() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <code>optional uint32 version = 1;</code>
         */
        public int getVersion() {
          return version_;
        }
        /**
         * <code>optional uint32 version = 1;</code>
         */
        public Builder setVersion(int value) {
          bitField0_ |= 0x00000001;
          version_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional uint32 version = 1;</code>
         */
        public Builder clearVersion() {
          bitField0_ = (bitField0_ & ~0x00000001);
          version_ = 0;
          onChanged();
          return this;
        }
  
        private java.lang.Object release_ = "";
        /**
         * <code>optional string release = 2;</code>
         */
        public boolean hasRelease() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * <code>optional string release = 2;</code>
         */
        public java.lang.String getRelease() {
          java.lang.Object ref = release_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              release_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>optional string release = 2;</code>
         */
        public com.google.protobuf.ByteString
            getReleaseBytes() {
          java.lang.Object ref = release_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            release_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>optional string release = 2;</code>
         */
        public Builder setRelease(
            java.lang.String value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000002;
          release_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional string release = 2;</code>
         */
        public Builder clearRelease() {
          bitField0_ = (bitField0_ & ~0x00000002);
          release_ = getDefaultInstance().getRelease();
          onChanged();
          return this;
        }
        /**
         * <code>optional string release = 2;</code>
         */
        public Builder setReleaseBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000002;
          release_ = value;
          onChanged();
          return this;
        }
  
        private java.lang.Object os_ = "";
        /**
         * <code>optional string os = 3;</code>
         */
        public boolean hasOs() {
          return ((bitField0_ & 0x00000004) == 0x00000004);
        }
        /**
         * <code>optional string os = 3;</code>
         */
        public java.lang.String getOs() {
          java.lang.Object ref = os_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              os_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>optional string os = 3;</code>
         */
        public com.google.protobuf.ByteString
            getOsBytes() {
          java.lang.Object ref = os_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            os_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>optional string os = 3;</code>
         */
        public Builder setOs(
            java.lang.String value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000004;
          os_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional string os = 3;</code>
         */
        public Builder clearOs() {
          bitField0_ = (bitField0_ & ~0x00000004);
          os_ = getDefaultInstance().getOs();
          onChanged();
          return this;
        }
        /**
         * <code>optional string os = 3;</code>
         */
        public Builder setOsBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000004;
          os_ = value;
          onChanged();
          return this;
        }
  
        private java.lang.Object osVersion_ = "";
        /**
         * <code>optional string os_version = 4;</code>
         */
        public boolean hasOsVersion() {
          return ((bitField0_ & 0x00000008) == 0x00000008);
        }
        /**
         * <code>optional string os_version = 4;</code>
         */
        public java.lang.String getOsVersion() {
          java.lang.Object ref = osVersion_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              osVersion_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>optional string os_version = 4;</code>
         */
        public com.google.protobuf.ByteString
            getOsVersionBytes() {
          java.lang.Object ref = osVersion_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            osVersion_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>optional string os_version = 4;</code>
         */
        public Builder setOsVersion(
            java.lang.String value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000008;
          osVersion_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional string os_version = 4;</code>
         */
        public Builder clearOsVersion() {
          bitField0_ = (bitField0_ & ~0x00000008);
          osVersion_ = getDefaultInstance().getOsVersion();
          onChanged();
          return this;
        }
        /**
         * <code>optional string os_version = 4;</code>
         */
        public Builder setOsVersionBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000008;
          osVersion_ = value;
          onChanged();
          return this;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }
  
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:MumbleProto.Version)
      }
  
      // @@protoc_insertion_point(class_scope:MumbleProto.Version)
      private static final com.morlunk.jumble.protobuf.Mumble.Version DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.morlunk.jumble.protobuf.Mumble.Version();
      }
  
      public static com.morlunk.jumble.protobuf.Mumble.Version getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      @java.lang.Deprecated public static final com.google.protobuf.Parser<Version>
          PARSER = new com.google.protobuf.AbstractParser<Version>() {
        public Version parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return new Version(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<Version> parser() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.google.protobuf.Parser<Version> getParserForType() {
        return PARSER;
      }
  
      public com.morlunk.jumble.protobuf.Mumble.Version getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface UDPTunnelOrBuilder extends
        // @@protoc_insertion_point(interface_extends:MumbleProto.UDPTunnel)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <code>required bytes packet = 1;</code>
       */
      boolean hasPacket();
      /**
       * <code>required bytes packet = 1;</code>
       */
      com.google.protobuf.ByteString getPacket();
    }
    /**
     * Protobuf type {@code MumbleProto.UDPTunnel}
     */
    public  static final class UDPTunnel extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:MumbleProto.UDPTunnel)
        UDPTunnelOrBuilder {
      // Use UDPTunnel.newBuilder() to construct.
      private UDPTunnel(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private UDPTunnel() {
        packet_ = com.google.protobuf.ByteString.EMPTY;
      }
  
      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private UDPTunnel(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        int mutable_bitField0_ = 0;
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder();
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              default: {
                if (!parseUnknownField(input, unknownFields,
                                       extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 10: {
                bitField0_ |= 0x00000001;
                packet_ = input.readBytes();
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_UDPTunnel_descriptor;
      }
  
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_UDPTunnel_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.morlunk.jumble.protobuf.Mumble.UDPTunnel.class, com.morlunk.jumble.protobuf.Mumble.UDPTunnel.Builder.class);
      }
  
      private int bitField0_;
      public static final int PACKET_FIELD_NUMBER = 1;
      private com.google.protobuf.ByteString packet_;
      /**
       * <code>required bytes packet = 1;</code>
       */
      public boolean hasPacket() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required bytes packet = 1;</code>
       */
      public com.google.protobuf.ByteString getPacket() {
        return packet_;
      }
  
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        if (!hasPacket()) {
          memoizedIsInitialized = 0;
          return false;
        }
        memoizedIsInitialized = 1;
        return true;
      }
  
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeBytes(1, packet_);
        }
        unknownFields.writeTo(output);
      }
  
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(1, packet_);
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }
  
      private static final long serialVersionUID = 0L;
      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.morlunk.jumble.protobuf.Mumble.UDPTunnel)) {
          return super.equals(obj);
        }
        com.morlunk.jumble.protobuf.Mumble.UDPTunnel other = (com.morlunk.jumble.protobuf.Mumble.UDPTunnel) obj;
  
        boolean result = true;
        result = result && (hasPacket() == other.hasPacket());
        if (hasPacket()) {
          result = result && getPacket()
              .equals(other.getPacket());
        }
        result = result && unknownFields.equals(other.unknownFields);
        return result;
      }
  
      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptorForType().hashCode();
        if (hasPacket()) {
          hash = (37 * hash) + PACKET_FIELD_NUMBER;
          hash = (53 * hash) + getPacket().hashCode();
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static com.morlunk.jumble.protobuf.Mumble.UDPTunnel parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.morlunk.jumble.protobuf.Mumble.UDPTunnel parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.UDPTunnel parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.morlunk.jumble.protobuf.Mumble.UDPTunnel parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.UDPTunnel parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.morlunk.jumble.protobuf.Mumble.UDPTunnel parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.UDPTunnel parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.morlunk.jumble.protobuf.Mumble.UDPTunnel parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.UDPTunnel parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.morlunk.jumble.protobuf.Mumble.UDPTunnel parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
  
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(com.morlunk.jumble.protobuf.Mumble.UDPTunnel prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }
  
      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code MumbleProto.UDPTunnel}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:MumbleProto.UDPTunnel)
          com.morlunk.jumble.protobuf.Mumble.UDPTunnelOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_UDPTunnel_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_UDPTunnel_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.morlunk.jumble.protobuf.Mumble.UDPTunnel.class, com.morlunk.jumble.protobuf.Mumble.UDPTunnel.Builder.class);
        }
  
        // Construct using com.morlunk.jumble.protobuf.Mumble.UDPTunnel.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
  
        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
          }
        }
        public Builder clear() {
          super.clear();
          packet_ = com.google.protobuf.ByteString.EMPTY;
          bitField0_ = (bitField0_ & ~0x00000001);
          return this;
        }
  
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_UDPTunnel_descriptor;
        }
  
        public com.morlunk.jumble.protobuf.Mumble.UDPTunnel getDefaultInstanceForType() {
          return com.morlunk.jumble.protobuf.Mumble.UDPTunnel.getDefaultInstance();
        }
  
        public com.morlunk.jumble.protobuf.Mumble.UDPTunnel build() {
          com.morlunk.jumble.protobuf.Mumble.UDPTunnel result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        public com.morlunk.jumble.protobuf.Mumble.UDPTunnel buildPartial() {
          com.morlunk.jumble.protobuf.Mumble.UDPTunnel result = new com.morlunk.jumble.protobuf.Mumble.UDPTunnel(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.packet_ = packet_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
  
        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.setField(field, value);
        }
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return (Builder) super.clearField(field);
        }
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return (Builder) super.clearOneof(oneof);
        }
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.morlunk.jumble.protobuf.Mumble.UDPTunnel) {
            return mergeFrom((com.morlunk.jumble.protobuf.Mumble.UDPTunnel)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(com.morlunk.jumble.protobuf.Mumble.UDPTunnel other) {
          if (other == com.morlunk.jumble.protobuf.Mumble.UDPTunnel.getDefaultInstance()) return this;
          if (other.hasPacket()) {
            setPacket(other.getPacket());
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }
  
        public final boolean isInitialized() {
          if (!hasPacket()) {
            return false;
          }
          return true;
        }
  
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.morlunk.jumble.protobuf.Mumble.UDPTunnel parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (com.morlunk.jumble.protobuf.Mumble.UDPTunnel) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;
  
        private com.google.protobuf.ByteString packet_ = com.google.protobuf.ByteString.EMPTY;
        /**
         * <code>required bytes packet = 1;</code>
         */
        public boolean hasPacket() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <code>required bytes packet = 1;</code>
         */
        public com.google.protobuf.ByteString getPacket() {
          return packet_;
        }
        /**
         * <code>required bytes packet = 1;</code>
         */
        public Builder setPacket(com.google.protobuf.ByteString value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000001;
          packet_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>required bytes packet = 1;</code>
         */
        public Builder clearPacket() {
          bitField0_ = (bitField0_ & ~0x00000001);
          packet_ = getDefaultInstance().getPacket();
          onChanged();
          return this;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }
  
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:MumbleProto.UDPTunnel)
      }
  
      // @@protoc_insertion_point(class_scope:MumbleProto.UDPTunnel)
      private static final com.morlunk.jumble.protobuf.Mumble.UDPTunnel DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.morlunk.jumble.protobuf.Mumble.UDPTunnel();
      }
  
      public static com.morlunk.jumble.protobuf.Mumble.UDPTunnel getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      @java.lang.Deprecated public static final com.google.protobuf.Parser<UDPTunnel>
          PARSER = new com.google.protobuf.AbstractParser<UDPTunnel>() {
        public UDPTunnel parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return new UDPTunnel(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<UDPTunnel> parser() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.google.protobuf.Parser<UDPTunnel> getParserForType() {
        return PARSER;
      }
  
      public com.morlunk.jumble.protobuf.Mumble.UDPTunnel getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface AuthenticateOrBuilder extends
        // @@protoc_insertion_point(interface_extends:MumbleProto.Authenticate)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <code>optional string username = 1;</code>
       */
      boolean hasUsername();
      /**
       * <code>optional string username = 1;</code>
       */
      java.lang.String getUsername();
      /**
       * <code>optional string username = 1;</code>
       */
      com.google.protobuf.ByteString
          getUsernameBytes();
  
      /**
       * <code>optional string password = 2;</code>
       */
      boolean hasPassword();
      /**
       * <code>optional string password = 2;</code>
       */
      java.lang.String getPassword();
      /**
       * <code>optional string password = 2;</code>
       */
      com.google.protobuf.ByteString
          getPasswordBytes();
  
      /**
       * <code>repeated string tokens = 3;</code>
       */
      java.util.List<java.lang.String>
          getTokensList();
      /**
       * <code>repeated string tokens = 3;</code>
       */
      int getTokensCount();
      /**
       * <code>repeated string tokens = 3;</code>
       */
      java.lang.String getTokens(int index);
      /**
       * <code>repeated string tokens = 3;</code>
       */
      com.google.protobuf.ByteString
          getTokensBytes(int index);
  
      /**
       * <code>repeated int32 celt_versions = 4;</code>
       */
      java.util.List<java.lang.Integer> getCeltVersionsList();
      /**
       * <code>repeated int32 celt_versions = 4;</code>
       */
      int getCeltVersionsCount();
      /**
       * <code>repeated int32 celt_versions = 4;</code>
       */
      int getCeltVersions(int index);
  
      /**
       * <code>optional bool opus = 5 [default = false];</code>
       */
      boolean hasOpus();
      /**
       * <code>optional bool opus = 5 [default = false];</code>
       */
      boolean getOpus();
    }
    /**
     * Protobuf type {@code MumbleProto.Authenticate}
     */
    public  static final class Authenticate extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:MumbleProto.Authenticate)
        AuthenticateOrBuilder {
      // Use Authenticate.newBuilder() to construct.
      private Authenticate(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private Authenticate() {
        username_ = "";
        password_ = "";
        tokens_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        celtVersions_ = java.util.Collections.emptyList();
        opus_ = false;
      }
  
      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private Authenticate(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        int mutable_bitField0_ = 0;
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder();
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              default: {
                if (!parseUnknownField(input, unknownFields,
                                       extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 10: {
                com.google.protobuf.ByteString bs = input.readBytes();
                bitField0_ |= 0x00000001;
                username_ = bs;
                break;
              }
              case 18: {
                com.google.protobuf.ByteString bs = input.readBytes();
                bitField0_ |= 0x00000002;
                password_ = bs;
                break;
              }
              case 26: {
                com.google.protobuf.ByteString bs = input.readBytes();
                if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
                  tokens_ = new com.google.protobuf.LazyStringArrayList();
                  mutable_bitField0_ |= 0x00000004;
                }
                tokens_.add(bs);
                break;
              }
              case 32: {
                if (!((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
                  celtVersions_ = new java.util.ArrayList<java.lang.Integer>();
                  mutable_bitField0_ |= 0x00000008;
                }
                celtVersions_.add(input.readInt32());
                break;
              }
              case 34: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                if (!((mutable_bitField0_ & 0x00000008) == 0x00000008) && input.getBytesUntilLimit() > 0) {
                  celtVersions_ = new java.util.ArrayList<java.lang.Integer>();
                  mutable_bitField0_ |= 0x00000008;
                }
                while (input.getBytesUntilLimit() > 0) {
                  celtVersions_.add(input.readInt32());
                }
                input.popLimit(limit);
                break;
              }
              case 40: {
                bitField0_ |= 0x00000004;
                opus_ = input.readBool();
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
            tokens_ = tokens_.getUnmodifiableView();
          }
          if (((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
            celtVersions_ = java.util.Collections.unmodifiableList(celtVersions_);
          }
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_Authenticate_descriptor;
      }
  
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_Authenticate_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.morlunk.jumble.protobuf.Mumble.Authenticate.class, com.morlunk.jumble.protobuf.Mumble.Authenticate.Builder.class);
      }
  
      private int bitField0_;
      public static final int USERNAME_FIELD_NUMBER = 1;
      private volatile java.lang.Object username_;
      /**
       * <code>optional string username = 1;</code>
       */
      public boolean hasUsername() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>optional string username = 1;</code>
       */
      public java.lang.String getUsername() {
        java.lang.Object ref = username_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            username_ = s;
          }
          return s;
        }
      }
      /**
       * <code>optional string username = 1;</code>
       */
      public com.google.protobuf.ByteString
          getUsernameBytes() {
        java.lang.Object ref = username_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          username_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
  
      public static final int PASSWORD_FIELD_NUMBER = 2;
      private volatile java.lang.Object password_;
      /**
       * <code>optional string password = 2;</code>
       */
      public boolean hasPassword() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional string password = 2;</code>
       */
      public java.lang.String getPassword() {
        java.lang.Object ref = password_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            password_ = s;
          }
          return s;
        }
      }
      /**
       * <code>optional string password = 2;</code>
       */
      public com.google.protobuf.ByteString
          getPasswordBytes() {
        java.lang.Object ref = password_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          password_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
  
      public static final int TOKENS_FIELD_NUMBER = 3;
      private com.google.protobuf.LazyStringList tokens_;
      /**
       * <code>repeated string tokens = 3;</code>
       */
      public com.google.protobuf.ProtocolStringList
          getTokensList() {
        return tokens_;
      }
      /**
       * <code>repeated string tokens = 3;</code>
       */
      public int getTokensCount() {
        return tokens_.size();
      }
      /**
       * <code>repeated string tokens = 3;</code>
       */
      public java.lang.String getTokens(int index) {
        return tokens_.get(index);
      }
      /**
       * <code>repeated string tokens = 3;</code>
       */
      public com.google.protobuf.ByteString
          getTokensBytes(int index) {
        return tokens_.getByteString(index);
      }
  
      public static final int CELT_VERSIONS_FIELD_NUMBER = 4;
      private java.util.List<java.lang.Integer> celtVersions_;
      /**
       * <code>repeated int32 celt_versions = 4;</code>
       */
      public java.util.List<java.lang.Integer>
          getCeltVersionsList() {
        return celtVersions_;
      }
      /**
       * <code>repeated int32 celt_versions = 4;</code>
       */
      public int getCeltVersionsCount() {
        return celtVersions_.size();
      }
      /**
       * <code>repeated int32 celt_versions = 4;</code>
       */
      public int getCeltVersions(int index) {
        return celtVersions_.get(index);
      }
  
      public static final int OPUS_FIELD_NUMBER = 5;
      private boolean opus_;
      /**
       * <code>optional bool opus = 5 [default = false];</code>
       */
      public boolean hasOpus() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>optional bool opus = 5 [default = false];</code>
       */
      public boolean getOpus() {
        return opus_;
      }
  
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        memoizedIsInitialized = 1;
        return true;
      }
  
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 1, username_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 2, password_);
        }
        for (int i = 0; i < tokens_.size(); i++) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 3, tokens_.getRaw(i));
        }
        for (int i = 0; i < celtVersions_.size(); i++) {
          output.writeInt32(4, celtVersions_.get(i));
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          output.writeBool(5, opus_);
        }
        unknownFields.writeTo(output);
      }
  
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, username_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, password_);
        }
        {
          int dataSize = 0;
          for (int i = 0; i < tokens_.size(); i++) {
            dataSize += computeStringSizeNoTag(tokens_.getRaw(i));
          }
          size += dataSize;
          size += 1 * getTokensList().size();
        }
        {
          int dataSize = 0;
          for (int i = 0; i < celtVersions_.size(); i++) {
            dataSize += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(celtVersions_.get(i));
          }
          size += dataSize;
          size += 1 * getCeltVersionsList().size();
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBoolSize(5, opus_);
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }
  
      private static final long serialVersionUID = 0L;
      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.morlunk.jumble.protobuf.Mumble.Authenticate)) {
          return super.equals(obj);
        }
        com.morlunk.jumble.protobuf.Mumble.Authenticate other = (com.morlunk.jumble.protobuf.Mumble.Authenticate) obj;
  
        boolean result = true;
        result = result && (hasUsername() == other.hasUsername());
        if (hasUsername()) {
          result = result && getUsername()
              .equals(other.getUsername());
        }
        result = result && (hasPassword() == other.hasPassword());
        if (hasPassword()) {
          result = result && getPassword()
              .equals(other.getPassword());
        }
        result = result && getTokensList()
            .equals(other.getTokensList());
        result = result && getCeltVersionsList()
            .equals(other.getCeltVersionsList());
        result = result && (hasOpus() == other.hasOpus());
        if (hasOpus()) {
          result = result && (getOpus()
              == other.getOpus());
        }
        result = result && unknownFields.equals(other.unknownFields);
        return result;
      }
  
      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptorForType().hashCode();
        if (hasUsername()) {
          hash = (37 * hash) + USERNAME_FIELD_NUMBER;
          hash = (53 * hash) + getUsername().hashCode();
        }
        if (hasPassword()) {
          hash = (37 * hash) + PASSWORD_FIELD_NUMBER;
          hash = (53 * hash) + getPassword().hashCode();
        }
        if (getTokensCount() > 0) {
          hash = (37 * hash) + TOKENS_FIELD_NUMBER;
          hash = (53 * hash) + getTokensList().hashCode();
        }
        if (getCeltVersionsCount() > 0) {
          hash = (37 * hash) + CELT_VERSIONS_FIELD_NUMBER;
          hash = (53 * hash) + getCeltVersionsList().hashCode();
        }
        if (hasOpus()) {
          hash = (37 * hash) + OPUS_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
              getOpus());
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static com.morlunk.jumble.protobuf.Mumble.Authenticate parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.morlunk.jumble.protobuf.Mumble.Authenticate parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.Authenticate parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.morlunk.jumble.protobuf.Mumble.Authenticate parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.Authenticate parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.morlunk.jumble.protobuf.Mumble.Authenticate parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.Authenticate parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.morlunk.jumble.protobuf.Mumble.Authenticate parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.Authenticate parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.morlunk.jumble.protobuf.Mumble.Authenticate parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
  
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(com.morlunk.jumble.protobuf.Mumble.Authenticate prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }
  
      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code MumbleProto.Authenticate}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:MumbleProto.Authenticate)
          com.morlunk.jumble.protobuf.Mumble.AuthenticateOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_Authenticate_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_Authenticate_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.morlunk.jumble.protobuf.Mumble.Authenticate.class, com.morlunk.jumble.protobuf.Mumble.Authenticate.Builder.class);
        }
  
        // Construct using com.morlunk.jumble.protobuf.Mumble.Authenticate.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
  
        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
          }
        }
        public Builder clear() {
          super.clear();
          username_ = "";
          bitField0_ = (bitField0_ & ~0x00000001);
          password_ = "";
          bitField0_ = (bitField0_ & ~0x00000002);
          tokens_ = com.google.protobuf.LazyStringArrayList.EMPTY;
          bitField0_ = (bitField0_ & ~0x00000004);
          celtVersions_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000008);
          opus_ = false;
          bitField0_ = (bitField0_ & ~0x00000010);
          return this;
        }
  
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_Authenticate_descriptor;
        }
  
        public com.morlunk.jumble.protobuf.Mumble.Authenticate getDefaultInstanceForType() {
          return com.morlunk.jumble.protobuf.Mumble.Authenticate.getDefaultInstance();
        }
  
        public com.morlunk.jumble.protobuf.Mumble.Authenticate build() {
          com.morlunk.jumble.protobuf.Mumble.Authenticate result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        public com.morlunk.jumble.protobuf.Mumble.Authenticate buildPartial() {
          com.morlunk.jumble.protobuf.Mumble.Authenticate result = new com.morlunk.jumble.protobuf.Mumble.Authenticate(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.username_ = username_;
          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
            to_bitField0_ |= 0x00000002;
          }
          result.password_ = password_;
          if (((bitField0_ & 0x00000004) == 0x00000004)) {
            tokens_ = tokens_.getUnmodifiableView();
            bitField0_ = (bitField0_ & ~0x00000004);
          }
          result.tokens_ = tokens_;
          if (((bitField0_ & 0x00000008) == 0x00000008)) {
            celtVersions_ = java.util.Collections.unmodifiableList(celtVersions_);
            bitField0_ = (bitField0_ & ~0x00000008);
          }
          result.celtVersions_ = celtVersions_;
          if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
            to_bitField0_ |= 0x00000004;
          }
          result.opus_ = opus_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
  
        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.setField(field, value);
        }
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return (Builder) super.clearField(field);
        }
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return (Builder) super.clearOneof(oneof);
        }
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.morlunk.jumble.protobuf.Mumble.Authenticate) {
            return mergeFrom((com.morlunk.jumble.protobuf.Mumble.Authenticate)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(com.morlunk.jumble.protobuf.Mumble.Authenticate other) {
          if (other == com.morlunk.jumble.protobuf.Mumble.Authenticate.getDefaultInstance()) return this;
          if (other.hasUsername()) {
            bitField0_ |= 0x00000001;
            username_ = other.username_;
            onChanged();
          }
          if (other.hasPassword()) {
            bitField0_ |= 0x00000002;
            password_ = other.password_;
            onChanged();
          }
          if (!other.tokens_.isEmpty()) {
            if (tokens_.isEmpty()) {
              tokens_ = other.tokens_;
              bitField0_ = (bitField0_ & ~0x00000004);
            } else {
              ensureTokensIsMutable();
              tokens_.addAll(other.tokens_);
            }
            onChanged();
          }
          if (!other.celtVersions_.isEmpty()) {
            if (celtVersions_.isEmpty()) {
              celtVersions_ = other.celtVersions_;
              bitField0_ = (bitField0_ & ~0x00000008);
            } else {
              ensureCeltVersionsIsMutable();
              celtVersions_.addAll(other.celtVersions_);
            }
            onChanged();
          }
          if (other.hasOpus()) {
            setOpus(other.getOpus());
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }
  
        public final boolean isInitialized() {
          return true;
        }
  
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.morlunk.jumble.protobuf.Mumble.Authenticate parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (com.morlunk.jumble.protobuf.Mumble.Authenticate) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;
  
        private java.lang.Object username_ = "";
        /**
         * <code>optional string username = 1;</code>
         */
        public boolean hasUsername() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <code>optional string username = 1;</code>
         */
        public java.lang.String getUsername() {
          java.lang.Object ref = username_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              username_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>optional string username = 1;</code>
         */
        public com.google.protobuf.ByteString
            getUsernameBytes() {
          java.lang.Object ref = username_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            username_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>optional string username = 1;</code>
         */
        public Builder setUsername(
            java.lang.String value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000001;
          username_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional string username = 1;</code>
         */
        public Builder clearUsername() {
          bitField0_ = (bitField0_ & ~0x00000001);
          username_ = getDefaultInstance().getUsername();
          onChanged();
          return this;
        }
        /**
         * <code>optional string username = 1;</code>
         */
        public Builder setUsernameBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000001;
          username_ = value;
          onChanged();
          return this;
        }
  
        private java.lang.Object password_ = "";
        /**
         * <code>optional string password = 2;</code>
         */
        public boolean hasPassword() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * <code>optional string password = 2;</code>
         */
        public java.lang.String getPassword() {
          java.lang.Object ref = password_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              password_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>optional string password = 2;</code>
         */
        public com.google.protobuf.ByteString
            getPasswordBytes() {
          java.lang.Object ref = password_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            password_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>optional string password = 2;</code>
         */
        public Builder setPassword(
            java.lang.String value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000002;
          password_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional string password = 2;</code>
         */
        public Builder clearPassword() {
          bitField0_ = (bitField0_ & ~0x00000002);
          password_ = getDefaultInstance().getPassword();
          onChanged();
          return this;
        }
        /**
         * <code>optional string password = 2;</code>
         */
        public Builder setPasswordBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000002;
          password_ = value;
          onChanged();
          return this;
        }
  
        private com.google.protobuf.LazyStringList tokens_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        private void ensureTokensIsMutable() {
          if (!((bitField0_ & 0x00000004) == 0x00000004)) {
            tokens_ = new com.google.protobuf.LazyStringArrayList(tokens_);
            bitField0_ |= 0x00000004;
           }
        }
        /**
         * <code>repeated string tokens = 3;</code>
         */
        public com.google.protobuf.ProtocolStringList
            getTokensList() {
          return tokens_.getUnmodifiableView();
        }
        /**
         * <code>repeated string tokens = 3;</code>
         */
        public int getTokensCount() {
          return tokens_.size();
        }
        /**
         * <code>repeated string tokens = 3;</code>
         */
        public java.lang.String getTokens(int index) {
          return tokens_.get(index);
        }
        /**
         * <code>repeated string tokens = 3;</code>
         */
        public com.google.protobuf.ByteString
            getTokensBytes(int index) {
          return tokens_.getByteString(index);
        }
        /**
         * <code>repeated string tokens = 3;</code>
         */
        public Builder setTokens(
            int index, java.lang.String value) {
          if (value == null) {
      throw new NullPointerException();
    }
    ensureTokensIsMutable();
          tokens_.set(index, value);
          onChanged();
          return this;
        }
        /**
         * <code>repeated string tokens = 3;</code>
         */
        public Builder addTokens(
            java.lang.String value) {
          if (value == null) {
      throw new NullPointerException();
    }
    ensureTokensIsMutable();
          tokens_.add(value);
          onChanged();
          return this;
        }
        /**
         * <code>repeated string tokens = 3;</code>
         */
        public Builder addAllTokens(
            java.lang.Iterable<java.lang.String> values) {
          ensureTokensIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, tokens_);
          onChanged();
          return this;
        }
        /**
         * <code>repeated string tokens = 3;</code>
         */
        public Builder clearTokens() {
          tokens_ = com.google.protobuf.LazyStringArrayList.EMPTY;
          bitField0_ = (bitField0_ & ~0x00000004);
          onChanged();
          return this;
        }
        /**
         * <code>repeated string tokens = 3;</code>
         */
        public Builder addTokensBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
      throw new NullPointerException();
    }
    ensureTokensIsMutable();
          tokens_.add(value);
          onChanged();
          return this;
        }
  
        private java.util.List<java.lang.Integer> celtVersions_ = java.util.Collections.emptyList();
        private void ensureCeltVersionsIsMutable() {
          if (!((bitField0_ & 0x00000008) == 0x00000008)) {
            celtVersions_ = new java.util.ArrayList<java.lang.Integer>(celtVersions_);
            bitField0_ |= 0x00000008;
           }
        }
        /**
         * <code>repeated int32 celt_versions = 4;</code>
         */
        public java.util.List<java.lang.Integer>
            getCeltVersionsList() {
          return java.util.Collections.unmodifiableList(celtVersions_);
        }
        /**
         * <code>repeated int32 celt_versions = 4;</code>
         */
        public int getCeltVersionsCount() {
          return celtVersions_.size();
        }
        /**
         * <code>repeated int32 celt_versions = 4;</code>
         */
        public int getCeltVersions(int index) {
          return celtVersions_.get(index);
        }
        /**
         * <code>repeated int32 celt_versions = 4;</code>
         */
        public Builder setCeltVersions(
            int index, int value) {
          ensureCeltVersionsIsMutable();
          celtVersions_.set(index, value);
          onChanged();
          return this;
        }
        /**
         * <code>repeated int32 celt_versions = 4;</code>
         */
        public Builder addCeltVersions(int value) {
          ensureCeltVersionsIsMutable();
          celtVersions_.add(value);
          onChanged();
          return this;
        }
        /**
         * <code>repeated int32 celt_versions = 4;</code>
         */
        public Builder addAllCeltVersions(
            java.lang.Iterable<? extends java.lang.Integer> values) {
          ensureCeltVersionsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, celtVersions_);
          onChanged();
          return this;
        }
        /**
         * <code>repeated int32 celt_versions = 4;</code>
         */
        public Builder clearCeltVersions() {
          celtVersions_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000008);
          onChanged();
          return this;
        }
  
        private boolean opus_ ;
        /**
         * <code>optional bool opus = 5 [default = false];</code>
         */
        public boolean hasOpus() {
          return ((bitField0_ & 0x00000010) == 0x00000010);
        }
        /**
         * <code>optional bool opus = 5 [default = false];</code>
         */
        public boolean getOpus() {
          return opus_;
        }
        /**
         * <code>optional bool opus = 5 [default = false];</code>
         */
        public Builder setOpus(boolean value) {
          bitField0_ |= 0x00000010;
          opus_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional bool opus = 5 [default = false];</code>
         */
        public Builder clearOpus() {
          bitField0_ = (bitField0_ & ~0x00000010);
          opus_ = false;
          onChanged();
          return this;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }
  
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:MumbleProto.Authenticate)
      }
  
      // @@protoc_insertion_point(class_scope:MumbleProto.Authenticate)
      private static final com.morlunk.jumble.protobuf.Mumble.Authenticate DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.morlunk.jumble.protobuf.Mumble.Authenticate();
      }
  
      public static com.morlunk.jumble.protobuf.Mumble.Authenticate getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      @java.lang.Deprecated public static final com.google.protobuf.Parser<Authenticate>
          PARSER = new com.google.protobuf.AbstractParser<Authenticate>() {
        public Authenticate parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return new Authenticate(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<Authenticate> parser() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.google.protobuf.Parser<Authenticate> getParserForType() {
        return PARSER;
      }
  
      public com.morlunk.jumble.protobuf.Mumble.Authenticate getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface PingOrBuilder extends
        // @@protoc_insertion_point(interface_extends:MumbleProto.Ping)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <code>optional uint64 timestamp = 1;</code>
       */
      boolean hasTimestamp();
      /**
       * <code>optional uint64 timestamp = 1;</code>
       */
      long getTimestamp();
  
      /**
       * <code>optional uint32 good = 2;</code>
       */
      boolean hasGood();
      /**
       * <code>optional uint32 good = 2;</code>
       */
      int getGood();
  
      /**
       * <code>optional uint32 late = 3;</code>
       */
      boolean hasLate();
      /**
       * <code>optional uint32 late = 3;</code>
       */
      int getLate();
  
      /**
       * <code>optional uint32 lost = 4;</code>
       */
      boolean hasLost();
      /**
       * <code>optional uint32 lost = 4;</code>
       */
      int getLost();
  
      /**
       * <code>optional uint32 resync = 5;</code>
       */
      boolean hasResync();
      /**
       * <code>optional uint32 resync = 5;</code>
       */
      int getResync();
  
      /**
       * <code>optional uint32 udp_packets = 6;</code>
       */
      boolean hasUdpPackets();
      /**
       * <code>optional uint32 udp_packets = 6;</code>
       */
      int getUdpPackets();
  
      /**
       * <code>optional uint32 tcp_packets = 7;</code>
       */
      boolean hasTcpPackets();
      /**
       * <code>optional uint32 tcp_packets = 7;</code>
       */
      int getTcpPackets();
  
      /**
       * <code>optional float udp_ping_avg = 8;</code>
       */
      boolean hasUdpPingAvg();
      /**
       * <code>optional float udp_ping_avg = 8;</code>
       */
      float getUdpPingAvg();
  
      /**
       * <code>optional float udp_ping_var = 9;</code>
       */
      boolean hasUdpPingVar();
      /**
       * <code>optional float udp_ping_var = 9;</code>
       */
      float getUdpPingVar();
  
      /**
       * <code>optional float tcp_ping_avg = 10;</code>
       */
      boolean hasTcpPingAvg();
      /**
       * <code>optional float tcp_ping_avg = 10;</code>
       */
      float getTcpPingAvg();
  
      /**
       * <code>optional float tcp_ping_var = 11;</code>
       */
      boolean hasTcpPingVar();
      /**
       * <code>optional float tcp_ping_var = 11;</code>
       */
      float getTcpPingVar();
    }
    /**
     * Protobuf type {@code MumbleProto.Ping}
     */
    public  static final class Ping extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:MumbleProto.Ping)
        PingOrBuilder {
      // Use Ping.newBuilder() to construct.
      private Ping(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private Ping() {
        timestamp_ = 0L;
        good_ = 0;
        late_ = 0;
        lost_ = 0;
        resync_ = 0;
        udpPackets_ = 0;
        tcpPackets_ = 0;
        udpPingAvg_ = 0F;
        udpPingVar_ = 0F;
        tcpPingAvg_ = 0F;
        tcpPingVar_ = 0F;
      }
  
      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private Ping(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        int mutable_bitField0_ = 0;
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder();
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              default: {
                if (!parseUnknownField(input, unknownFields,
                                       extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 8: {
                bitField0_ |= 0x00000001;
                timestamp_ = input.readUInt64();
                break;
              }
              case 16: {
                bitField0_ |= 0x00000002;
                good_ = input.readUInt32();
                break;
              }
              case 24: {
                bitField0_ |= 0x00000004;
                late_ = input.readUInt32();
                break;
              }
              case 32: {
                bitField0_ |= 0x00000008;
                lost_ = input.readUInt32();
                break;
              }
              case 40: {
                bitField0_ |= 0x00000010;
                resync_ = input.readUInt32();
                break;
              }
              case 48: {
                bitField0_ |= 0x00000020;
                udpPackets_ = input.readUInt32();
                break;
              }
              case 56: {
                bitField0_ |= 0x00000040;
                tcpPackets_ = input.readUInt32();
                break;
              }
              case 69: {
                bitField0_ |= 0x00000080;
                udpPingAvg_ = input.readFloat();
                break;
              }
              case 77: {
                bitField0_ |= 0x00000100;
                udpPingVar_ = input.readFloat();
                break;
              }
              case 85: {
                bitField0_ |= 0x00000200;
                tcpPingAvg_ = input.readFloat();
                break;
              }
              case 93: {
                bitField0_ |= 0x00000400;
                tcpPingVar_ = input.readFloat();
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_Ping_descriptor;
      }
  
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_Ping_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.morlunk.jumble.protobuf.Mumble.Ping.class, com.morlunk.jumble.protobuf.Mumble.Ping.Builder.class);
      }
  
      private int bitField0_;
      public static final int TIMESTAMP_FIELD_NUMBER = 1;
      private long timestamp_;
      /**
       * <code>optional uint64 timestamp = 1;</code>
       */
      public boolean hasTimestamp() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>optional uint64 timestamp = 1;</code>
       */
      public long getTimestamp() {
        return timestamp_;
      }
  
      public static final int GOOD_FIELD_NUMBER = 2;
      private int good_;
      /**
       * <code>optional uint32 good = 2;</code>
       */
      public boolean hasGood() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional uint32 good = 2;</code>
       */
      public int getGood() {
        return good_;
      }
  
      public static final int LATE_FIELD_NUMBER = 3;
      private int late_;
      /**
       * <code>optional uint32 late = 3;</code>
       */
      public boolean hasLate() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>optional uint32 late = 3;</code>
       */
      public int getLate() {
        return late_;
      }
  
      public static final int LOST_FIELD_NUMBER = 4;
      private int lost_;
      /**
       * <code>optional uint32 lost = 4;</code>
       */
      public boolean hasLost() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>optional uint32 lost = 4;</code>
       */
      public int getLost() {
        return lost_;
      }
  
      public static final int RESYNC_FIELD_NUMBER = 5;
      private int resync_;
      /**
       * <code>optional uint32 resync = 5;</code>
       */
      public boolean hasResync() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      /**
       * <code>optional uint32 resync = 5;</code>
       */
      public int getResync() {
        return resync_;
      }
  
      public static final int UDP_PACKETS_FIELD_NUMBER = 6;
      private int udpPackets_;
      /**
       * <code>optional uint32 udp_packets = 6;</code>
       */
      public boolean hasUdpPackets() {
        return ((bitField0_ & 0x00000020) == 0x00000020);
      }
      /**
       * <code>optional uint32 udp_packets = 6;</code>
       */
      public int getUdpPackets() {
        return udpPackets_;
      }
  
      public static final int TCP_PACKETS_FIELD_NUMBER = 7;
      private int tcpPackets_;
      /**
       * <code>optional uint32 tcp_packets = 7;</code>
       */
      public boolean hasTcpPackets() {
        return ((bitField0_ & 0x00000040) == 0x00000040);
      }
      /**
       * <code>optional uint32 tcp_packets = 7;</code>
       */
      public int getTcpPackets() {
        return tcpPackets_;
      }
  
      public static final int UDP_PING_AVG_FIELD_NUMBER = 8;
      private float udpPingAvg_;
      /**
       * <code>optional float udp_ping_avg = 8;</code>
       */
      public boolean hasUdpPingAvg() {
        return ((bitField0_ & 0x00000080) == 0x00000080);
      }
      /**
       * <code>optional float udp_ping_avg = 8;</code>
       */
      public float getUdpPingAvg() {
        return udpPingAvg_;
      }
  
      public static final int UDP_PING_VAR_FIELD_NUMBER = 9;
      private float udpPingVar_;
      /**
       * <code>optional float udp_ping_var = 9;</code>
       */
      public boolean hasUdpPingVar() {
        return ((bitField0_ & 0x00000100) == 0x00000100);
      }
      /**
       * <code>optional float udp_ping_var = 9;</code>
       */
      public float getUdpPingVar() {
        return udpPingVar_;
      }
  
      public static final int TCP_PING_AVG_FIELD_NUMBER = 10;
      private float tcpPingAvg_;
      /**
       * <code>optional float tcp_ping_avg = 10;</code>
       */
      public boolean hasTcpPingAvg() {
        return ((bitField0_ & 0x00000200) == 0x00000200);
      }
      /**
       * <code>optional float tcp_ping_avg = 10;</code>
       */
      public float getTcpPingAvg() {
        return tcpPingAvg_;
      }
  
      public static final int TCP_PING_VAR_FIELD_NUMBER = 11;
      private float tcpPingVar_;
      /**
       * <code>optional float tcp_ping_var = 11;</code>
       */
      public boolean hasTcpPingVar() {
        return ((bitField0_ & 0x00000400) == 0x00000400);
      }
      /**
       * <code>optional float tcp_ping_var = 11;</code>
       */
      public float getTcpPingVar() {
        return tcpPingVar_;
      }
  
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        memoizedIsInitialized = 1;
        return true;
      }
  
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeUInt64(1, timestamp_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          output.writeUInt32(2, good_);
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          output.writeUInt32(3, late_);
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          output.writeUInt32(4, lost_);
        }
        if (((bitField0_ & 0x00000010) == 0x00000010)) {
          output.writeUInt32(5, resync_);
        }
        if (((bitField0_ & 0x00000020) == 0x00000020)) {
          output.writeUInt32(6, udpPackets_);
        }
        if (((bitField0_ & 0x00000040) == 0x00000040)) {
          output.writeUInt32(7, tcpPackets_);
        }
        if (((bitField0_ & 0x00000080) == 0x00000080)) {
          output.writeFloat(8, udpPingAvg_);
        }
        if (((bitField0_ & 0x00000100) == 0x00000100)) {
          output.writeFloat(9, udpPingVar_);
        }
        if (((bitField0_ & 0x00000200) == 0x00000200)) {
          output.writeFloat(10, tcpPingAvg_);
        }
        if (((bitField0_ & 0x00000400) == 0x00000400)) {
          output.writeFloat(11, tcpPingVar_);
        }
        unknownFields.writeTo(output);
      }
  
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt64Size(1, timestamp_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(2, good_);
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(3, late_);
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(4, lost_);
        }
        if (((bitField0_ & 0x00000010) == 0x00000010)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(5, resync_);
        }
        if (((bitField0_ & 0x00000020) == 0x00000020)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(6, udpPackets_);
        }
        if (((bitField0_ & 0x00000040) == 0x00000040)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(7, tcpPackets_);
        }
        if (((bitField0_ & 0x00000080) == 0x00000080)) {
          size += com.google.protobuf.CodedOutputStream
            .computeFloatSize(8, udpPingAvg_);
        }
        if (((bitField0_ & 0x00000100) == 0x00000100)) {
          size += com.google.protobuf.CodedOutputStream
            .computeFloatSize(9, udpPingVar_);
        }
        if (((bitField0_ & 0x00000200) == 0x00000200)) {
          size += com.google.protobuf.CodedOutputStream
            .computeFloatSize(10, tcpPingAvg_);
        }
        if (((bitField0_ & 0x00000400) == 0x00000400)) {
          size += com.google.protobuf.CodedOutputStream
            .computeFloatSize(11, tcpPingVar_);
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }
  
      private static final long serialVersionUID = 0L;
      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.morlunk.jumble.protobuf.Mumble.Ping)) {
          return super.equals(obj);
        }
        com.morlunk.jumble.protobuf.Mumble.Ping other = (com.morlunk.jumble.protobuf.Mumble.Ping) obj;
  
        boolean result = true;
        result = result && (hasTimestamp() == other.hasTimestamp());
        if (hasTimestamp()) {
          result = result && (getTimestamp()
              == other.getTimestamp());
        }
        result = result && (hasGood() == other.hasGood());
        if (hasGood()) {
          result = result && (getGood()
              == other.getGood());
        }
        result = result && (hasLate() == other.hasLate());
        if (hasLate()) {
          result = result && (getLate()
              == other.getLate());
        }
        result = result && (hasLost() == other.hasLost());
        if (hasLost()) {
          result = result && (getLost()
              == other.getLost());
        }
        result = result && (hasResync() == other.hasResync());
        if (hasResync()) {
          result = result && (getResync()
              == other.getResync());
        }
        result = result && (hasUdpPackets() == other.hasUdpPackets());
        if (hasUdpPackets()) {
          result = result && (getUdpPackets()
              == other.getUdpPackets());
        }
        result = result && (hasTcpPackets() == other.hasTcpPackets());
        if (hasTcpPackets()) {
          result = result && (getTcpPackets()
              == other.getTcpPackets());
        }
        result = result && (hasUdpPingAvg() == other.hasUdpPingAvg());
        if (hasUdpPingAvg()) {
          result = result && (
              java.lang.Float.floatToIntBits(getUdpPingAvg())
              == java.lang.Float.floatToIntBits(
                  other.getUdpPingAvg()));
        }
        result = result && (hasUdpPingVar() == other.hasUdpPingVar());
        if (hasUdpPingVar()) {
          result = result && (
              java.lang.Float.floatToIntBits(getUdpPingVar())
              == java.lang.Float.floatToIntBits(
                  other.getUdpPingVar()));
        }
        result = result && (hasTcpPingAvg() == other.hasTcpPingAvg());
        if (hasTcpPingAvg()) {
          result = result && (
              java.lang.Float.floatToIntBits(getTcpPingAvg())
              == java.lang.Float.floatToIntBits(
                  other.getTcpPingAvg()));
        }
        result = result && (hasTcpPingVar() == other.hasTcpPingVar());
        if (hasTcpPingVar()) {
          result = result && (
              java.lang.Float.floatToIntBits(getTcpPingVar())
              == java.lang.Float.floatToIntBits(
                  other.getTcpPingVar()));
        }
        result = result && unknownFields.equals(other.unknownFields);
        return result;
      }
  
      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptorForType().hashCode();
        if (hasTimestamp()) {
          hash = (37 * hash) + TIMESTAMP_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
              getTimestamp());
        }
        if (hasGood()) {
          hash = (37 * hash) + GOOD_FIELD_NUMBER;
          hash = (53 * hash) + getGood();
        }
        if (hasLate()) {
          hash = (37 * hash) + LATE_FIELD_NUMBER;
          hash = (53 * hash) + getLate();
        }
        if (hasLost()) {
          hash = (37 * hash) + LOST_FIELD_NUMBER;
          hash = (53 * hash) + getLost();
        }
        if (hasResync()) {
          hash = (37 * hash) + RESYNC_FIELD_NUMBER;
          hash = (53 * hash) + getResync();
        }
        if (hasUdpPackets()) {
          hash = (37 * hash) + UDP_PACKETS_FIELD_NUMBER;
          hash = (53 * hash) + getUdpPackets();
        }
        if (hasTcpPackets()) {
          hash = (37 * hash) + TCP_PACKETS_FIELD_NUMBER;
          hash = (53 * hash) + getTcpPackets();
        }
        if (hasUdpPingAvg()) {
          hash = (37 * hash) + UDP_PING_AVG_FIELD_NUMBER;
          hash = (53 * hash) + java.lang.Float.floatToIntBits(
              getUdpPingAvg());
        }
        if (hasUdpPingVar()) {
          hash = (37 * hash) + UDP_PING_VAR_FIELD_NUMBER;
          hash = (53 * hash) + java.lang.Float.floatToIntBits(
              getUdpPingVar());
        }
        if (hasTcpPingAvg()) {
          hash = (37 * hash) + TCP_PING_AVG_FIELD_NUMBER;
          hash = (53 * hash) + java.lang.Float.floatToIntBits(
              getTcpPingAvg());
        }
        if (hasTcpPingVar()) {
          hash = (37 * hash) + TCP_PING_VAR_FIELD_NUMBER;
          hash = (53 * hash) + java.lang.Float.floatToIntBits(
              getTcpPingVar());
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static com.morlunk.jumble.protobuf.Mumble.Ping parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.morlunk.jumble.protobuf.Mumble.Ping parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.Ping parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.morlunk.jumble.protobuf.Mumble.Ping parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.Ping parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.morlunk.jumble.protobuf.Mumble.Ping parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.Ping parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.morlunk.jumble.protobuf.Mumble.Ping parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.Ping parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.morlunk.jumble.protobuf.Mumble.Ping parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
  
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(com.morlunk.jumble.protobuf.Mumble.Ping prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }
  
      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code MumbleProto.Ping}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:MumbleProto.Ping)
          com.morlunk.jumble.protobuf.Mumble.PingOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_Ping_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_Ping_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.morlunk.jumble.protobuf.Mumble.Ping.class, com.morlunk.jumble.protobuf.Mumble.Ping.Builder.class);
        }
  
        // Construct using com.morlunk.jumble.protobuf.Mumble.Ping.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
  
        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
          }
        }
        public Builder clear() {
          super.clear();
          timestamp_ = 0L;
          bitField0_ = (bitField0_ & ~0x00000001);
          good_ = 0;
          bitField0_ = (bitField0_ & ~0x00000002);
          late_ = 0;
          bitField0_ = (bitField0_ & ~0x00000004);
          lost_ = 0;
          bitField0_ = (bitField0_ & ~0x00000008);
          resync_ = 0;
          bitField0_ = (bitField0_ & ~0x00000010);
          udpPackets_ = 0;
          bitField0_ = (bitField0_ & ~0x00000020);
          tcpPackets_ = 0;
          bitField0_ = (bitField0_ & ~0x00000040);
          udpPingAvg_ = 0F;
          bitField0_ = (bitField0_ & ~0x00000080);
          udpPingVar_ = 0F;
          bitField0_ = (bitField0_ & ~0x00000100);
          tcpPingAvg_ = 0F;
          bitField0_ = (bitField0_ & ~0x00000200);
          tcpPingVar_ = 0F;
          bitField0_ = (bitField0_ & ~0x00000400);
          return this;
        }
  
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_Ping_descriptor;
        }
  
        public com.morlunk.jumble.protobuf.Mumble.Ping getDefaultInstanceForType() {
          return com.morlunk.jumble.protobuf.Mumble.Ping.getDefaultInstance();
        }
  
        public com.morlunk.jumble.protobuf.Mumble.Ping build() {
          com.morlunk.jumble.protobuf.Mumble.Ping result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        public com.morlunk.jumble.protobuf.Mumble.Ping buildPartial() {
          com.morlunk.jumble.protobuf.Mumble.Ping result = new com.morlunk.jumble.protobuf.Mumble.Ping(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.timestamp_ = timestamp_;
          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
            to_bitField0_ |= 0x00000002;
          }
          result.good_ = good_;
          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
            to_bitField0_ |= 0x00000004;
          }
          result.late_ = late_;
          if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
            to_bitField0_ |= 0x00000008;
          }
          result.lost_ = lost_;
          if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
            to_bitField0_ |= 0x00000010;
          }
          result.resync_ = resync_;
          if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
            to_bitField0_ |= 0x00000020;
          }
          result.udpPackets_ = udpPackets_;
          if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
            to_bitField0_ |= 0x00000040;
          }
          result.tcpPackets_ = tcpPackets_;
          if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
            to_bitField0_ |= 0x00000080;
          }
          result.udpPingAvg_ = udpPingAvg_;
          if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
            to_bitField0_ |= 0x00000100;
          }
          result.udpPingVar_ = udpPingVar_;
          if (((from_bitField0_ & 0x00000200) == 0x00000200)) {
            to_bitField0_ |= 0x00000200;
          }
          result.tcpPingAvg_ = tcpPingAvg_;
          if (((from_bitField0_ & 0x00000400) == 0x00000400)) {
            to_bitField0_ |= 0x00000400;
          }
          result.tcpPingVar_ = tcpPingVar_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
  
        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.setField(field, value);
        }
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return (Builder) super.clearField(field);
        }
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return (Builder) super.clearOneof(oneof);
        }
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.morlunk.jumble.protobuf.Mumble.Ping) {
            return mergeFrom((com.morlunk.jumble.protobuf.Mumble.Ping)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(com.morlunk.jumble.protobuf.Mumble.Ping other) {
          if (other == com.morlunk.jumble.protobuf.Mumble.Ping.getDefaultInstance()) return this;
          if (other.hasTimestamp()) {
            setTimestamp(other.getTimestamp());
          }
          if (other.hasGood()) {
            setGood(other.getGood());
          }
          if (other.hasLate()) {
            setLate(other.getLate());
          }
          if (other.hasLost()) {
            setLost(other.getLost());
          }
          if (other.hasResync()) {
            setResync(other.getResync());
          }
          if (other.hasUdpPackets()) {
            setUdpPackets(other.getUdpPackets());
          }
          if (other.hasTcpPackets()) {
            setTcpPackets(other.getTcpPackets());
          }
          if (other.hasUdpPingAvg()) {
            setUdpPingAvg(other.getUdpPingAvg());
          }
          if (other.hasUdpPingVar()) {
            setUdpPingVar(other.getUdpPingVar());
          }
          if (other.hasTcpPingAvg()) {
            setTcpPingAvg(other.getTcpPingAvg());
          }
          if (other.hasTcpPingVar()) {
            setTcpPingVar(other.getTcpPingVar());
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }
  
        public final boolean isInitialized() {
          return true;
        }
  
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.morlunk.jumble.protobuf.Mumble.Ping parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (com.morlunk.jumble.protobuf.Mumble.Ping) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;
  
        private long timestamp_ ;
        /**
         * <code>optional uint64 timestamp = 1;</code>
         */
        public boolean hasTimestamp() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <code>optional uint64 timestamp = 1;</code>
         */
        public long getTimestamp() {
          return timestamp_;
        }
        /**
         * <code>optional uint64 timestamp = 1;</code>
         */
        public Builder setTimestamp(long value) {
          bitField0_ |= 0x00000001;
          timestamp_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional uint64 timestamp = 1;</code>
         */
        public Builder clearTimestamp() {
          bitField0_ = (bitField0_ & ~0x00000001);
          timestamp_ = 0L;
          onChanged();
          return this;
        }
  
        private int good_ ;
        /**
         * <code>optional uint32 good = 2;</code>
         */
        public boolean hasGood() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * <code>optional uint32 good = 2;</code>
         */
        public int getGood() {
          return good_;
        }
        /**
         * <code>optional uint32 good = 2;</code>
         */
        public Builder setGood(int value) {
          bitField0_ |= 0x00000002;
          good_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional uint32 good = 2;</code>
         */
        public Builder clearGood() {
          bitField0_ = (bitField0_ & ~0x00000002);
          good_ = 0;
          onChanged();
          return this;
        }
  
        private int late_ ;
        /**
         * <code>optional uint32 late = 3;</code>
         */
        public boolean hasLate() {
          return ((bitField0_ & 0x00000004) == 0x00000004);
        }
        /**
         * <code>optional uint32 late = 3;</code>
         */
        public int getLate() {
          return late_;
        }
        /**
         * <code>optional uint32 late = 3;</code>
         */
        public Builder setLate(int value) {
          bitField0_ |= 0x00000004;
          late_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional uint32 late = 3;</code>
         */
        public Builder clearLate() {
          bitField0_ = (bitField0_ & ~0x00000004);
          late_ = 0;
          onChanged();
          return this;
        }
  
        private int lost_ ;
        /**
         * <code>optional uint32 lost = 4;</code>
         */
        public boolean hasLost() {
          return ((bitField0_ & 0x00000008) == 0x00000008);
        }
        /**
         * <code>optional uint32 lost = 4;</code>
         */
        public int getLost() {
          return lost_;
        }
        /**
         * <code>optional uint32 lost = 4;</code>
         */
        public Builder setLost(int value) {
          bitField0_ |= 0x00000008;
          lost_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional uint32 lost = 4;</code>
         */
        public Builder clearLost() {
          bitField0_ = (bitField0_ & ~0x00000008);
          lost_ = 0;
          onChanged();
          return this;
        }
  
        private int resync_ ;
        /**
         * <code>optional uint32 resync = 5;</code>
         */
        public boolean hasResync() {
          return ((bitField0_ & 0x00000010) == 0x00000010);
        }
        /**
         * <code>optional uint32 resync = 5;</code>
         */
        public int getResync() {
          return resync_;
        }
        /**
         * <code>optional uint32 resync = 5;</code>
         */
        public Builder setResync(int value) {
          bitField0_ |= 0x00000010;
          resync_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional uint32 resync = 5;</code>
         */
        public Builder clearResync() {
          bitField0_ = (bitField0_ & ~0x00000010);
          resync_ = 0;
          onChanged();
          return this;
        }
  
        private int udpPackets_ ;
        /**
         * <code>optional uint32 udp_packets = 6;</code>
         */
        public boolean hasUdpPackets() {
          return ((bitField0_ & 0x00000020) == 0x00000020);
        }
        /**
         * <code>optional uint32 udp_packets = 6;</code>
         */
        public int getUdpPackets() {
          return udpPackets_;
        }
        /**
         * <code>optional uint32 udp_packets = 6;</code>
         */
        public Builder setUdpPackets(int value) {
          bitField0_ |= 0x00000020;
          udpPackets_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional uint32 udp_packets = 6;</code>
         */
        public Builder clearUdpPackets() {
          bitField0_ = (bitField0_ & ~0x00000020);
          udpPackets_ = 0;
          onChanged();
          return this;
        }
  
        private int tcpPackets_ ;
        /**
         * <code>optional uint32 tcp_packets = 7;</code>
         */
        public boolean hasTcpPackets() {
          return ((bitField0_ & 0x00000040) == 0x00000040);
        }
        /**
         * <code>optional uint32 tcp_packets = 7;</code>
         */
        public int getTcpPackets() {
          return tcpPackets_;
        }
        /**
         * <code>optional uint32 tcp_packets = 7;</code>
         */
        public Builder setTcpPackets(int value) {
          bitField0_ |= 0x00000040;
          tcpPackets_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional uint32 tcp_packets = 7;</code>
         */
        public Builder clearTcpPackets() {
          bitField0_ = (bitField0_ & ~0x00000040);
          tcpPackets_ = 0;
          onChanged();
          return this;
        }
  
        private float udpPingAvg_ ;
        /**
         * <code>optional float udp_ping_avg = 8;</code>
         */
        public boolean hasUdpPingAvg() {
          return ((bitField0_ & 0x00000080) == 0x00000080);
        }
        /**
         * <code>optional float udp_ping_avg = 8;</code>
         */
        public float getUdpPingAvg() {
          return udpPingAvg_;
        }
        /**
         * <code>optional float udp_ping_avg = 8;</code>
         */
        public Builder setUdpPingAvg(float value) {
          bitField0_ |= 0x00000080;
          udpPingAvg_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional float udp_ping_avg = 8;</code>
         */
        public Builder clearUdpPingAvg() {
          bitField0_ = (bitField0_ & ~0x00000080);
          udpPingAvg_ = 0F;
          onChanged();
          return this;
        }
  
        private float udpPingVar_ ;
        /**
         * <code>optional float udp_ping_var = 9;</code>
         */
        public boolean hasUdpPingVar() {
          return ((bitField0_ & 0x00000100) == 0x00000100);
        }
        /**
         * <code>optional float udp_ping_var = 9;</code>
         */
        public float getUdpPingVar() {
          return udpPingVar_;
        }
        /**
         * <code>optional float udp_ping_var = 9;</code>
         */
        public Builder setUdpPingVar(float value) {
          bitField0_ |= 0x00000100;
          udpPingVar_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional float udp_ping_var = 9;</code>
         */
        public Builder clearUdpPingVar() {
          bitField0_ = (bitField0_ & ~0x00000100);
          udpPingVar_ = 0F;
          onChanged();
          return this;
        }
  
        private float tcpPingAvg_ ;
        /**
         * <code>optional float tcp_ping_avg = 10;</code>
         */
        public boolean hasTcpPingAvg() {
          return ((bitField0_ & 0x00000200) == 0x00000200);
        }
        /**
         * <code>optional float tcp_ping_avg = 10;</code>
         */
        public float getTcpPingAvg() {
          return tcpPingAvg_;
        }
        /**
         * <code>optional float tcp_ping_avg = 10;</code>
         */
        public Builder setTcpPingAvg(float value) {
          bitField0_ |= 0x00000200;
          tcpPingAvg_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional float tcp_ping_avg = 10;</code>
         */
        public Builder clearTcpPingAvg() {
          bitField0_ = (bitField0_ & ~0x00000200);
          tcpPingAvg_ = 0F;
          onChanged();
          return this;
        }
  
        private float tcpPingVar_ ;
        /**
         * <code>optional float tcp_ping_var = 11;</code>
         */
        public boolean hasTcpPingVar() {
          return ((bitField0_ & 0x00000400) == 0x00000400);
        }
        /**
         * <code>optional float tcp_ping_var = 11;</code>
         */
        public float getTcpPingVar() {
          return tcpPingVar_;
        }
        /**
         * <code>optional float tcp_ping_var = 11;</code>
         */
        public Builder setTcpPingVar(float value) {
          bitField0_ |= 0x00000400;
          tcpPingVar_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional float tcp_ping_var = 11;</code>
         */
        public Builder clearTcpPingVar() {
          bitField0_ = (bitField0_ & ~0x00000400);
          tcpPingVar_ = 0F;
          onChanged();
          return this;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }
  
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:MumbleProto.Ping)
      }
  
      // @@protoc_insertion_point(class_scope:MumbleProto.Ping)
      private static final com.morlunk.jumble.protobuf.Mumble.Ping DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.morlunk.jumble.protobuf.Mumble.Ping();
      }
  
      public static com.morlunk.jumble.protobuf.Mumble.Ping getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      @java.lang.Deprecated public static final com.google.protobuf.Parser<Ping>
          PARSER = new com.google.protobuf.AbstractParser<Ping>() {
        public Ping parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return new Ping(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<Ping> parser() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.google.protobuf.Parser<Ping> getParserForType() {
        return PARSER;
      }
  
      public com.morlunk.jumble.protobuf.Mumble.Ping getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface RejectOrBuilder extends
        // @@protoc_insertion_point(interface_extends:MumbleProto.Reject)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <code>optional .MumbleProto.Reject.RejectType type = 1;</code>
       */
      boolean hasType();
      /**
       * <code>optional .MumbleProto.Reject.RejectType type = 1;</code>
       */
      com.morlunk.jumble.protobuf.Mumble.Reject.RejectType getType();
  
      /**
       * <code>optional string reason = 2;</code>
       */
      boolean hasReason();
      /**
       * <code>optional string reason = 2;</code>
       */
      java.lang.String getReason();
      /**
       * <code>optional string reason = 2;</code>
       */
      com.google.protobuf.ByteString
          getReasonBytes();
    }
    /**
     * Protobuf type {@code MumbleProto.Reject}
     */
    public  static final class Reject extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:MumbleProto.Reject)
        RejectOrBuilder {
      // Use Reject.newBuilder() to construct.
      private Reject(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private Reject() {
        type_ = 0;
        reason_ = "";
      }
  
      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private Reject(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        int mutable_bitField0_ = 0;
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder();
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              default: {
                if (!parseUnknownField(input, unknownFields,
                                       extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 8: {
                int rawValue = input.readEnum();
                com.morlunk.jumble.protobuf.Mumble.Reject.RejectType value = com.morlunk.jumble.protobuf.Mumble.Reject.RejectType.valueOf(rawValue);
                if (value == null) {
                  unknownFields.mergeVarintField(1, rawValue);
                } else {
                  bitField0_ |= 0x00000001;
                  type_ = rawValue;
                }
                break;
              }
              case 18: {
                com.google.protobuf.ByteString bs = input.readBytes();
                bitField0_ |= 0x00000002;
                reason_ = bs;
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_Reject_descriptor;
      }
  
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_Reject_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.morlunk.jumble.protobuf.Mumble.Reject.class, com.morlunk.jumble.protobuf.Mumble.Reject.Builder.class);
      }
  
      /**
       * Protobuf enum {@code MumbleProto.Reject.RejectType}
       */
      public enum RejectType
          implements com.google.protobuf.ProtocolMessageEnum {
        /**
         * <code>None = 0;</code>
         */
        None(0),
        /**
         * <code>WrongVersion = 1;</code>
         */
        WrongVersion(1),
        /**
         * <code>InvalidUsername = 2;</code>
         */
        InvalidUsername(2),
        /**
         * <code>WrongUserPW = 3;</code>
         */
        WrongUserPW(3),
        /**
         * <code>WrongServerPW = 4;</code>
         */
        WrongServerPW(4),
        /**
         * <code>UsernameInUse = 5;</code>
         */
        UsernameInUse(5),
        /**
         * <code>ServerFull = 6;</code>
         */
        ServerFull(6),
        /**
         * <code>NoCertificate = 7;</code>
         */
        NoCertificate(7),
        ;
  
        /**
         * <code>None = 0;</code>
         */
        public static final int None_VALUE = 0;
        /**
         * <code>WrongVersion = 1;</code>
         */
        public static final int WrongVersion_VALUE = 1;
        /**
         * <code>InvalidUsername = 2;</code>
         */
        public static final int InvalidUsername_VALUE = 2;
        /**
         * <code>WrongUserPW = 3;</code>
         */
        public static final int WrongUserPW_VALUE = 3;
        /**
         * <code>WrongServerPW = 4;</code>
         */
        public static final int WrongServerPW_VALUE = 4;
        /**
         * <code>UsernameInUse = 5;</code>
         */
        public static final int UsernameInUse_VALUE = 5;
        /**
         * <code>ServerFull = 6;</code>
         */
        public static final int ServerFull_VALUE = 6;
        /**
         * <code>NoCertificate = 7;</code>
         */
        public static final int NoCertificate_VALUE = 7;
  
  
        public final int getNumber() {
          return value;
        }
  
        /**
         * @deprecated Use {@link #forNumber(int)} instead.
         */
        @java.lang.Deprecated
        public static RejectType valueOf(int value) {
          return forNumber(value);
        }
  
        public static RejectType forNumber(int value) {
          switch (value) {
            case 0: return None;
            case 1: return WrongVersion;
            case 2: return InvalidUsername;
            case 3: return WrongUserPW;
            case 4: return WrongServerPW;
            case 5: return UsernameInUse;
            case 6: return ServerFull;
            case 7: return NoCertificate;
            default: return null;
          }
        }
  
        public static com.google.protobuf.Internal.EnumLiteMap<RejectType>
            internalGetValueMap() {
          return internalValueMap;
        }
        private static final com.google.protobuf.Internal.EnumLiteMap<
            RejectType> internalValueMap =
              new com.google.protobuf.Internal.EnumLiteMap<RejectType>() {
                public RejectType findValueByNumber(int number) {
                  return RejectType.forNumber(number);
                }
              };
  
        public final com.google.protobuf.Descriptors.EnumValueDescriptor
            getValueDescriptor() {
          return getDescriptor().getValues().get(ordinal());
        }
        public final com.google.protobuf.Descriptors.EnumDescriptor
            getDescriptorForType() {
          return getDescriptor();
        }
        public static final com.google.protobuf.Descriptors.EnumDescriptor
            getDescriptor() {
          return com.morlunk.jumble.protobuf.Mumble.Reject.getDescriptor().getEnumTypes().get(0);
        }
  
        private static final RejectType[] VALUES = values();
  
        public static RejectType valueOf(
            com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
          if (desc.getType() != getDescriptor()) {
            throw new java.lang.IllegalArgumentException(
              "EnumValueDescriptor is not for this type.");
          }
          return VALUES[desc.getIndex()];
        }
  
        private final int value;
  
        private RejectType(int value) {
          this.value = value;
        }
  
        // @@protoc_insertion_point(enum_scope:MumbleProto.Reject.RejectType)
      }
  
      private int bitField0_;
      public static final int TYPE_FIELD_NUMBER = 1;
      private int type_;
      /**
       * <code>optional .MumbleProto.Reject.RejectType type = 1;</code>
       */
      public boolean hasType() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>optional .MumbleProto.Reject.RejectType type = 1;</code>
       */
      public com.morlunk.jumble.protobuf.Mumble.Reject.RejectType getType() {
        com.morlunk.jumble.protobuf.Mumble.Reject.RejectType result = com.morlunk.jumble.protobuf.Mumble.Reject.RejectType.valueOf(type_);
        return result == null ? com.morlunk.jumble.protobuf.Mumble.Reject.RejectType.None : result;
      }
  
      public static final int REASON_FIELD_NUMBER = 2;
      private volatile java.lang.Object reason_;
      /**
       * <code>optional string reason = 2;</code>
       */
      public boolean hasReason() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional string reason = 2;</code>
       */
      public java.lang.String getReason() {
        java.lang.Object ref = reason_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            reason_ = s;
          }
          return s;
        }
      }
      /**
       * <code>optional string reason = 2;</code>
       */
      public com.google.protobuf.ByteString
          getReasonBytes() {
        java.lang.Object ref = reason_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          reason_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
  
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        memoizedIsInitialized = 1;
        return true;
      }
  
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeEnum(1, type_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 2, reason_);
        }
        unknownFields.writeTo(output);
      }
  
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(1, type_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, reason_);
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }
  
      private static final long serialVersionUID = 0L;
      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.morlunk.jumble.protobuf.Mumble.Reject)) {
          return super.equals(obj);
        }
        com.morlunk.jumble.protobuf.Mumble.Reject other = (com.morlunk.jumble.protobuf.Mumble.Reject) obj;
  
        boolean result = true;
        result = result && (hasType() == other.hasType());
        if (hasType()) {
          result = result && type_ == other.type_;
        }
        result = result && (hasReason() == other.hasReason());
        if (hasReason()) {
          result = result && getReason()
              .equals(other.getReason());
        }
        result = result && unknownFields.equals(other.unknownFields);
        return result;
      }
  
      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptorForType().hashCode();
        if (hasType()) {
          hash = (37 * hash) + TYPE_FIELD_NUMBER;
          hash = (53 * hash) + type_;
        }
        if (hasReason()) {
          hash = (37 * hash) + REASON_FIELD_NUMBER;
          hash = (53 * hash) + getReason().hashCode();
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static com.morlunk.jumble.protobuf.Mumble.Reject parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.morlunk.jumble.protobuf.Mumble.Reject parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.Reject parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.morlunk.jumble.protobuf.Mumble.Reject parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.Reject parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.morlunk.jumble.protobuf.Mumble.Reject parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.Reject parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.morlunk.jumble.protobuf.Mumble.Reject parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.Reject parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.morlunk.jumble.protobuf.Mumble.Reject parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
  
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(com.morlunk.jumble.protobuf.Mumble.Reject prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }
  
      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code MumbleProto.Reject}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:MumbleProto.Reject)
          com.morlunk.jumble.protobuf.Mumble.RejectOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_Reject_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_Reject_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.morlunk.jumble.protobuf.Mumble.Reject.class, com.morlunk.jumble.protobuf.Mumble.Reject.Builder.class);
        }
  
        // Construct using com.morlunk.jumble.protobuf.Mumble.Reject.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
  
        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
          }
        }
        public Builder clear() {
          super.clear();
          type_ = 0;
          bitField0_ = (bitField0_ & ~0x00000001);
          reason_ = "";
          bitField0_ = (bitField0_ & ~0x00000002);
          return this;
        }
  
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_Reject_descriptor;
        }
  
        public com.morlunk.jumble.protobuf.Mumble.Reject getDefaultInstanceForType() {
          return com.morlunk.jumble.protobuf.Mumble.Reject.getDefaultInstance();
        }
  
        public com.morlunk.jumble.protobuf.Mumble.Reject build() {
          com.morlunk.jumble.protobuf.Mumble.Reject result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        public com.morlunk.jumble.protobuf.Mumble.Reject buildPartial() {
          com.morlunk.jumble.protobuf.Mumble.Reject result = new com.morlunk.jumble.protobuf.Mumble.Reject(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.type_ = type_;
          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
            to_bitField0_ |= 0x00000002;
          }
          result.reason_ = reason_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
  
        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.setField(field, value);
        }
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return (Builder) super.clearField(field);
        }
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return (Builder) super.clearOneof(oneof);
        }
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.morlunk.jumble.protobuf.Mumble.Reject) {
            return mergeFrom((com.morlunk.jumble.protobuf.Mumble.Reject)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(com.morlunk.jumble.protobuf.Mumble.Reject other) {
          if (other == com.morlunk.jumble.protobuf.Mumble.Reject.getDefaultInstance()) return this;
          if (other.hasType()) {
            setType(other.getType());
          }
          if (other.hasReason()) {
            bitField0_ |= 0x00000002;
            reason_ = other.reason_;
            onChanged();
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }
  
        public final boolean isInitialized() {
          return true;
        }
  
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.morlunk.jumble.protobuf.Mumble.Reject parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (com.morlunk.jumble.protobuf.Mumble.Reject) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;
  
        private int type_ = 0;
        /**
         * <code>optional .MumbleProto.Reject.RejectType type = 1;</code>
         */
        public boolean hasType() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <code>optional .MumbleProto.Reject.RejectType type = 1;</code>
         */
        public com.morlunk.jumble.protobuf.Mumble.Reject.RejectType getType() {
          com.morlunk.jumble.protobuf.Mumble.Reject.RejectType result = com.morlunk.jumble.protobuf.Mumble.Reject.RejectType.valueOf(type_);
          return result == null ? com.morlunk.jumble.protobuf.Mumble.Reject.RejectType.None : result;
        }
        /**
         * <code>optional .MumbleProto.Reject.RejectType type = 1;</code>
         */
        public Builder setType(com.morlunk.jumble.protobuf.Mumble.Reject.RejectType value) {
          if (value == null) {
            throw new NullPointerException();
          }
          bitField0_ |= 0x00000001;
          type_ = value.getNumber();
          onChanged();
          return this;
        }
        /**
         * <code>optional .MumbleProto.Reject.RejectType type = 1;</code>
         */
        public Builder clearType() {
          bitField0_ = (bitField0_ & ~0x00000001);
          type_ = 0;
          onChanged();
          return this;
        }
  
        private java.lang.Object reason_ = "";
        /**
         * <code>optional string reason = 2;</code>
         */
        public boolean hasReason() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * <code>optional string reason = 2;</code>
         */
        public java.lang.String getReason() {
          java.lang.Object ref = reason_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              reason_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>optional string reason = 2;</code>
         */
        public com.google.protobuf.ByteString
            getReasonBytes() {
          java.lang.Object ref = reason_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            reason_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>optional string reason = 2;</code>
         */
        public Builder setReason(
            java.lang.String value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000002;
          reason_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional string reason = 2;</code>
         */
        public Builder clearReason() {
          bitField0_ = (bitField0_ & ~0x00000002);
          reason_ = getDefaultInstance().getReason();
          onChanged();
          return this;
        }
        /**
         * <code>optional string reason = 2;</code>
         */
        public Builder setReasonBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000002;
          reason_ = value;
          onChanged();
          return this;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }
  
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:MumbleProto.Reject)
      }
  
      // @@protoc_insertion_point(class_scope:MumbleProto.Reject)
      private static final com.morlunk.jumble.protobuf.Mumble.Reject DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.morlunk.jumble.protobuf.Mumble.Reject();
      }
  
      public static com.morlunk.jumble.protobuf.Mumble.Reject getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      @java.lang.Deprecated public static final com.google.protobuf.Parser<Reject>
          PARSER = new com.google.protobuf.AbstractParser<Reject>() {
        public Reject parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return new Reject(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<Reject> parser() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.google.protobuf.Parser<Reject> getParserForType() {
        return PARSER;
      }
  
      public com.morlunk.jumble.protobuf.Mumble.Reject getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface ServerConfigOrBuilder extends
        // @@protoc_insertion_point(interface_extends:MumbleProto.ServerConfig)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <code>optional uint32 max_bandwidth = 1;</code>
       */
      boolean hasMaxBandwidth();
      /**
       * <code>optional uint32 max_bandwidth = 1;</code>
       */
      int getMaxBandwidth();
  
      /**
       * <code>optional string welcome_text = 2;</code>
       */
      boolean hasWelcomeText();
      /**
       * <code>optional string welcome_text = 2;</code>
       */
      java.lang.String getWelcomeText();
      /**
       * <code>optional string welcome_text = 2;</code>
       */
      com.google.protobuf.ByteString
          getWelcomeTextBytes();
  
      /**
       * <code>optional bool allow_html = 3;</code>
       */
      boolean hasAllowHtml();
      /**
       * <code>optional bool allow_html = 3;</code>
       */
      boolean getAllowHtml();
  
      /**
       * <code>optional uint32 message_length = 4;</code>
       */
      boolean hasMessageLength();
      /**
       * <code>optional uint32 message_length = 4;</code>
       */
      int getMessageLength();
  
      /**
       * <code>optional uint32 image_message_length = 5;</code>
       */
      boolean hasImageMessageLength();
      /**
       * <code>optional uint32 image_message_length = 5;</code>
       */
      int getImageMessageLength();
    }
    /**
     * Protobuf type {@code MumbleProto.ServerConfig}
     */
    public  static final class ServerConfig extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:MumbleProto.ServerConfig)
        ServerConfigOrBuilder {
      // Use ServerConfig.newBuilder() to construct.
      private ServerConfig(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private ServerConfig() {
        maxBandwidth_ = 0;
        welcomeText_ = "";
        allowHtml_ = false;
        messageLength_ = 0;
        imageMessageLength_ = 0;
      }
  
      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private ServerConfig(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        int mutable_bitField0_ = 0;
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder();
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              default: {
                if (!parseUnknownField(input, unknownFields,
                                       extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 8: {
                bitField0_ |= 0x00000001;
                maxBandwidth_ = input.readUInt32();
                break;
              }
              case 18: {
                com.google.protobuf.ByteString bs = input.readBytes();
                bitField0_ |= 0x00000002;
                welcomeText_ = bs;
                break;
              }
              case 24: {
                bitField0_ |= 0x00000004;
                allowHtml_ = input.readBool();
                break;
              }
              case 32: {
                bitField0_ |= 0x00000008;
                messageLength_ = input.readUInt32();
                break;
              }
              case 40: {
                bitField0_ |= 0x00000010;
                imageMessageLength_ = input.readUInt32();
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_ServerConfig_descriptor;
      }
  
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_ServerConfig_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.morlunk.jumble.protobuf.Mumble.ServerConfig.class, com.morlunk.jumble.protobuf.Mumble.ServerConfig.Builder.class);
      }
  
      private int bitField0_;
      public static final int MAX_BANDWIDTH_FIELD_NUMBER = 1;
      private int maxBandwidth_;
      /**
       * <code>optional uint32 max_bandwidth = 1;</code>
       */
      public boolean hasMaxBandwidth() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>optional uint32 max_bandwidth = 1;</code>
       */
      public int getMaxBandwidth() {
        return maxBandwidth_;
      }
  
      public static final int WELCOME_TEXT_FIELD_NUMBER = 2;
      private volatile java.lang.Object welcomeText_;
      /**
       * <code>optional string welcome_text = 2;</code>
       */
      public boolean hasWelcomeText() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional string welcome_text = 2;</code>
       */
      public java.lang.String getWelcomeText() {
        java.lang.Object ref = welcomeText_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            welcomeText_ = s;
          }
          return s;
        }
      }
      /**
       * <code>optional string welcome_text = 2;</code>
       */
      public com.google.protobuf.ByteString
          getWelcomeTextBytes() {
        java.lang.Object ref = welcomeText_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          welcomeText_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
  
      public static final int ALLOW_HTML_FIELD_NUMBER = 3;
      private boolean allowHtml_;
      /**
       * <code>optional bool allow_html = 3;</code>
       */
      public boolean hasAllowHtml() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>optional bool allow_html = 3;</code>
       */
      public boolean getAllowHtml() {
        return allowHtml_;
      }
  
      public static final int MESSAGE_LENGTH_FIELD_NUMBER = 4;
      private int messageLength_;
      /**
       * <code>optional uint32 message_length = 4;</code>
       */
      public boolean hasMessageLength() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>optional uint32 message_length = 4;</code>
       */
      public int getMessageLength() {
        return messageLength_;
      }
  
      public static final int IMAGE_MESSAGE_LENGTH_FIELD_NUMBER = 5;
      private int imageMessageLength_;
      /**
       * <code>optional uint32 image_message_length = 5;</code>
       */
      public boolean hasImageMessageLength() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      /**
       * <code>optional uint32 image_message_length = 5;</code>
       */
      public int getImageMessageLength() {
        return imageMessageLength_;
      }
  
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        memoizedIsInitialized = 1;
        return true;
      }
  
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeUInt32(1, maxBandwidth_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 2, welcomeText_);
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          output.writeBool(3, allowHtml_);
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          output.writeUInt32(4, messageLength_);
        }
        if (((bitField0_ & 0x00000010) == 0x00000010)) {
          output.writeUInt32(5, imageMessageLength_);
        }
        unknownFields.writeTo(output);
      }
  
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(1, maxBandwidth_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, welcomeText_);
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBoolSize(3, allowHtml_);
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(4, messageLength_);
        }
        if (((bitField0_ & 0x00000010) == 0x00000010)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(5, imageMessageLength_);
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }
  
      private static final long serialVersionUID = 0L;
      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.morlunk.jumble.protobuf.Mumble.ServerConfig)) {
          return super.equals(obj);
        }
        com.morlunk.jumble.protobuf.Mumble.ServerConfig other = (com.morlunk.jumble.protobuf.Mumble.ServerConfig) obj;
  
        boolean result = true;
        result = result && (hasMaxBandwidth() == other.hasMaxBandwidth());
        if (hasMaxBandwidth()) {
          result = result && (getMaxBandwidth()
              == other.getMaxBandwidth());
        }
        result = result && (hasWelcomeText() == other.hasWelcomeText());
        if (hasWelcomeText()) {
          result = result && getWelcomeText()
              .equals(other.getWelcomeText());
        }
        result = result && (hasAllowHtml() == other.hasAllowHtml());
        if (hasAllowHtml()) {
          result = result && (getAllowHtml()
              == other.getAllowHtml());
        }
        result = result && (hasMessageLength() == other.hasMessageLength());
        if (hasMessageLength()) {
          result = result && (getMessageLength()
              == other.getMessageLength());
        }
        result = result && (hasImageMessageLength() == other.hasImageMessageLength());
        if (hasImageMessageLength()) {
          result = result && (getImageMessageLength()
              == other.getImageMessageLength());
        }
        result = result && unknownFields.equals(other.unknownFields);
        return result;
      }
  
      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptorForType().hashCode();
        if (hasMaxBandwidth()) {
          hash = (37 * hash) + MAX_BANDWIDTH_FIELD_NUMBER;
          hash = (53 * hash) + getMaxBandwidth();
        }
        if (hasWelcomeText()) {
          hash = (37 * hash) + WELCOME_TEXT_FIELD_NUMBER;
          hash = (53 * hash) + getWelcomeText().hashCode();
        }
        if (hasAllowHtml()) {
          hash = (37 * hash) + ALLOW_HTML_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
              getAllowHtml());
        }
        if (hasMessageLength()) {
          hash = (37 * hash) + MESSAGE_LENGTH_FIELD_NUMBER;
          hash = (53 * hash) + getMessageLength();
        }
        if (hasImageMessageLength()) {
          hash = (37 * hash) + IMAGE_MESSAGE_LENGTH_FIELD_NUMBER;
          hash = (53 * hash) + getImageMessageLength();
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static com.morlunk.jumble.protobuf.Mumble.ServerConfig parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.morlunk.jumble.protobuf.Mumble.ServerConfig parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.ServerConfig parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.morlunk.jumble.protobuf.Mumble.ServerConfig parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.ServerConfig parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.morlunk.jumble.protobuf.Mumble.ServerConfig parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.ServerConfig parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.morlunk.jumble.protobuf.Mumble.ServerConfig parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.ServerConfig parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.morlunk.jumble.protobuf.Mumble.ServerConfig parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
  
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(com.morlunk.jumble.protobuf.Mumble.ServerConfig prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }
  
      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code MumbleProto.ServerConfig}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:MumbleProto.ServerConfig)
          com.morlunk.jumble.protobuf.Mumble.ServerConfigOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_ServerConfig_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_ServerConfig_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.morlunk.jumble.protobuf.Mumble.ServerConfig.class, com.morlunk.jumble.protobuf.Mumble.ServerConfig.Builder.class);
        }
  
        // Construct using com.morlunk.jumble.protobuf.Mumble.ServerConfig.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
  
        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
          }
        }
        public Builder clear() {
          super.clear();
          maxBandwidth_ = 0;
          bitField0_ = (bitField0_ & ~0x00000001);
          welcomeText_ = "";
          bitField0_ = (bitField0_ & ~0x00000002);
          allowHtml_ = false;
          bitField0_ = (bitField0_ & ~0x00000004);
          messageLength_ = 0;
          bitField0_ = (bitField0_ & ~0x00000008);
          imageMessageLength_ = 0;
          bitField0_ = (bitField0_ & ~0x00000010);
          return this;
        }
  
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_ServerConfig_descriptor;
        }
  
        public com.morlunk.jumble.protobuf.Mumble.ServerConfig getDefaultInstanceForType() {
          return com.morlunk.jumble.protobuf.Mumble.ServerConfig.getDefaultInstance();
        }
  
        public com.morlunk.jumble.protobuf.Mumble.ServerConfig build() {
          com.morlunk.jumble.protobuf.Mumble.ServerConfig result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        public com.morlunk.jumble.protobuf.Mumble.ServerConfig buildPartial() {
          com.morlunk.jumble.protobuf.Mumble.ServerConfig result = new com.morlunk.jumble.protobuf.Mumble.ServerConfig(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.maxBandwidth_ = maxBandwidth_;
          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
            to_bitField0_ |= 0x00000002;
          }
          result.welcomeText_ = welcomeText_;
          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
            to_bitField0_ |= 0x00000004;
          }
          result.allowHtml_ = allowHtml_;
          if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
            to_bitField0_ |= 0x00000008;
          }
          result.messageLength_ = messageLength_;
          if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
            to_bitField0_ |= 0x00000010;
          }
          result.imageMessageLength_ = imageMessageLength_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
  
        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.setField(field, value);
        }
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return (Builder) super.clearField(field);
        }
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return (Builder) super.clearOneof(oneof);
        }
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.morlunk.jumble.protobuf.Mumble.ServerConfig) {
            return mergeFrom((com.morlunk.jumble.protobuf.Mumble.ServerConfig)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(com.morlunk.jumble.protobuf.Mumble.ServerConfig other) {
          if (other == com.morlunk.jumble.protobuf.Mumble.ServerConfig.getDefaultInstance()) return this;
          if (other.hasMaxBandwidth()) {
            setMaxBandwidth(other.getMaxBandwidth());
          }
          if (other.hasWelcomeText()) {
            bitField0_ |= 0x00000002;
            welcomeText_ = other.welcomeText_;
            onChanged();
          }
          if (other.hasAllowHtml()) {
            setAllowHtml(other.getAllowHtml());
          }
          if (other.hasMessageLength()) {
            setMessageLength(other.getMessageLength());
          }
          if (other.hasImageMessageLength()) {
            setImageMessageLength(other.getImageMessageLength());
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }
  
        public final boolean isInitialized() {
          return true;
        }
  
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.morlunk.jumble.protobuf.Mumble.ServerConfig parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (com.morlunk.jumble.protobuf.Mumble.ServerConfig) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;
  
        private int maxBandwidth_ ;
        /**
         * <code>optional uint32 max_bandwidth = 1;</code>
         */
        public boolean hasMaxBandwidth() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <code>optional uint32 max_bandwidth = 1;</code>
         */
        public int getMaxBandwidth() {
          return maxBandwidth_;
        }
        /**
         * <code>optional uint32 max_bandwidth = 1;</code>
         */
        public Builder setMaxBandwidth(int value) {
          bitField0_ |= 0x00000001;
          maxBandwidth_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional uint32 max_bandwidth = 1;</code>
         */
        public Builder clearMaxBandwidth() {
          bitField0_ = (bitField0_ & ~0x00000001);
          maxBandwidth_ = 0;
          onChanged();
          return this;
        }
  
        private java.lang.Object welcomeText_ = "";
        /**
         * <code>optional string welcome_text = 2;</code>
         */
        public boolean hasWelcomeText() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * <code>optional string welcome_text = 2;</code>
         */
        public java.lang.String getWelcomeText() {
          java.lang.Object ref = welcomeText_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              welcomeText_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>optional string welcome_text = 2;</code>
         */
        public com.google.protobuf.ByteString
            getWelcomeTextBytes() {
          java.lang.Object ref = welcomeText_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            welcomeText_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>optional string welcome_text = 2;</code>
         */
        public Builder setWelcomeText(
            java.lang.String value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000002;
          welcomeText_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional string welcome_text = 2;</code>
         */
        public Builder clearWelcomeText() {
          bitField0_ = (bitField0_ & ~0x00000002);
          welcomeText_ = getDefaultInstance().getWelcomeText();
          onChanged();
          return this;
        }
        /**
         * <code>optional string welcome_text = 2;</code>
         */
        public Builder setWelcomeTextBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000002;
          welcomeText_ = value;
          onChanged();
          return this;
        }
  
        private boolean allowHtml_ ;
        /**
         * <code>optional bool allow_html = 3;</code>
         */
        public boolean hasAllowHtml() {
          return ((bitField0_ & 0x00000004) == 0x00000004);
        }
        /**
         * <code>optional bool allow_html = 3;</code>
         */
        public boolean getAllowHtml() {
          return allowHtml_;
        }
        /**
         * <code>optional bool allow_html = 3;</code>
         */
        public Builder setAllowHtml(boolean value) {
          bitField0_ |= 0x00000004;
          allowHtml_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional bool allow_html = 3;</code>
         */
        public Builder clearAllowHtml() {
          bitField0_ = (bitField0_ & ~0x00000004);
          allowHtml_ = false;
          onChanged();
          return this;
        }
  
        private int messageLength_ ;
        /**
         * <code>optional uint32 message_length = 4;</code>
         */
        public boolean hasMessageLength() {
          return ((bitField0_ & 0x00000008) == 0x00000008);
        }
        /**
         * <code>optional uint32 message_length = 4;</code>
         */
        public int getMessageLength() {
          return messageLength_;
        }
        /**
         * <code>optional uint32 message_length = 4;</code>
         */
        public Builder setMessageLength(int value) {
          bitField0_ |= 0x00000008;
          messageLength_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional uint32 message_length = 4;</code>
         */
        public Builder clearMessageLength() {
          bitField0_ = (bitField0_ & ~0x00000008);
          messageLength_ = 0;
          onChanged();
          return this;
        }
  
        private int imageMessageLength_ ;
        /**
         * <code>optional uint32 image_message_length = 5;</code>
         */
        public boolean hasImageMessageLength() {
          return ((bitField0_ & 0x00000010) == 0x00000010);
        }
        /**
         * <code>optional uint32 image_message_length = 5;</code>
         */
        public int getImageMessageLength() {
          return imageMessageLength_;
        }
        /**
         * <code>optional uint32 image_message_length = 5;</code>
         */
        public Builder setImageMessageLength(int value) {
          bitField0_ |= 0x00000010;
          imageMessageLength_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional uint32 image_message_length = 5;</code>
         */
        public Builder clearImageMessageLength() {
          bitField0_ = (bitField0_ & ~0x00000010);
          imageMessageLength_ = 0;
          onChanged();
          return this;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }
  
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:MumbleProto.ServerConfig)
      }
  
      // @@protoc_insertion_point(class_scope:MumbleProto.ServerConfig)
      private static final com.morlunk.jumble.protobuf.Mumble.ServerConfig DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.morlunk.jumble.protobuf.Mumble.ServerConfig();
      }
  
      public static com.morlunk.jumble.protobuf.Mumble.ServerConfig getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      @java.lang.Deprecated public static final com.google.protobuf.Parser<ServerConfig>
          PARSER = new com.google.protobuf.AbstractParser<ServerConfig>() {
        public ServerConfig parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return new ServerConfig(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<ServerConfig> parser() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.google.protobuf.Parser<ServerConfig> getParserForType() {
        return PARSER;
      }
  
      public com.morlunk.jumble.protobuf.Mumble.ServerConfig getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface ServerSyncOrBuilder extends
        // @@protoc_insertion_point(interface_extends:MumbleProto.ServerSync)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <code>optional uint32 session = 1;</code>
       */
      boolean hasSession();
      /**
       * <code>optional uint32 session = 1;</code>
       */
      int getSession();
  
      /**
       * <code>optional uint32 max_bandwidth = 2;</code>
       */
      boolean hasMaxBandwidth();
      /**
       * <code>optional uint32 max_bandwidth = 2;</code>
       */
      int getMaxBandwidth();
  
      /**
       * <code>optional string welcome_text = 3;</code>
       */
      boolean hasWelcomeText();
      /**
       * <code>optional string welcome_text = 3;</code>
       */
      java.lang.String getWelcomeText();
      /**
       * <code>optional string welcome_text = 3;</code>
       */
      com.google.protobuf.ByteString
          getWelcomeTextBytes();
  
      /**
       * <code>optional uint64 permissions = 4;</code>
       */
      boolean hasPermissions();
      /**
       * <code>optional uint64 permissions = 4;</code>
       */
      long getPermissions();
    }
    /**
     * Protobuf type {@code MumbleProto.ServerSync}
     */
    public  static final class ServerSync extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:MumbleProto.ServerSync)
        ServerSyncOrBuilder {
      // Use ServerSync.newBuilder() to construct.
      private ServerSync(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private ServerSync() {
        session_ = 0;
        maxBandwidth_ = 0;
        welcomeText_ = "";
        permissions_ = 0L;
      }
  
      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private ServerSync(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        int mutable_bitField0_ = 0;
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder();
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              default: {
                if (!parseUnknownField(input, unknownFields,
                                       extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 8: {
                bitField0_ |= 0x00000001;
                session_ = input.readUInt32();
                break;
              }
              case 16: {
                bitField0_ |= 0x00000002;
                maxBandwidth_ = input.readUInt32();
                break;
              }
              case 26: {
                com.google.protobuf.ByteString bs = input.readBytes();
                bitField0_ |= 0x00000004;
                welcomeText_ = bs;
                break;
              }
              case 32: {
                bitField0_ |= 0x00000008;
                permissions_ = input.readUInt64();
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_ServerSync_descriptor;
      }
  
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_ServerSync_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.morlunk.jumble.protobuf.Mumble.ServerSync.class, com.morlunk.jumble.protobuf.Mumble.ServerSync.Builder.class);
      }
  
      private int bitField0_;
      public static final int SESSION_FIELD_NUMBER = 1;
      private int session_;
      /**
       * <code>optional uint32 session = 1;</code>
       */
      public boolean hasSession() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>optional uint32 session = 1;</code>
       */
      public int getSession() {
        return session_;
      }
  
      public static final int MAX_BANDWIDTH_FIELD_NUMBER = 2;
      private int maxBandwidth_;
      /**
       * <code>optional uint32 max_bandwidth = 2;</code>
       */
      public boolean hasMaxBandwidth() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional uint32 max_bandwidth = 2;</code>
       */
      public int getMaxBandwidth() {
        return maxBandwidth_;
      }
  
      public static final int WELCOME_TEXT_FIELD_NUMBER = 3;
      private volatile java.lang.Object welcomeText_;
      /**
       * <code>optional string welcome_text = 3;</code>
       */
      public boolean hasWelcomeText() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>optional string welcome_text = 3;</code>
       */
      public java.lang.String getWelcomeText() {
        java.lang.Object ref = welcomeText_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            welcomeText_ = s;
          }
          return s;
        }
      }
      /**
       * <code>optional string welcome_text = 3;</code>
       */
      public com.google.protobuf.ByteString
          getWelcomeTextBytes() {
        java.lang.Object ref = welcomeText_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          welcomeText_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
  
      public static final int PERMISSIONS_FIELD_NUMBER = 4;
      private long permissions_;
      /**
       * <code>optional uint64 permissions = 4;</code>
       */
      public boolean hasPermissions() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>optional uint64 permissions = 4;</code>
       */
      public long getPermissions() {
        return permissions_;
      }
  
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        memoizedIsInitialized = 1;
        return true;
      }
  
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeUInt32(1, session_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          output.writeUInt32(2, maxBandwidth_);
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 3, welcomeText_);
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          output.writeUInt64(4, permissions_);
        }
        unknownFields.writeTo(output);
      }
  
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(1, session_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(2, maxBandwidth_);
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, welcomeText_);
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt64Size(4, permissions_);
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }
  
      private static final long serialVersionUID = 0L;
      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.morlunk.jumble.protobuf.Mumble.ServerSync)) {
          return super.equals(obj);
        }
        com.morlunk.jumble.protobuf.Mumble.ServerSync other = (com.morlunk.jumble.protobuf.Mumble.ServerSync) obj;
  
        boolean result = true;
        result = result && (hasSession() == other.hasSession());
        if (hasSession()) {
          result = result && (getSession()
              == other.getSession());
        }
        result = result && (hasMaxBandwidth() == other.hasMaxBandwidth());
        if (hasMaxBandwidth()) {
          result = result && (getMaxBandwidth()
              == other.getMaxBandwidth());
        }
        result = result && (hasWelcomeText() == other.hasWelcomeText());
        if (hasWelcomeText()) {
          result = result && getWelcomeText()
              .equals(other.getWelcomeText());
        }
        result = result && (hasPermissions() == other.hasPermissions());
        if (hasPermissions()) {
          result = result && (getPermissions()
              == other.getPermissions());
        }
        result = result && unknownFields.equals(other.unknownFields);
        return result;
      }
  
      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptorForType().hashCode();
        if (hasSession()) {
          hash = (37 * hash) + SESSION_FIELD_NUMBER;
          hash = (53 * hash) + getSession();
        }
        if (hasMaxBandwidth()) {
          hash = (37 * hash) + MAX_BANDWIDTH_FIELD_NUMBER;
          hash = (53 * hash) + getMaxBandwidth();
        }
        if (hasWelcomeText()) {
          hash = (37 * hash) + WELCOME_TEXT_FIELD_NUMBER;
          hash = (53 * hash) + getWelcomeText().hashCode();
        }
        if (hasPermissions()) {
          hash = (37 * hash) + PERMISSIONS_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
              getPermissions());
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static com.morlunk.jumble.protobuf.Mumble.ServerSync parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.morlunk.jumble.protobuf.Mumble.ServerSync parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.ServerSync parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.morlunk.jumble.protobuf.Mumble.ServerSync parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.ServerSync parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.morlunk.jumble.protobuf.Mumble.ServerSync parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.ServerSync parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.morlunk.jumble.protobuf.Mumble.ServerSync parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.ServerSync parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.morlunk.jumble.protobuf.Mumble.ServerSync parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
  
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(com.morlunk.jumble.protobuf.Mumble.ServerSync prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }
  
      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code MumbleProto.ServerSync}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:MumbleProto.ServerSync)
          com.morlunk.jumble.protobuf.Mumble.ServerSyncOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_ServerSync_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_ServerSync_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.morlunk.jumble.protobuf.Mumble.ServerSync.class, com.morlunk.jumble.protobuf.Mumble.ServerSync.Builder.class);
        }
  
        // Construct using com.morlunk.jumble.protobuf.Mumble.ServerSync.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
  
        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
          }
        }
        public Builder clear() {
          super.clear();
          session_ = 0;
          bitField0_ = (bitField0_ & ~0x00000001);
          maxBandwidth_ = 0;
          bitField0_ = (bitField0_ & ~0x00000002);
          welcomeText_ = "";
          bitField0_ = (bitField0_ & ~0x00000004);
          permissions_ = 0L;
          bitField0_ = (bitField0_ & ~0x00000008);
          return this;
        }
  
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_ServerSync_descriptor;
        }
  
        public com.morlunk.jumble.protobuf.Mumble.ServerSync getDefaultInstanceForType() {
          return com.morlunk.jumble.protobuf.Mumble.ServerSync.getDefaultInstance();
        }
  
        public com.morlunk.jumble.protobuf.Mumble.ServerSync build() {
          com.morlunk.jumble.protobuf.Mumble.ServerSync result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        public com.morlunk.jumble.protobuf.Mumble.ServerSync buildPartial() {
          com.morlunk.jumble.protobuf.Mumble.ServerSync result = new com.morlunk.jumble.protobuf.Mumble.ServerSync(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.session_ = session_;
          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
            to_bitField0_ |= 0x00000002;
          }
          result.maxBandwidth_ = maxBandwidth_;
          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
            to_bitField0_ |= 0x00000004;
          }
          result.welcomeText_ = welcomeText_;
          if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
            to_bitField0_ |= 0x00000008;
          }
          result.permissions_ = permissions_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
  
        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.setField(field, value);
        }
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return (Builder) super.clearField(field);
        }
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return (Builder) super.clearOneof(oneof);
        }
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.morlunk.jumble.protobuf.Mumble.ServerSync) {
            return mergeFrom((com.morlunk.jumble.protobuf.Mumble.ServerSync)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(com.morlunk.jumble.protobuf.Mumble.ServerSync other) {
          if (other == com.morlunk.jumble.protobuf.Mumble.ServerSync.getDefaultInstance()) return this;
          if (other.hasSession()) {
            setSession(other.getSession());
          }
          if (other.hasMaxBandwidth()) {
            setMaxBandwidth(other.getMaxBandwidth());
          }
          if (other.hasWelcomeText()) {
            bitField0_ |= 0x00000004;
            welcomeText_ = other.welcomeText_;
            onChanged();
          }
          if (other.hasPermissions()) {
            setPermissions(other.getPermissions());
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }
  
        public final boolean isInitialized() {
          return true;
        }
  
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.morlunk.jumble.protobuf.Mumble.ServerSync parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (com.morlunk.jumble.protobuf.Mumble.ServerSync) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;
  
        private int session_ ;
        /**
         * <code>optional uint32 session = 1;</code>
         */
        public boolean hasSession() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <code>optional uint32 session = 1;</code>
         */
        public int getSession() {
          return session_;
        }
        /**
         * <code>optional uint32 session = 1;</code>
         */
        public Builder setSession(int value) {
          bitField0_ |= 0x00000001;
          session_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional uint32 session = 1;</code>
         */
        public Builder clearSession() {
          bitField0_ = (bitField0_ & ~0x00000001);
          session_ = 0;
          onChanged();
          return this;
        }
  
        private int maxBandwidth_ ;
        /**
         * <code>optional uint32 max_bandwidth = 2;</code>
         */
        public boolean hasMaxBandwidth() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * <code>optional uint32 max_bandwidth = 2;</code>
         */
        public int getMaxBandwidth() {
          return maxBandwidth_;
        }
        /**
         * <code>optional uint32 max_bandwidth = 2;</code>
         */
        public Builder setMaxBandwidth(int value) {
          bitField0_ |= 0x00000002;
          maxBandwidth_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional uint32 max_bandwidth = 2;</code>
         */
        public Builder clearMaxBandwidth() {
          bitField0_ = (bitField0_ & ~0x00000002);
          maxBandwidth_ = 0;
          onChanged();
          return this;
        }
  
        private java.lang.Object welcomeText_ = "";
        /**
         * <code>optional string welcome_text = 3;</code>
         */
        public boolean hasWelcomeText() {
          return ((bitField0_ & 0x00000004) == 0x00000004);
        }
        /**
         * <code>optional string welcome_text = 3;</code>
         */
        public java.lang.String getWelcomeText() {
          java.lang.Object ref = welcomeText_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              welcomeText_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>optional string welcome_text = 3;</code>
         */
        public com.google.protobuf.ByteString
            getWelcomeTextBytes() {
          java.lang.Object ref = welcomeText_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            welcomeText_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>optional string welcome_text = 3;</code>
         */
        public Builder setWelcomeText(
            java.lang.String value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000004;
          welcomeText_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional string welcome_text = 3;</code>
         */
        public Builder clearWelcomeText() {
          bitField0_ = (bitField0_ & ~0x00000004);
          welcomeText_ = getDefaultInstance().getWelcomeText();
          onChanged();
          return this;
        }
        /**
         * <code>optional string welcome_text = 3;</code>
         */
        public Builder setWelcomeTextBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000004;
          welcomeText_ = value;
          onChanged();
          return this;
        }
  
        private long permissions_ ;
        /**
         * <code>optional uint64 permissions = 4;</code>
         */
        public boolean hasPermissions() {
          return ((bitField0_ & 0x00000008) == 0x00000008);
        }
        /**
         * <code>optional uint64 permissions = 4;</code>
         */
        public long getPermissions() {
          return permissions_;
        }
        /**
         * <code>optional uint64 permissions = 4;</code>
         */
        public Builder setPermissions(long value) {
          bitField0_ |= 0x00000008;
          permissions_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional uint64 permissions = 4;</code>
         */
        public Builder clearPermissions() {
          bitField0_ = (bitField0_ & ~0x00000008);
          permissions_ = 0L;
          onChanged();
          return this;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }
  
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:MumbleProto.ServerSync)
      }
  
      // @@protoc_insertion_point(class_scope:MumbleProto.ServerSync)
      private static final com.morlunk.jumble.protobuf.Mumble.ServerSync DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.morlunk.jumble.protobuf.Mumble.ServerSync();
      }
  
      public static com.morlunk.jumble.protobuf.Mumble.ServerSync getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      @java.lang.Deprecated public static final com.google.protobuf.Parser<ServerSync>
          PARSER = new com.google.protobuf.AbstractParser<ServerSync>() {
        public ServerSync parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return new ServerSync(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<ServerSync> parser() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.google.protobuf.Parser<ServerSync> getParserForType() {
        return PARSER;
      }
  
      public com.morlunk.jumble.protobuf.Mumble.ServerSync getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface ChannelRemoveOrBuilder extends
        // @@protoc_insertion_point(interface_extends:MumbleProto.ChannelRemove)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <code>required uint32 channel_id = 1;</code>
       */
      boolean hasChannelId();
      /**
       * <code>required uint32 channel_id = 1;</code>
       */
      int getChannelId();
    }
    /**
     * Protobuf type {@code MumbleProto.ChannelRemove}
     */
    public  static final class ChannelRemove extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:MumbleProto.ChannelRemove)
        ChannelRemoveOrBuilder {
      // Use ChannelRemove.newBuilder() to construct.
      private ChannelRemove(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private ChannelRemove() {
        channelId_ = 0;
      }
  
      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private ChannelRemove(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        int mutable_bitField0_ = 0;
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder();
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              default: {
                if (!parseUnknownField(input, unknownFields,
                                       extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 8: {
                bitField0_ |= 0x00000001;
                channelId_ = input.readUInt32();
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_ChannelRemove_descriptor;
      }
  
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_ChannelRemove_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.morlunk.jumble.protobuf.Mumble.ChannelRemove.class, com.morlunk.jumble.protobuf.Mumble.ChannelRemove.Builder.class);
      }
  
      private int bitField0_;
      public static final int CHANNEL_ID_FIELD_NUMBER = 1;
      private int channelId_;
      /**
       * <code>required uint32 channel_id = 1;</code>
       */
      public boolean hasChannelId() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required uint32 channel_id = 1;</code>
       */
      public int getChannelId() {
        return channelId_;
      }
  
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        if (!hasChannelId()) {
          memoizedIsInitialized = 0;
          return false;
        }
        memoizedIsInitialized = 1;
        return true;
      }
  
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeUInt32(1, channelId_);
        }
        unknownFields.writeTo(output);
      }
  
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(1, channelId_);
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }
  
      private static final long serialVersionUID = 0L;
      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.morlunk.jumble.protobuf.Mumble.ChannelRemove)) {
          return super.equals(obj);
        }
        com.morlunk.jumble.protobuf.Mumble.ChannelRemove other = (com.morlunk.jumble.protobuf.Mumble.ChannelRemove) obj;
  
        boolean result = true;
        result = result && (hasChannelId() == other.hasChannelId());
        if (hasChannelId()) {
          result = result && (getChannelId()
              == other.getChannelId());
        }
        result = result && unknownFields.equals(other.unknownFields);
        return result;
      }
  
      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptorForType().hashCode();
        if (hasChannelId()) {
          hash = (37 * hash) + CHANNEL_ID_FIELD_NUMBER;
          hash = (53 * hash) + getChannelId();
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static com.morlunk.jumble.protobuf.Mumble.ChannelRemove parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.morlunk.jumble.protobuf.Mumble.ChannelRemove parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.ChannelRemove parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.morlunk.jumble.protobuf.Mumble.ChannelRemove parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.ChannelRemove parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.morlunk.jumble.protobuf.Mumble.ChannelRemove parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.ChannelRemove parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.morlunk.jumble.protobuf.Mumble.ChannelRemove parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.ChannelRemove parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.morlunk.jumble.protobuf.Mumble.ChannelRemove parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
  
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(com.morlunk.jumble.protobuf.Mumble.ChannelRemove prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }
  
      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code MumbleProto.ChannelRemove}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:MumbleProto.ChannelRemove)
          com.morlunk.jumble.protobuf.Mumble.ChannelRemoveOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_ChannelRemove_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_ChannelRemove_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.morlunk.jumble.protobuf.Mumble.ChannelRemove.class, com.morlunk.jumble.protobuf.Mumble.ChannelRemove.Builder.class);
        }
  
        // Construct using com.morlunk.jumble.protobuf.Mumble.ChannelRemove.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
  
        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
          }
        }
        public Builder clear() {
          super.clear();
          channelId_ = 0;
          bitField0_ = (bitField0_ & ~0x00000001);
          return this;
        }
  
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_ChannelRemove_descriptor;
        }
  
        public com.morlunk.jumble.protobuf.Mumble.ChannelRemove getDefaultInstanceForType() {
          return com.morlunk.jumble.protobuf.Mumble.ChannelRemove.getDefaultInstance();
        }
  
        public com.morlunk.jumble.protobuf.Mumble.ChannelRemove build() {
          com.morlunk.jumble.protobuf.Mumble.ChannelRemove result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        public com.morlunk.jumble.protobuf.Mumble.ChannelRemove buildPartial() {
          com.morlunk.jumble.protobuf.Mumble.ChannelRemove result = new com.morlunk.jumble.protobuf.Mumble.ChannelRemove(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.channelId_ = channelId_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
  
        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.setField(field, value);
        }
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return (Builder) super.clearField(field);
        }
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return (Builder) super.clearOneof(oneof);
        }
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.morlunk.jumble.protobuf.Mumble.ChannelRemove) {
            return mergeFrom((com.morlunk.jumble.protobuf.Mumble.ChannelRemove)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(com.morlunk.jumble.protobuf.Mumble.ChannelRemove other) {
          if (other == com.morlunk.jumble.protobuf.Mumble.ChannelRemove.getDefaultInstance()) return this;
          if (other.hasChannelId()) {
            setChannelId(other.getChannelId());
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }
  
        public final boolean isInitialized() {
          if (!hasChannelId()) {
            return false;
          }
          return true;
        }
  
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.morlunk.jumble.protobuf.Mumble.ChannelRemove parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (com.morlunk.jumble.protobuf.Mumble.ChannelRemove) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;
  
        private int channelId_ ;
        /**
         * <code>required uint32 channel_id = 1;</code>
         */
        public boolean hasChannelId() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <code>required uint32 channel_id = 1;</code>
         */
        public int getChannelId() {
          return channelId_;
        }
        /**
         * <code>required uint32 channel_id = 1;</code>
         */
        public Builder setChannelId(int value) {
          bitField0_ |= 0x00000001;
          channelId_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>required uint32 channel_id = 1;</code>
         */
        public Builder clearChannelId() {
          bitField0_ = (bitField0_ & ~0x00000001);
          channelId_ = 0;
          onChanged();
          return this;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }
  
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:MumbleProto.ChannelRemove)
      }
  
      // @@protoc_insertion_point(class_scope:MumbleProto.ChannelRemove)
      private static final com.morlunk.jumble.protobuf.Mumble.ChannelRemove DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.morlunk.jumble.protobuf.Mumble.ChannelRemove();
      }
  
      public static com.morlunk.jumble.protobuf.Mumble.ChannelRemove getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      @java.lang.Deprecated public static final com.google.protobuf.Parser<ChannelRemove>
          PARSER = new com.google.protobuf.AbstractParser<ChannelRemove>() {
        public ChannelRemove parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return new ChannelRemove(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<ChannelRemove> parser() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.google.protobuf.Parser<ChannelRemove> getParserForType() {
        return PARSER;
      }
  
      public com.morlunk.jumble.protobuf.Mumble.ChannelRemove getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface ChannelStateOrBuilder extends
        // @@protoc_insertion_point(interface_extends:MumbleProto.ChannelState)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <code>optional uint32 channel_id = 1;</code>
       */
      boolean hasChannelId();
      /**
       * <code>optional uint32 channel_id = 1;</code>
       */
      int getChannelId();
  
      /**
       * <code>optional uint32 parent = 2;</code>
       */
      boolean hasParent();
      /**
       * <code>optional uint32 parent = 2;</code>
       */
      int getParent();
  
      /**
       * <code>optional string name = 3;</code>
       */
      boolean hasName();
      /**
       * <code>optional string name = 3;</code>
       */
      java.lang.String getName();
      /**
       * <code>optional string name = 3;</code>
       */
      com.google.protobuf.ByteString
          getNameBytes();
  
      /**
       * <code>repeated uint32 links = 4;</code>
       */
      java.util.List<java.lang.Integer> getLinksList();
      /**
       * <code>repeated uint32 links = 4;</code>
       */
      int getLinksCount();
      /**
       * <code>repeated uint32 links = 4;</code>
       */
      int getLinks(int index);
  
      /**
       * <code>optional string description = 5;</code>
       */
      boolean hasDescription();
      /**
       * <code>optional string description = 5;</code>
       */
      java.lang.String getDescription();
      /**
       * <code>optional string description = 5;</code>
       */
      com.google.protobuf.ByteString
          getDescriptionBytes();
  
      /**
       * <code>repeated uint32 links_add = 6;</code>
       */
      java.util.List<java.lang.Integer> getLinksAddList();
      /**
       * <code>repeated uint32 links_add = 6;</code>
       */
      int getLinksAddCount();
      /**
       * <code>repeated uint32 links_add = 6;</code>
       */
      int getLinksAdd(int index);
  
      /**
       * <code>repeated uint32 links_remove = 7;</code>
       */
      java.util.List<java.lang.Integer> getLinksRemoveList();
      /**
       * <code>repeated uint32 links_remove = 7;</code>
       */
      int getLinksRemoveCount();
      /**
       * <code>repeated uint32 links_remove = 7;</code>
       */
      int getLinksRemove(int index);
  
      /**
       * <code>optional bool temporary = 8 [default = false];</code>
       */
      boolean hasTemporary();
      /**
       * <code>optional bool temporary = 8 [default = false];</code>
       */
      boolean getTemporary();
  
      /**
       * <code>optional int32 position = 9 [default = 0];</code>
       */
      boolean hasPosition();
      /**
       * <code>optional int32 position = 9 [default = 0];</code>
       */
      int getPosition();
  
      /**
       * <code>optional bytes description_hash = 10;</code>
       */
      boolean hasDescriptionHash();
      /**
       * <code>optional bytes description_hash = 10;</code>
       */
      com.google.protobuf.ByteString getDescriptionHash();
    }
    /**
     * Protobuf type {@code MumbleProto.ChannelState}
     */
    public  static final class ChannelState extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:MumbleProto.ChannelState)
        ChannelStateOrBuilder {
      // Use ChannelState.newBuilder() to construct.
      private ChannelState(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private ChannelState() {
        channelId_ = 0;
        parent_ = 0;
        name_ = "";
        links_ = java.util.Collections.emptyList();
        description_ = "";
        linksAdd_ = java.util.Collections.emptyList();
        linksRemove_ = java.util.Collections.emptyList();
        temporary_ = false;
        position_ = 0;
        descriptionHash_ = com.google.protobuf.ByteString.EMPTY;
      }
  
      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private ChannelState(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        int mutable_bitField0_ = 0;
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder();
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              default: {
                if (!parseUnknownField(input, unknownFields,
                                       extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 8: {
                bitField0_ |= 0x00000001;
                channelId_ = input.readUInt32();
                break;
              }
              case 16: {
                bitField0_ |= 0x00000002;
                parent_ = input.readUInt32();
                break;
              }
              case 26: {
                com.google.protobuf.ByteString bs = input.readBytes();
                bitField0_ |= 0x00000004;
                name_ = bs;
                break;
              }
              case 32: {
                if (!((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
                  links_ = new java.util.ArrayList<java.lang.Integer>();
                  mutable_bitField0_ |= 0x00000008;
                }
                links_.add(input.readUInt32());
                break;
              }
              case 34: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                if (!((mutable_bitField0_ & 0x00000008) == 0x00000008) && input.getBytesUntilLimit() > 0) {
                  links_ = new java.util.ArrayList<java.lang.Integer>();
                  mutable_bitField0_ |= 0x00000008;
                }
                while (input.getBytesUntilLimit() > 0) {
                  links_.add(input.readUInt32());
                }
                input.popLimit(limit);
                break;
              }
              case 42: {
                com.google.protobuf.ByteString bs = input.readBytes();
                bitField0_ |= 0x00000008;
                description_ = bs;
                break;
              }
              case 48: {
                if (!((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
                  linksAdd_ = new java.util.ArrayList<java.lang.Integer>();
                  mutable_bitField0_ |= 0x00000020;
                }
                linksAdd_.add(input.readUInt32());
                break;
              }
              case 50: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                if (!((mutable_bitField0_ & 0x00000020) == 0x00000020) && input.getBytesUntilLimit() > 0) {
                  linksAdd_ = new java.util.ArrayList<java.lang.Integer>();
                  mutable_bitField0_ |= 0x00000020;
                }
                while (input.getBytesUntilLimit() > 0) {
                  linksAdd_.add(input.readUInt32());
                }
                input.popLimit(limit);
                break;
              }
              case 56: {
                if (!((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
                  linksRemove_ = new java.util.ArrayList<java.lang.Integer>();
                  mutable_bitField0_ |= 0x00000040;
                }
                linksRemove_.add(input.readUInt32());
                break;
              }
              case 58: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                if (!((mutable_bitField0_ & 0x00000040) == 0x00000040) && input.getBytesUntilLimit() > 0) {
                  linksRemove_ = new java.util.ArrayList<java.lang.Integer>();
                  mutable_bitField0_ |= 0x00000040;
                }
                while (input.getBytesUntilLimit() > 0) {
                  linksRemove_.add(input.readUInt32());
                }
                input.popLimit(limit);
                break;
              }
              case 64: {
                bitField0_ |= 0x00000010;
                temporary_ = input.readBool();
                break;
              }
              case 72: {
                bitField0_ |= 0x00000020;
                position_ = input.readInt32();
                break;
              }
              case 82: {
                bitField0_ |= 0x00000040;
                descriptionHash_ = input.readBytes();
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          if (((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
            links_ = java.util.Collections.unmodifiableList(links_);
          }
          if (((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
            linksAdd_ = java.util.Collections.unmodifiableList(linksAdd_);
          }
          if (((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
            linksRemove_ = java.util.Collections.unmodifiableList(linksRemove_);
          }
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_ChannelState_descriptor;
      }
  
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_ChannelState_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.morlunk.jumble.protobuf.Mumble.ChannelState.class, com.morlunk.jumble.protobuf.Mumble.ChannelState.Builder.class);
      }
  
      private int bitField0_;
      public static final int CHANNEL_ID_FIELD_NUMBER = 1;
      private int channelId_;
      /**
       * <code>optional uint32 channel_id = 1;</code>
       */
      public boolean hasChannelId() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>optional uint32 channel_id = 1;</code>
       */
      public int getChannelId() {
        return channelId_;
      }
  
      public static final int PARENT_FIELD_NUMBER = 2;
      private int parent_;
      /**
       * <code>optional uint32 parent = 2;</code>
       */
      public boolean hasParent() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional uint32 parent = 2;</code>
       */
      public int getParent() {
        return parent_;
      }
  
      public static final int NAME_FIELD_NUMBER = 3;
      private volatile java.lang.Object name_;
      /**
       * <code>optional string name = 3;</code>
       */
      public boolean hasName() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>optional string name = 3;</code>
       */
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            name_ = s;
          }
          return s;
        }
      }
      /**
       * <code>optional string name = 3;</code>
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
  
      public static final int LINKS_FIELD_NUMBER = 4;
      private java.util.List<java.lang.Integer> links_;
      /**
       * <code>repeated uint32 links = 4;</code>
       */
      public java.util.List<java.lang.Integer>
          getLinksList() {
        return links_;
      }
      /**
       * <code>repeated uint32 links = 4;</code>
       */
      public int getLinksCount() {
        return links_.size();
      }
      /**
       * <code>repeated uint32 links = 4;</code>
       */
      public int getLinks(int index) {
        return links_.get(index);
      }
  
      public static final int DESCRIPTION_FIELD_NUMBER = 5;
      private volatile java.lang.Object description_;
      /**
       * <code>optional string description = 5;</code>
       */
      public boolean hasDescription() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>optional string description = 5;</code>
       */
      public java.lang.String getDescription() {
        java.lang.Object ref = description_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            description_ = s;
          }
          return s;
        }
      }
      /**
       * <code>optional string description = 5;</code>
       */
      public com.google.protobuf.ByteString
          getDescriptionBytes() {
        java.lang.Object ref = description_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          description_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
  
      public static final int LINKS_ADD_FIELD_NUMBER = 6;
      private java.util.List<java.lang.Integer> linksAdd_;
      /**
       * <code>repeated uint32 links_add = 6;</code>
       */
      public java.util.List<java.lang.Integer>
          getLinksAddList() {
        return linksAdd_;
      }
      /**
       * <code>repeated uint32 links_add = 6;</code>
       */
      public int getLinksAddCount() {
        return linksAdd_.size();
      }
      /**
       * <code>repeated uint32 links_add = 6;</code>
       */
      public int getLinksAdd(int index) {
        return linksAdd_.get(index);
      }
  
      public static final int LINKS_REMOVE_FIELD_NUMBER = 7;
      private java.util.List<java.lang.Integer> linksRemove_;
      /**
       * <code>repeated uint32 links_remove = 7;</code>
       */
      public java.util.List<java.lang.Integer>
          getLinksRemoveList() {
        return linksRemove_;
      }
      /**
       * <code>repeated uint32 links_remove = 7;</code>
       */
      public int getLinksRemoveCount() {
        return linksRemove_.size();
      }
      /**
       * <code>repeated uint32 links_remove = 7;</code>
       */
      public int getLinksRemove(int index) {
        return linksRemove_.get(index);
      }
  
      public static final int TEMPORARY_FIELD_NUMBER = 8;
      private boolean temporary_;
      /**
       * <code>optional bool temporary = 8 [default = false];</code>
       */
      public boolean hasTemporary() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      /**
       * <code>optional bool temporary = 8 [default = false];</code>
       */
      public boolean getTemporary() {
        return temporary_;
      }
  
      public static final int POSITION_FIELD_NUMBER = 9;
      private int position_;
      /**
       * <code>optional int32 position = 9 [default = 0];</code>
       */
      public boolean hasPosition() {
        return ((bitField0_ & 0x00000020) == 0x00000020);
      }
      /**
       * <code>optional int32 position = 9 [default = 0];</code>
       */
      public int getPosition() {
        return position_;
      }
  
      public static final int DESCRIPTION_HASH_FIELD_NUMBER = 10;
      private com.google.protobuf.ByteString descriptionHash_;
      /**
       * <code>optional bytes description_hash = 10;</code>
       */
      public boolean hasDescriptionHash() {
        return ((bitField0_ & 0x00000040) == 0x00000040);
      }
      /**
       * <code>optional bytes description_hash = 10;</code>
       */
      public com.google.protobuf.ByteString getDescriptionHash() {
        return descriptionHash_;
      }
  
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        memoizedIsInitialized = 1;
        return true;
      }
  
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeUInt32(1, channelId_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          output.writeUInt32(2, parent_);
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 3, name_);
        }
        for (int i = 0; i < links_.size(); i++) {
          output.writeUInt32(4, links_.get(i));
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 5, description_);
        }
        for (int i = 0; i < linksAdd_.size(); i++) {
          output.writeUInt32(6, linksAdd_.get(i));
        }
        for (int i = 0; i < linksRemove_.size(); i++) {
          output.writeUInt32(7, linksRemove_.get(i));
        }
        if (((bitField0_ & 0x00000010) == 0x00000010)) {
          output.writeBool(8, temporary_);
        }
        if (((bitField0_ & 0x00000020) == 0x00000020)) {
          output.writeInt32(9, position_);
        }
        if (((bitField0_ & 0x00000040) == 0x00000040)) {
          output.writeBytes(10, descriptionHash_);
        }
        unknownFields.writeTo(output);
      }
  
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(1, channelId_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(2, parent_);
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, name_);
        }
        {
          int dataSize = 0;
          for (int i = 0; i < links_.size(); i++) {
            dataSize += com.google.protobuf.CodedOutputStream
              .computeUInt32SizeNoTag(links_.get(i));
          }
          size += dataSize;
          size += 1 * getLinksList().size();
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, description_);
        }
        {
          int dataSize = 0;
          for (int i = 0; i < linksAdd_.size(); i++) {
            dataSize += com.google.protobuf.CodedOutputStream
              .computeUInt32SizeNoTag(linksAdd_.get(i));
          }
          size += dataSize;
          size += 1 * getLinksAddList().size();
        }
        {
          int dataSize = 0;
          for (int i = 0; i < linksRemove_.size(); i++) {
            dataSize += com.google.protobuf.CodedOutputStream
              .computeUInt32SizeNoTag(linksRemove_.get(i));
          }
          size += dataSize;
          size += 1 * getLinksRemoveList().size();
        }
        if (((bitField0_ & 0x00000010) == 0x00000010)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBoolSize(8, temporary_);
        }
        if (((bitField0_ & 0x00000020) == 0x00000020)) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(9, position_);
        }
        if (((bitField0_ & 0x00000040) == 0x00000040)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(10, descriptionHash_);
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }
  
      private static final long serialVersionUID = 0L;
      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.morlunk.jumble.protobuf.Mumble.ChannelState)) {
          return super.equals(obj);
        }
        com.morlunk.jumble.protobuf.Mumble.ChannelState other = (com.morlunk.jumble.protobuf.Mumble.ChannelState) obj;
  
        boolean result = true;
        result = result && (hasChannelId() == other.hasChannelId());
        if (hasChannelId()) {
          result = result && (getChannelId()
              == other.getChannelId());
        }
        result = result && (hasParent() == other.hasParent());
        if (hasParent()) {
          result = result && (getParent()
              == other.getParent());
        }
        result = result && (hasName() == other.hasName());
        if (hasName()) {
          result = result && getName()
              .equals(other.getName());
        }
        result = result && getLinksList()
            .equals(other.getLinksList());
        result = result && (hasDescription() == other.hasDescription());
        if (hasDescription()) {
          result = result && getDescription()
              .equals(other.getDescription());
        }
        result = result && getLinksAddList()
            .equals(other.getLinksAddList());
        result = result && getLinksRemoveList()
            .equals(other.getLinksRemoveList());
        result = result && (hasTemporary() == other.hasTemporary());
        if (hasTemporary()) {
          result = result && (getTemporary()
              == other.getTemporary());
        }
        result = result && (hasPosition() == other.hasPosition());
        if (hasPosition()) {
          result = result && (getPosition()
              == other.getPosition());
        }
        result = result && (hasDescriptionHash() == other.hasDescriptionHash());
        if (hasDescriptionHash()) {
          result = result && getDescriptionHash()
              .equals(other.getDescriptionHash());
        }
        result = result && unknownFields.equals(other.unknownFields);
        return result;
      }
  
      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptorForType().hashCode();
        if (hasChannelId()) {
          hash = (37 * hash) + CHANNEL_ID_FIELD_NUMBER;
          hash = (53 * hash) + getChannelId();
        }
        if (hasParent()) {
          hash = (37 * hash) + PARENT_FIELD_NUMBER;
          hash = (53 * hash) + getParent();
        }
        if (hasName()) {
          hash = (37 * hash) + NAME_FIELD_NUMBER;
          hash = (53 * hash) + getName().hashCode();
        }
        if (getLinksCount() > 0) {
          hash = (37 * hash) + LINKS_FIELD_NUMBER;
          hash = (53 * hash) + getLinksList().hashCode();
        }
        if (hasDescription()) {
          hash = (37 * hash) + DESCRIPTION_FIELD_NUMBER;
          hash = (53 * hash) + getDescription().hashCode();
        }
        if (getLinksAddCount() > 0) {
          hash = (37 * hash) + LINKS_ADD_FIELD_NUMBER;
          hash = (53 * hash) + getLinksAddList().hashCode();
        }
        if (getLinksRemoveCount() > 0) {
          hash = (37 * hash) + LINKS_REMOVE_FIELD_NUMBER;
          hash = (53 * hash) + getLinksRemoveList().hashCode();
        }
        if (hasTemporary()) {
          hash = (37 * hash) + TEMPORARY_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
              getTemporary());
        }
        if (hasPosition()) {
          hash = (37 * hash) + POSITION_FIELD_NUMBER;
          hash = (53 * hash) + getPosition();
        }
        if (hasDescriptionHash()) {
          hash = (37 * hash) + DESCRIPTION_HASH_FIELD_NUMBER;
          hash = (53 * hash) + getDescriptionHash().hashCode();
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static com.morlunk.jumble.protobuf.Mumble.ChannelState parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.morlunk.jumble.protobuf.Mumble.ChannelState parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.ChannelState parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.morlunk.jumble.protobuf.Mumble.ChannelState parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.ChannelState parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.morlunk.jumble.protobuf.Mumble.ChannelState parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.ChannelState parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.morlunk.jumble.protobuf.Mumble.ChannelState parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.ChannelState parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.morlunk.jumble.protobuf.Mumble.ChannelState parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
  
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(com.morlunk.jumble.protobuf.Mumble.ChannelState prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }
  
      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code MumbleProto.ChannelState}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:MumbleProto.ChannelState)
          com.morlunk.jumble.protobuf.Mumble.ChannelStateOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_ChannelState_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_ChannelState_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.morlunk.jumble.protobuf.Mumble.ChannelState.class, com.morlunk.jumble.protobuf.Mumble.ChannelState.Builder.class);
        }
  
        // Construct using com.morlunk.jumble.protobuf.Mumble.ChannelState.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
  
        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
          }
        }
        public Builder clear() {
          super.clear();
          channelId_ = 0;
          bitField0_ = (bitField0_ & ~0x00000001);
          parent_ = 0;
          bitField0_ = (bitField0_ & ~0x00000002);
          name_ = "";
          bitField0_ = (bitField0_ & ~0x00000004);
          links_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000008);
          description_ = "";
          bitField0_ = (bitField0_ & ~0x00000010);
          linksAdd_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000020);
          linksRemove_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000040);
          temporary_ = false;
          bitField0_ = (bitField0_ & ~0x00000080);
          position_ = 0;
          bitField0_ = (bitField0_ & ~0x00000100);
          descriptionHash_ = com.google.protobuf.ByteString.EMPTY;
          bitField0_ = (bitField0_ & ~0x00000200);
          return this;
        }
  
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_ChannelState_descriptor;
        }
  
        public com.morlunk.jumble.protobuf.Mumble.ChannelState getDefaultInstanceForType() {
          return com.morlunk.jumble.protobuf.Mumble.ChannelState.getDefaultInstance();
        }
  
        public com.morlunk.jumble.protobuf.Mumble.ChannelState build() {
          com.morlunk.jumble.protobuf.Mumble.ChannelState result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        public com.morlunk.jumble.protobuf.Mumble.ChannelState buildPartial() {
          com.morlunk.jumble.protobuf.Mumble.ChannelState result = new com.morlunk.jumble.protobuf.Mumble.ChannelState(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.channelId_ = channelId_;
          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
            to_bitField0_ |= 0x00000002;
          }
          result.parent_ = parent_;
          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
            to_bitField0_ |= 0x00000004;
          }
          result.name_ = name_;
          if (((bitField0_ & 0x00000008) == 0x00000008)) {
            links_ = java.util.Collections.unmodifiableList(links_);
            bitField0_ = (bitField0_ & ~0x00000008);
          }
          result.links_ = links_;
          if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
            to_bitField0_ |= 0x00000008;
          }
          result.description_ = description_;
          if (((bitField0_ & 0x00000020) == 0x00000020)) {
            linksAdd_ = java.util.Collections.unmodifiableList(linksAdd_);
            bitField0_ = (bitField0_ & ~0x00000020);
          }
          result.linksAdd_ = linksAdd_;
          if (((bitField0_ & 0x00000040) == 0x00000040)) {
            linksRemove_ = java.util.Collections.unmodifiableList(linksRemove_);
            bitField0_ = (bitField0_ & ~0x00000040);
          }
          result.linksRemove_ = linksRemove_;
          if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
            to_bitField0_ |= 0x00000010;
          }
          result.temporary_ = temporary_;
          if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
            to_bitField0_ |= 0x00000020;
          }
          result.position_ = position_;
          if (((from_bitField0_ & 0x00000200) == 0x00000200)) {
            to_bitField0_ |= 0x00000040;
          }
          result.descriptionHash_ = descriptionHash_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
  
        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.setField(field, value);
        }
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return (Builder) super.clearField(field);
        }
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return (Builder) super.clearOneof(oneof);
        }
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.morlunk.jumble.protobuf.Mumble.ChannelState) {
            return mergeFrom((com.morlunk.jumble.protobuf.Mumble.ChannelState)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(com.morlunk.jumble.protobuf.Mumble.ChannelState other) {
          if (other == com.morlunk.jumble.protobuf.Mumble.ChannelState.getDefaultInstance()) return this;
          if (other.hasChannelId()) {
            setChannelId(other.getChannelId());
          }
          if (other.hasParent()) {
            setParent(other.getParent());
          }
          if (other.hasName()) {
            bitField0_ |= 0x00000004;
            name_ = other.name_;
            onChanged();
          }
          if (!other.links_.isEmpty()) {
            if (links_.isEmpty()) {
              links_ = other.links_;
              bitField0_ = (bitField0_ & ~0x00000008);
            } else {
              ensureLinksIsMutable();
              links_.addAll(other.links_);
            }
            onChanged();
          }
          if (other.hasDescription()) {
            bitField0_ |= 0x00000010;
            description_ = other.description_;
            onChanged();
          }
          if (!other.linksAdd_.isEmpty()) {
            if (linksAdd_.isEmpty()) {
              linksAdd_ = other.linksAdd_;
              bitField0_ = (bitField0_ & ~0x00000020);
            } else {
              ensureLinksAddIsMutable();
              linksAdd_.addAll(other.linksAdd_);
            }
            onChanged();
          }
          if (!other.linksRemove_.isEmpty()) {
            if (linksRemove_.isEmpty()) {
              linksRemove_ = other.linksRemove_;
              bitField0_ = (bitField0_ & ~0x00000040);
            } else {
              ensureLinksRemoveIsMutable();
              linksRemove_.addAll(other.linksRemove_);
            }
            onChanged();
          }
          if (other.hasTemporary()) {
            setTemporary(other.getTemporary());
          }
          if (other.hasPosition()) {
            setPosition(other.getPosition());
          }
          if (other.hasDescriptionHash()) {
            setDescriptionHash(other.getDescriptionHash());
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }
  
        public final boolean isInitialized() {
          return true;
        }
  
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.morlunk.jumble.protobuf.Mumble.ChannelState parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (com.morlunk.jumble.protobuf.Mumble.ChannelState) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;
  
        private int channelId_ ;
        /**
         * <code>optional uint32 channel_id = 1;</code>
         */
        public boolean hasChannelId() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <code>optional uint32 channel_id = 1;</code>
         */
        public int getChannelId() {
          return channelId_;
        }
        /**
         * <code>optional uint32 channel_id = 1;</code>
         */
        public Builder setChannelId(int value) {
          bitField0_ |= 0x00000001;
          channelId_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional uint32 channel_id = 1;</code>
         */
        public Builder clearChannelId() {
          bitField0_ = (bitField0_ & ~0x00000001);
          channelId_ = 0;
          onChanged();
          return this;
        }
  
        private int parent_ ;
        /**
         * <code>optional uint32 parent = 2;</code>
         */
        public boolean hasParent() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * <code>optional uint32 parent = 2;</code>
         */
        public int getParent() {
          return parent_;
        }
        /**
         * <code>optional uint32 parent = 2;</code>
         */
        public Builder setParent(int value) {
          bitField0_ |= 0x00000002;
          parent_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional uint32 parent = 2;</code>
         */
        public Builder clearParent() {
          bitField0_ = (bitField0_ & ~0x00000002);
          parent_ = 0;
          onChanged();
          return this;
        }
  
        private java.lang.Object name_ = "";
        /**
         * <code>optional string name = 3;</code>
         */
        public boolean hasName() {
          return ((bitField0_ & 0x00000004) == 0x00000004);
        }
        /**
         * <code>optional string name = 3;</code>
         */
        public java.lang.String getName() {
          java.lang.Object ref = name_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              name_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>optional string name = 3;</code>
         */
        public com.google.protobuf.ByteString
            getNameBytes() {
          java.lang.Object ref = name_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            name_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>optional string name = 3;</code>
         */
        public Builder setName(
            java.lang.String value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000004;
          name_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional string name = 3;</code>
         */
        public Builder clearName() {
          bitField0_ = (bitField0_ & ~0x00000004);
          name_ = getDefaultInstance().getName();
          onChanged();
          return this;
        }
        /**
         * <code>optional string name = 3;</code>
         */
        public Builder setNameBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000004;
          name_ = value;
          onChanged();
          return this;
        }
  
        private java.util.List<java.lang.Integer> links_ = java.util.Collections.emptyList();
        private void ensureLinksIsMutable() {
          if (!((bitField0_ & 0x00000008) == 0x00000008)) {
            links_ = new java.util.ArrayList<java.lang.Integer>(links_);
            bitField0_ |= 0x00000008;
           }
        }
        /**
         * <code>repeated uint32 links = 4;</code>
         */
        public java.util.List<java.lang.Integer>
            getLinksList() {
          return java.util.Collections.unmodifiableList(links_);
        }
        /**
         * <code>repeated uint32 links = 4;</code>
         */
        public int getLinksCount() {
          return links_.size();
        }
        /**
         * <code>repeated uint32 links = 4;</code>
         */
        public int getLinks(int index) {
          return links_.get(index);
        }
        /**
         * <code>repeated uint32 links = 4;</code>
         */
        public Builder setLinks(
            int index, int value) {
          ensureLinksIsMutable();
          links_.set(index, value);
          onChanged();
          return this;
        }
        /**
         * <code>repeated uint32 links = 4;</code>
         */
        public Builder addLinks(int value) {
          ensureLinksIsMutable();
          links_.add(value);
          onChanged();
          return this;
        }
        /**
         * <code>repeated uint32 links = 4;</code>
         */
        public Builder addAllLinks(
            java.lang.Iterable<? extends java.lang.Integer> values) {
          ensureLinksIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, links_);
          onChanged();
          return this;
        }
        /**
         * <code>repeated uint32 links = 4;</code>
         */
        public Builder clearLinks() {
          links_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000008);
          onChanged();
          return this;
        }
  
        private java.lang.Object description_ = "";
        /**
         * <code>optional string description = 5;</code>
         */
        public boolean hasDescription() {
          return ((bitField0_ & 0x00000010) == 0x00000010);
        }
        /**
         * <code>optional string description = 5;</code>
         */
        public java.lang.String getDescription() {
          java.lang.Object ref = description_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              description_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>optional string description = 5;</code>
         */
        public com.google.protobuf.ByteString
            getDescriptionBytes() {
          java.lang.Object ref = description_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            description_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>optional string description = 5;</code>
         */
        public Builder setDescription(
            java.lang.String value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000010;
          description_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional string description = 5;</code>
         */
        public Builder clearDescription() {
          bitField0_ = (bitField0_ & ~0x00000010);
          description_ = getDefaultInstance().getDescription();
          onChanged();
          return this;
        }
        /**
         * <code>optional string description = 5;</code>
         */
        public Builder setDescriptionBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000010;
          description_ = value;
          onChanged();
          return this;
        }
  
        private java.util.List<java.lang.Integer> linksAdd_ = java.util.Collections.emptyList();
        private void ensureLinksAddIsMutable() {
          if (!((bitField0_ & 0x00000020) == 0x00000020)) {
            linksAdd_ = new java.util.ArrayList<java.lang.Integer>(linksAdd_);
            bitField0_ |= 0x00000020;
           }
        }
        /**
         * <code>repeated uint32 links_add = 6;</code>
         */
        public java.util.List<java.lang.Integer>
            getLinksAddList() {
          return java.util.Collections.unmodifiableList(linksAdd_);
        }
        /**
         * <code>repeated uint32 links_add = 6;</code>
         */
        public int getLinksAddCount() {
          return linksAdd_.size();
        }
        /**
         * <code>repeated uint32 links_add = 6;</code>
         */
        public int getLinksAdd(int index) {
          return linksAdd_.get(index);
        }
        /**
         * <code>repeated uint32 links_add = 6;</code>
         */
        public Builder setLinksAdd(
            int index, int value) {
          ensureLinksAddIsMutable();
          linksAdd_.set(index, value);
          onChanged();
          return this;
        }
        /**
         * <code>repeated uint32 links_add = 6;</code>
         */
        public Builder addLinksAdd(int value) {
          ensureLinksAddIsMutable();
          linksAdd_.add(value);
          onChanged();
          return this;
        }
        /**
         * <code>repeated uint32 links_add = 6;</code>
         */
        public Builder addAllLinksAdd(
            java.lang.Iterable<? extends java.lang.Integer> values) {
          ensureLinksAddIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, linksAdd_);
          onChanged();
          return this;
        }
        /**
         * <code>repeated uint32 links_add = 6;</code>
         */
        public Builder clearLinksAdd() {
          linksAdd_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000020);
          onChanged();
          return this;
        }
  
        private java.util.List<java.lang.Integer> linksRemove_ = java.util.Collections.emptyList();
        private void ensureLinksRemoveIsMutable() {
          if (!((bitField0_ & 0x00000040) == 0x00000040)) {
            linksRemove_ = new java.util.ArrayList<java.lang.Integer>(linksRemove_);
            bitField0_ |= 0x00000040;
           }
        }
        /**
         * <code>repeated uint32 links_remove = 7;</code>
         */
        public java.util.List<java.lang.Integer>
            getLinksRemoveList() {
          return java.util.Collections.unmodifiableList(linksRemove_);
        }
        /**
         * <code>repeated uint32 links_remove = 7;</code>
         */
        public int getLinksRemoveCount() {
          return linksRemove_.size();
        }
        /**
         * <code>repeated uint32 links_remove = 7;</code>
         */
        public int getLinksRemove(int index) {
          return linksRemove_.get(index);
        }
        /**
         * <code>repeated uint32 links_remove = 7;</code>
         */
        public Builder setLinksRemove(
            int index, int value) {
          ensureLinksRemoveIsMutable();
          linksRemove_.set(index, value);
          onChanged();
          return this;
        }
        /**
         * <code>repeated uint32 links_remove = 7;</code>
         */
        public Builder addLinksRemove(int value) {
          ensureLinksRemoveIsMutable();
          linksRemove_.add(value);
          onChanged();
          return this;
        }
        /**
         * <code>repeated uint32 links_remove = 7;</code>
         */
        public Builder addAllLinksRemove(
            java.lang.Iterable<? extends java.lang.Integer> values) {
          ensureLinksRemoveIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, linksRemove_);
          onChanged();
          return this;
        }
        /**
         * <code>repeated uint32 links_remove = 7;</code>
         */
        public Builder clearLinksRemove() {
          linksRemove_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000040);
          onChanged();
          return this;
        }
  
        private boolean temporary_ ;
        /**
         * <code>optional bool temporary = 8 [default = false];</code>
         */
        public boolean hasTemporary() {
          return ((bitField0_ & 0x00000080) == 0x00000080);
        }
        /**
         * <code>optional bool temporary = 8 [default = false];</code>
         */
        public boolean getTemporary() {
          return temporary_;
        }
        /**
         * <code>optional bool temporary = 8 [default = false];</code>
         */
        public Builder setTemporary(boolean value) {
          bitField0_ |= 0x00000080;
          temporary_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional bool temporary = 8 [default = false];</code>
         */
        public Builder clearTemporary() {
          bitField0_ = (bitField0_ & ~0x00000080);
          temporary_ = false;
          onChanged();
          return this;
        }
  
        private int position_ ;
        /**
         * <code>optional int32 position = 9 [default = 0];</code>
         */
        public boolean hasPosition() {
          return ((bitField0_ & 0x00000100) == 0x00000100);
        }
        /**
         * <code>optional int32 position = 9 [default = 0];</code>
         */
        public int getPosition() {
          return position_;
        }
        /**
         * <code>optional int32 position = 9 [default = 0];</code>
         */
        public Builder setPosition(int value) {
          bitField0_ |= 0x00000100;
          position_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional int32 position = 9 [default = 0];</code>
         */
        public Builder clearPosition() {
          bitField0_ = (bitField0_ & ~0x00000100);
          position_ = 0;
          onChanged();
          return this;
        }
  
        private com.google.protobuf.ByteString descriptionHash_ = com.google.protobuf.ByteString.EMPTY;
        /**
         * <code>optional bytes description_hash = 10;</code>
         */
        public boolean hasDescriptionHash() {
          return ((bitField0_ & 0x00000200) == 0x00000200);
        }
        /**
         * <code>optional bytes description_hash = 10;</code>
         */
        public com.google.protobuf.ByteString getDescriptionHash() {
          return descriptionHash_;
        }
        /**
         * <code>optional bytes description_hash = 10;</code>
         */
        public Builder setDescriptionHash(com.google.protobuf.ByteString value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000200;
          descriptionHash_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional bytes description_hash = 10;</code>
         */
        public Builder clearDescriptionHash() {
          bitField0_ = (bitField0_ & ~0x00000200);
          descriptionHash_ = getDefaultInstance().getDescriptionHash();
          onChanged();
          return this;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }
  
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:MumbleProto.ChannelState)
      }
  
      // @@protoc_insertion_point(class_scope:MumbleProto.ChannelState)
      private static final com.morlunk.jumble.protobuf.Mumble.ChannelState DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.morlunk.jumble.protobuf.Mumble.ChannelState();
      }
  
      public static com.morlunk.jumble.protobuf.Mumble.ChannelState getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      @java.lang.Deprecated public static final com.google.protobuf.Parser<ChannelState>
          PARSER = new com.google.protobuf.AbstractParser<ChannelState>() {
        public ChannelState parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return new ChannelState(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<ChannelState> parser() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.google.protobuf.Parser<ChannelState> getParserForType() {
        return PARSER;
      }
  
      public com.morlunk.jumble.protobuf.Mumble.ChannelState getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface UserRemoveOrBuilder extends
        // @@protoc_insertion_point(interface_extends:MumbleProto.UserRemove)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <code>required uint32 session = 1;</code>
       */
      boolean hasSession();
      /**
       * <code>required uint32 session = 1;</code>
       */
      int getSession();
  
      /**
       * <code>optional uint32 actor = 2;</code>
       */
      boolean hasActor();
      /**
       * <code>optional uint32 actor = 2;</code>
       */
      int getActor();
  
      /**
       * <code>optional string reason = 3;</code>
       */
      boolean hasReason();
      /**
       * <code>optional string reason = 3;</code>
       */
      java.lang.String getReason();
      /**
       * <code>optional string reason = 3;</code>
       */
      com.google.protobuf.ByteString
          getReasonBytes();
  
      /**
       * <code>optional bool ban = 4;</code>
       */
      boolean hasBan();
      /**
       * <code>optional bool ban = 4;</code>
       */
      boolean getBan();
    }
    /**
     * Protobuf type {@code MumbleProto.UserRemove}
     */
    public  static final class UserRemove extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:MumbleProto.UserRemove)
        UserRemoveOrBuilder {
      // Use UserRemove.newBuilder() to construct.
      private UserRemove(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private UserRemove() {
        session_ = 0;
        actor_ = 0;
        reason_ = "";
        ban_ = false;
      }
  
      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private UserRemove(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        int mutable_bitField0_ = 0;
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder();
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              default: {
                if (!parseUnknownField(input, unknownFields,
                                       extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 8: {
                bitField0_ |= 0x00000001;
                session_ = input.readUInt32();
                break;
              }
              case 16: {
                bitField0_ |= 0x00000002;
                actor_ = input.readUInt32();
                break;
              }
              case 26: {
                com.google.protobuf.ByteString bs = input.readBytes();
                bitField0_ |= 0x00000004;
                reason_ = bs;
                break;
              }
              case 32: {
                bitField0_ |= 0x00000008;
                ban_ = input.readBool();
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_UserRemove_descriptor;
      }
  
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_UserRemove_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.morlunk.jumble.protobuf.Mumble.UserRemove.class, com.morlunk.jumble.protobuf.Mumble.UserRemove.Builder.class);
      }
  
      private int bitField0_;
      public static final int SESSION_FIELD_NUMBER = 1;
      private int session_;
      /**
       * <code>required uint32 session = 1;</code>
       */
      public boolean hasSession() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required uint32 session = 1;</code>
       */
      public int getSession() {
        return session_;
      }
  
      public static final int ACTOR_FIELD_NUMBER = 2;
      private int actor_;
      /**
       * <code>optional uint32 actor = 2;</code>
       */
      public boolean hasActor() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional uint32 actor = 2;</code>
       */
      public int getActor() {
        return actor_;
      }
  
      public static final int REASON_FIELD_NUMBER = 3;
      private volatile java.lang.Object reason_;
      /**
       * <code>optional string reason = 3;</code>
       */
      public boolean hasReason() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>optional string reason = 3;</code>
       */
      public java.lang.String getReason() {
        java.lang.Object ref = reason_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            reason_ = s;
          }
          return s;
        }
      }
      /**
       * <code>optional string reason = 3;</code>
       */
      public com.google.protobuf.ByteString
          getReasonBytes() {
        java.lang.Object ref = reason_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          reason_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
  
      public static final int BAN_FIELD_NUMBER = 4;
      private boolean ban_;
      /**
       * <code>optional bool ban = 4;</code>
       */
      public boolean hasBan() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>optional bool ban = 4;</code>
       */
      public boolean getBan() {
        return ban_;
      }
  
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        if (!hasSession()) {
          memoizedIsInitialized = 0;
          return false;
        }
        memoizedIsInitialized = 1;
        return true;
      }
  
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeUInt32(1, session_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          output.writeUInt32(2, actor_);
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 3, reason_);
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          output.writeBool(4, ban_);
        }
        unknownFields.writeTo(output);
      }
  
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(1, session_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(2, actor_);
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, reason_);
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBoolSize(4, ban_);
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }
  
      private static final long serialVersionUID = 0L;
      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.morlunk.jumble.protobuf.Mumble.UserRemove)) {
          return super.equals(obj);
        }
        com.morlunk.jumble.protobuf.Mumble.UserRemove other = (com.morlunk.jumble.protobuf.Mumble.UserRemove) obj;
  
        boolean result = true;
        result = result && (hasSession() == other.hasSession());
        if (hasSession()) {
          result = result && (getSession()
              == other.getSession());
        }
        result = result && (hasActor() == other.hasActor());
        if (hasActor()) {
          result = result && (getActor()
              == other.getActor());
        }
        result = result && (hasReason() == other.hasReason());
        if (hasReason()) {
          result = result && getReason()
              .equals(other.getReason());
        }
        result = result && (hasBan() == other.hasBan());
        if (hasBan()) {
          result = result && (getBan()
              == other.getBan());
        }
        result = result && unknownFields.equals(other.unknownFields);
        return result;
      }
  
      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptorForType().hashCode();
        if (hasSession()) {
          hash = (37 * hash) + SESSION_FIELD_NUMBER;
          hash = (53 * hash) + getSession();
        }
        if (hasActor()) {
          hash = (37 * hash) + ACTOR_FIELD_NUMBER;
          hash = (53 * hash) + getActor();
        }
        if (hasReason()) {
          hash = (37 * hash) + REASON_FIELD_NUMBER;
          hash = (53 * hash) + getReason().hashCode();
        }
        if (hasBan()) {
          hash = (37 * hash) + BAN_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
              getBan());
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static com.morlunk.jumble.protobuf.Mumble.UserRemove parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.morlunk.jumble.protobuf.Mumble.UserRemove parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.UserRemove parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.morlunk.jumble.protobuf.Mumble.UserRemove parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.UserRemove parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.morlunk.jumble.protobuf.Mumble.UserRemove parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.UserRemove parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.morlunk.jumble.protobuf.Mumble.UserRemove parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.UserRemove parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.morlunk.jumble.protobuf.Mumble.UserRemove parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
  
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(com.morlunk.jumble.protobuf.Mumble.UserRemove prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }
  
      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code MumbleProto.UserRemove}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:MumbleProto.UserRemove)
          com.morlunk.jumble.protobuf.Mumble.UserRemoveOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_UserRemove_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_UserRemove_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.morlunk.jumble.protobuf.Mumble.UserRemove.class, com.morlunk.jumble.protobuf.Mumble.UserRemove.Builder.class);
        }
  
        // Construct using com.morlunk.jumble.protobuf.Mumble.UserRemove.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
  
        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
          }
        }
        public Builder clear() {
          super.clear();
          session_ = 0;
          bitField0_ = (bitField0_ & ~0x00000001);
          actor_ = 0;
          bitField0_ = (bitField0_ & ~0x00000002);
          reason_ = "";
          bitField0_ = (bitField0_ & ~0x00000004);
          ban_ = false;
          bitField0_ = (bitField0_ & ~0x00000008);
          return this;
        }
  
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_UserRemove_descriptor;
        }
  
        public com.morlunk.jumble.protobuf.Mumble.UserRemove getDefaultInstanceForType() {
          return com.morlunk.jumble.protobuf.Mumble.UserRemove.getDefaultInstance();
        }
  
        public com.morlunk.jumble.protobuf.Mumble.UserRemove build() {
          com.morlunk.jumble.protobuf.Mumble.UserRemove result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        public com.morlunk.jumble.protobuf.Mumble.UserRemove buildPartial() {
          com.morlunk.jumble.protobuf.Mumble.UserRemove result = new com.morlunk.jumble.protobuf.Mumble.UserRemove(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.session_ = session_;
          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
            to_bitField0_ |= 0x00000002;
          }
          result.actor_ = actor_;
          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
            to_bitField0_ |= 0x00000004;
          }
          result.reason_ = reason_;
          if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
            to_bitField0_ |= 0x00000008;
          }
          result.ban_ = ban_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
  
        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.setField(field, value);
        }
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return (Builder) super.clearField(field);
        }
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return (Builder) super.clearOneof(oneof);
        }
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.morlunk.jumble.protobuf.Mumble.UserRemove) {
            return mergeFrom((com.morlunk.jumble.protobuf.Mumble.UserRemove)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(com.morlunk.jumble.protobuf.Mumble.UserRemove other) {
          if (other == com.morlunk.jumble.protobuf.Mumble.UserRemove.getDefaultInstance()) return this;
          if (other.hasSession()) {
            setSession(other.getSession());
          }
          if (other.hasActor()) {
            setActor(other.getActor());
          }
          if (other.hasReason()) {
            bitField0_ |= 0x00000004;
            reason_ = other.reason_;
            onChanged();
          }
          if (other.hasBan()) {
            setBan(other.getBan());
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }
  
        public final boolean isInitialized() {
          if (!hasSession()) {
            return false;
          }
          return true;
        }
  
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.morlunk.jumble.protobuf.Mumble.UserRemove parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (com.morlunk.jumble.protobuf.Mumble.UserRemove) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;
  
        private int session_ ;
        /**
         * <code>required uint32 session = 1;</code>
         */
        public boolean hasSession() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <code>required uint32 session = 1;</code>
         */
        public int getSession() {
          return session_;
        }
        /**
         * <code>required uint32 session = 1;</code>
         */
        public Builder setSession(int value) {
          bitField0_ |= 0x00000001;
          session_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>required uint32 session = 1;</code>
         */
        public Builder clearSession() {
          bitField0_ = (bitField0_ & ~0x00000001);
          session_ = 0;
          onChanged();
          return this;
        }
  
        private int actor_ ;
        /**
         * <code>optional uint32 actor = 2;</code>
         */
        public boolean hasActor() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * <code>optional uint32 actor = 2;</code>
         */
        public int getActor() {
          return actor_;
        }
        /**
         * <code>optional uint32 actor = 2;</code>
         */
        public Builder setActor(int value) {
          bitField0_ |= 0x00000002;
          actor_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional uint32 actor = 2;</code>
         */
        public Builder clearActor() {
          bitField0_ = (bitField0_ & ~0x00000002);
          actor_ = 0;
          onChanged();
          return this;
        }
  
        private java.lang.Object reason_ = "";
        /**
         * <code>optional string reason = 3;</code>
         */
        public boolean hasReason() {
          return ((bitField0_ & 0x00000004) == 0x00000004);
        }
        /**
         * <code>optional string reason = 3;</code>
         */
        public java.lang.String getReason() {
          java.lang.Object ref = reason_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              reason_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>optional string reason = 3;</code>
         */
        public com.google.protobuf.ByteString
            getReasonBytes() {
          java.lang.Object ref = reason_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            reason_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>optional string reason = 3;</code>
         */
        public Builder setReason(
            java.lang.String value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000004;
          reason_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional string reason = 3;</code>
         */
        public Builder clearReason() {
          bitField0_ = (bitField0_ & ~0x00000004);
          reason_ = getDefaultInstance().getReason();
          onChanged();
          return this;
        }
        /**
         * <code>optional string reason = 3;</code>
         */
        public Builder setReasonBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000004;
          reason_ = value;
          onChanged();
          return this;
        }
  
        private boolean ban_ ;
        /**
         * <code>optional bool ban = 4;</code>
         */
        public boolean hasBan() {
          return ((bitField0_ & 0x00000008) == 0x00000008);
        }
        /**
         * <code>optional bool ban = 4;</code>
         */
        public boolean getBan() {
          return ban_;
        }
        /**
         * <code>optional bool ban = 4;</code>
         */
        public Builder setBan(boolean value) {
          bitField0_ |= 0x00000008;
          ban_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional bool ban = 4;</code>
         */
        public Builder clearBan() {
          bitField0_ = (bitField0_ & ~0x00000008);
          ban_ = false;
          onChanged();
          return this;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }
  
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:MumbleProto.UserRemove)
      }
  
      // @@protoc_insertion_point(class_scope:MumbleProto.UserRemove)
      private static final com.morlunk.jumble.protobuf.Mumble.UserRemove DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.morlunk.jumble.protobuf.Mumble.UserRemove();
      }
  
      public static com.morlunk.jumble.protobuf.Mumble.UserRemove getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      @java.lang.Deprecated public static final com.google.protobuf.Parser<UserRemove>
          PARSER = new com.google.protobuf.AbstractParser<UserRemove>() {
        public UserRemove parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return new UserRemove(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<UserRemove> parser() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.google.protobuf.Parser<UserRemove> getParserForType() {
        return PARSER;
      }
  
      public com.morlunk.jumble.protobuf.Mumble.UserRemove getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface UserStateOrBuilder extends
        // @@protoc_insertion_point(interface_extends:MumbleProto.UserState)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <code>optional uint32 session = 1;</code>
       */
      boolean hasSession();
      /**
       * <code>optional uint32 session = 1;</code>
       */
      int getSession();
  
      /**
       * <code>optional uint32 actor = 2;</code>
       */
      boolean hasActor();
      /**
       * <code>optional uint32 actor = 2;</code>
       */
      int getActor();
  
      /**
       * <code>optional string name = 3;</code>
       */
      boolean hasName();
      /**
       * <code>optional string name = 3;</code>
       */
      java.lang.String getName();
      /**
       * <code>optional string name = 3;</code>
       */
      com.google.protobuf.ByteString
          getNameBytes();
  
      /**
       * <code>optional uint32 user_id = 4;</code>
       */
      boolean hasUserId();
      /**
       * <code>optional uint32 user_id = 4;</code>
       */
      int getUserId();
  
      /**
       * <code>optional uint32 channel_id = 5;</code>
       */
      boolean hasChannelId();
      /**
       * <code>optional uint32 channel_id = 5;</code>
       */
      int getChannelId();
  
      /**
       * <code>optional bool mute = 6;</code>
       */
      boolean hasMute();
      /**
       * <code>optional bool mute = 6;</code>
       */
      boolean getMute();
  
      /**
       * <code>optional bool deaf = 7;</code>
       */
      boolean hasDeaf();
      /**
       * <code>optional bool deaf = 7;</code>
       */
      boolean getDeaf();
  
      /**
       * <code>optional bool suppress = 8;</code>
       */
      boolean hasSuppress();
      /**
       * <code>optional bool suppress = 8;</code>
       */
      boolean getSuppress();
  
      /**
       * <code>optional bool self_mute = 9;</code>
       */
      boolean hasSelfMute();
      /**
       * <code>optional bool self_mute = 9;</code>
       */
      boolean getSelfMute();
  
      /**
       * <code>optional bool self_deaf = 10;</code>
       */
      boolean hasSelfDeaf();
      /**
       * <code>optional bool self_deaf = 10;</code>
       */
      boolean getSelfDeaf();
  
      /**
       * <code>optional bytes texture = 11;</code>
       */
      boolean hasTexture();
      /**
       * <code>optional bytes texture = 11;</code>
       */
      com.google.protobuf.ByteString getTexture();
  
      /**
       * <code>optional bytes plugin_context = 12;</code>
       */
      boolean hasPluginContext();
      /**
       * <code>optional bytes plugin_context = 12;</code>
       */
      com.google.protobuf.ByteString getPluginContext();
  
      /**
       * <code>optional string plugin_identity = 13;</code>
       */
      boolean hasPluginIdentity();
      /**
       * <code>optional string plugin_identity = 13;</code>
       */
      java.lang.String getPluginIdentity();
      /**
       * <code>optional string plugin_identity = 13;</code>
       */
      com.google.protobuf.ByteString
          getPluginIdentityBytes();
  
      /**
       * <code>optional string comment = 14;</code>
       */
      boolean hasComment();
      /**
       * <code>optional string comment = 14;</code>
       */
      java.lang.String getComment();
      /**
       * <code>optional string comment = 14;</code>
       */
      com.google.protobuf.ByteString
          getCommentBytes();
  
      /**
       * <code>optional string hash = 15;</code>
       */
      boolean hasHash();
      /**
       * <code>optional string hash = 15;</code>
       */
      java.lang.String getHash();
      /**
       * <code>optional string hash = 15;</code>
       */
      com.google.protobuf.ByteString
          getHashBytes();
  
      /**
       * <code>optional bytes comment_hash = 16;</code>
       */
      boolean hasCommentHash();
      /**
       * <code>optional bytes comment_hash = 16;</code>
       */
      com.google.protobuf.ByteString getCommentHash();
  
      /**
       * <code>optional bytes texture_hash = 17;</code>
       */
      boolean hasTextureHash();
      /**
       * <code>optional bytes texture_hash = 17;</code>
       */
      com.google.protobuf.ByteString getTextureHash();
  
      /**
       * <code>optional bool priority_speaker = 18;</code>
       */
      boolean hasPrioritySpeaker();
      /**
       * <code>optional bool priority_speaker = 18;</code>
       */
      boolean getPrioritySpeaker();
  
      /**
       * <code>optional bool recording = 19;</code>
       */
      boolean hasRecording();
      /**
       * <code>optional bool recording = 19;</code>
       */
      boolean getRecording();
    }
    /**
     * Protobuf type {@code MumbleProto.UserState}
     */
    public  static final class UserState extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:MumbleProto.UserState)
        UserStateOrBuilder {
      // Use UserState.newBuilder() to construct.
      private UserState(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private UserState() {
        session_ = 0;
        actor_ = 0;
        name_ = "";
        userId_ = 0;
        channelId_ = 0;
        mute_ = false;
        deaf_ = false;
        suppress_ = false;
        selfMute_ = false;
        selfDeaf_ = false;
        texture_ = com.google.protobuf.ByteString.EMPTY;
        pluginContext_ = com.google.protobuf.ByteString.EMPTY;
        pluginIdentity_ = "";
        comment_ = "";
        hash_ = "";
        commentHash_ = com.google.protobuf.ByteString.EMPTY;
        textureHash_ = com.google.protobuf.ByteString.EMPTY;
        prioritySpeaker_ = false;
        recording_ = false;
      }
  
      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private UserState(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        int mutable_bitField0_ = 0;
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder();
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              default: {
                if (!parseUnknownField(input, unknownFields,
                                       extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 8: {
                bitField0_ |= 0x00000001;
                session_ = input.readUInt32();
                break;
              }
              case 16: {
                bitField0_ |= 0x00000002;
                actor_ = input.readUInt32();
                break;
              }
              case 26: {
                com.google.protobuf.ByteString bs = input.readBytes();
                bitField0_ |= 0x00000004;
                name_ = bs;
                break;
              }
              case 32: {
                bitField0_ |= 0x00000008;
                userId_ = input.readUInt32();
                break;
              }
              case 40: {
                bitField0_ |= 0x00000010;
                channelId_ = input.readUInt32();
                break;
              }
              case 48: {
                bitField0_ |= 0x00000020;
                mute_ = input.readBool();
                break;
              }
              case 56: {
                bitField0_ |= 0x00000040;
                deaf_ = input.readBool();
                break;
              }
              case 64: {
                bitField0_ |= 0x00000080;
                suppress_ = input.readBool();
                break;
              }
              case 72: {
                bitField0_ |= 0x00000100;
                selfMute_ = input.readBool();
                break;
              }
              case 80: {
                bitField0_ |= 0x00000200;
                selfDeaf_ = input.readBool();
                break;
              }
              case 90: {
                bitField0_ |= 0x00000400;
                texture_ = input.readBytes();
                break;
              }
              case 98: {
                bitField0_ |= 0x00000800;
                pluginContext_ = input.readBytes();
                break;
              }
              case 106: {
                com.google.protobuf.ByteString bs = input.readBytes();
                bitField0_ |= 0x00001000;
                pluginIdentity_ = bs;
                break;
              }
              case 114: {
                com.google.protobuf.ByteString bs = input.readBytes();
                bitField0_ |= 0x00002000;
                comment_ = bs;
                break;
              }
              case 122: {
                com.google.protobuf.ByteString bs = input.readBytes();
                bitField0_ |= 0x00004000;
                hash_ = bs;
                break;
              }
              case 130: {
                bitField0_ |= 0x00008000;
                commentHash_ = input.readBytes();
                break;
              }
              case 138: {
                bitField0_ |= 0x00010000;
                textureHash_ = input.readBytes();
                break;
              }
              case 144: {
                bitField0_ |= 0x00020000;
                prioritySpeaker_ = input.readBool();
                break;
              }
              case 152: {
                bitField0_ |= 0x00040000;
                recording_ = input.readBool();
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_UserState_descriptor;
      }
  
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_UserState_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.morlunk.jumble.protobuf.Mumble.UserState.class, com.morlunk.jumble.protobuf.Mumble.UserState.Builder.class);
      }
  
      private int bitField0_;
      public static final int SESSION_FIELD_NUMBER = 1;
      private int session_;
      /**
       * <code>optional uint32 session = 1;</code>
       */
      public boolean hasSession() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>optional uint32 session = 1;</code>
       */
      public int getSession() {
        return session_;
      }
  
      public static final int ACTOR_FIELD_NUMBER = 2;
      private int actor_;
      /**
       * <code>optional uint32 actor = 2;</code>
       */
      public boolean hasActor() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional uint32 actor = 2;</code>
       */
      public int getActor() {
        return actor_;
      }
  
      public static final int NAME_FIELD_NUMBER = 3;
      private volatile java.lang.Object name_;
      /**
       * <code>optional string name = 3;</code>
       */
      public boolean hasName() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>optional string name = 3;</code>
       */
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            name_ = s;
          }
          return s;
        }
      }
      /**
       * <code>optional string name = 3;</code>
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
  
      public static final int USER_ID_FIELD_NUMBER = 4;
      private int userId_;
      /**
       * <code>optional uint32 user_id = 4;</code>
       */
      public boolean hasUserId() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>optional uint32 user_id = 4;</code>
       */
      public int getUserId() {
        return userId_;
      }
  
      public static final int CHANNEL_ID_FIELD_NUMBER = 5;
      private int channelId_;
      /**
       * <code>optional uint32 channel_id = 5;</code>
       */
      public boolean hasChannelId() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      /**
       * <code>optional uint32 channel_id = 5;</code>
       */
      public int getChannelId() {
        return channelId_;
      }
  
      public static final int MUTE_FIELD_NUMBER = 6;
      private boolean mute_;
      /**
       * <code>optional bool mute = 6;</code>
       */
      public boolean hasMute() {
        return ((bitField0_ & 0x00000020) == 0x00000020);
      }
      /**
       * <code>optional bool mute = 6;</code>
       */
      public boolean getMute() {
        return mute_;
      }
  
      public static final int DEAF_FIELD_NUMBER = 7;
      private boolean deaf_;
      /**
       * <code>optional bool deaf = 7;</code>
       */
      public boolean hasDeaf() {
        return ((bitField0_ & 0x00000040) == 0x00000040);
      }
      /**
       * <code>optional bool deaf = 7;</code>
       */
      public boolean getDeaf() {
        return deaf_;
      }
  
      public static final int SUPPRESS_FIELD_NUMBER = 8;
      private boolean suppress_;
      /**
       * <code>optional bool suppress = 8;</code>
       */
      public boolean hasSuppress() {
        return ((bitField0_ & 0x00000080) == 0x00000080);
      }
      /**
       * <code>optional bool suppress = 8;</code>
       */
      public boolean getSuppress() {
        return suppress_;
      }
  
      public static final int SELF_MUTE_FIELD_NUMBER = 9;
      private boolean selfMute_;
      /**
       * <code>optional bool self_mute = 9;</code>
       */
      public boolean hasSelfMute() {
        return ((bitField0_ & 0x00000100) == 0x00000100);
      }
      /**
       * <code>optional bool self_mute = 9;</code>
       */
      public boolean getSelfMute() {
        return selfMute_;
      }
  
      public static final int SELF_DEAF_FIELD_NUMBER = 10;
      private boolean selfDeaf_;
      /**
       * <code>optional bool self_deaf = 10;</code>
       */
      public boolean hasSelfDeaf() {
        return ((bitField0_ & 0x00000200) == 0x00000200);
      }
      /**
       * <code>optional bool self_deaf = 10;</code>
       */
      public boolean getSelfDeaf() {
        return selfDeaf_;
      }
  
      public static final int TEXTURE_FIELD_NUMBER = 11;
      private com.google.protobuf.ByteString texture_;
      /**
       * <code>optional bytes texture = 11;</code>
       */
      public boolean hasTexture() {
        return ((bitField0_ & 0x00000400) == 0x00000400);
      }
      /**
       * <code>optional bytes texture = 11;</code>
       */
      public com.google.protobuf.ByteString getTexture() {
        return texture_;
      }
  
      public static final int PLUGIN_CONTEXT_FIELD_NUMBER = 12;
      private com.google.protobuf.ByteString pluginContext_;
      /**
       * <code>optional bytes plugin_context = 12;</code>
       */
      public boolean hasPluginContext() {
        return ((bitField0_ & 0x00000800) == 0x00000800);
      }
      /**
       * <code>optional bytes plugin_context = 12;</code>
       */
      public com.google.protobuf.ByteString getPluginContext() {
        return pluginContext_;
      }
  
      public static final int PLUGIN_IDENTITY_FIELD_NUMBER = 13;
      private volatile java.lang.Object pluginIdentity_;
      /**
       * <code>optional string plugin_identity = 13;</code>
       */
      public boolean hasPluginIdentity() {
        return ((bitField0_ & 0x00001000) == 0x00001000);
      }
      /**
       * <code>optional string plugin_identity = 13;</code>
       */
      public java.lang.String getPluginIdentity() {
        java.lang.Object ref = pluginIdentity_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            pluginIdentity_ = s;
          }
          return s;
        }
      }
      /**
       * <code>optional string plugin_identity = 13;</code>
       */
      public com.google.protobuf.ByteString
          getPluginIdentityBytes() {
        java.lang.Object ref = pluginIdentity_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          pluginIdentity_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
  
      public static final int COMMENT_FIELD_NUMBER = 14;
      private volatile java.lang.Object comment_;
      /**
       * <code>optional string comment = 14;</code>
       */
      public boolean hasComment() {
        return ((bitField0_ & 0x00002000) == 0x00002000);
      }
      /**
       * <code>optional string comment = 14;</code>
       */
      public java.lang.String getComment() {
        java.lang.Object ref = comment_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            comment_ = s;
          }
          return s;
        }
      }
      /**
       * <code>optional string comment = 14;</code>
       */
      public com.google.protobuf.ByteString
          getCommentBytes() {
        java.lang.Object ref = comment_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          comment_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
  
      public static final int HASH_FIELD_NUMBER = 15;
      private volatile java.lang.Object hash_;
      /**
       * <code>optional string hash = 15;</code>
       */
      public boolean hasHash() {
        return ((bitField0_ & 0x00004000) == 0x00004000);
      }
      /**
       * <code>optional string hash = 15;</code>
       */
      public java.lang.String getHash() {
        java.lang.Object ref = hash_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            hash_ = s;
          }
          return s;
        }
      }
      /**
       * <code>optional string hash = 15;</code>
       */
      public com.google.protobuf.ByteString
          getHashBytes() {
        java.lang.Object ref = hash_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          hash_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
  
      public static final int COMMENT_HASH_FIELD_NUMBER = 16;
      private com.google.protobuf.ByteString commentHash_;
      /**
       * <code>optional bytes comment_hash = 16;</code>
       */
      public boolean hasCommentHash() {
        return ((bitField0_ & 0x00008000) == 0x00008000);
      }
      /**
       * <code>optional bytes comment_hash = 16;</code>
       */
      public com.google.protobuf.ByteString getCommentHash() {
        return commentHash_;
      }
  
      public static final int TEXTURE_HASH_FIELD_NUMBER = 17;
      private com.google.protobuf.ByteString textureHash_;
      /**
       * <code>optional bytes texture_hash = 17;</code>
       */
      public boolean hasTextureHash() {
        return ((bitField0_ & 0x00010000) == 0x00010000);
      }
      /**
       * <code>optional bytes texture_hash = 17;</code>
       */
      public com.google.protobuf.ByteString getTextureHash() {
        return textureHash_;
      }
  
      public static final int PRIORITY_SPEAKER_FIELD_NUMBER = 18;
      private boolean prioritySpeaker_;
      /**
       * <code>optional bool priority_speaker = 18;</code>
       */
      public boolean hasPrioritySpeaker() {
        return ((bitField0_ & 0x00020000) == 0x00020000);
      }
      /**
       * <code>optional bool priority_speaker = 18;</code>
       */
      public boolean getPrioritySpeaker() {
        return prioritySpeaker_;
      }
  
      public static final int RECORDING_FIELD_NUMBER = 19;
      private boolean recording_;
      /**
       * <code>optional bool recording = 19;</code>
       */
      public boolean hasRecording() {
        return ((bitField0_ & 0x00040000) == 0x00040000);
      }
      /**
       * <code>optional bool recording = 19;</code>
       */
      public boolean getRecording() {
        return recording_;
      }
  
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        memoizedIsInitialized = 1;
        return true;
      }
  
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeUInt32(1, session_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          output.writeUInt32(2, actor_);
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 3, name_);
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          output.writeUInt32(4, userId_);
        }
        if (((bitField0_ & 0x00000010) == 0x00000010)) {
          output.writeUInt32(5, channelId_);
        }
        if (((bitField0_ & 0x00000020) == 0x00000020)) {
          output.writeBool(6, mute_);
        }
        if (((bitField0_ & 0x00000040) == 0x00000040)) {
          output.writeBool(7, deaf_);
        }
        if (((bitField0_ & 0x00000080) == 0x00000080)) {
          output.writeBool(8, suppress_);
        }
        if (((bitField0_ & 0x00000100) == 0x00000100)) {
          output.writeBool(9, selfMute_);
        }
        if (((bitField0_ & 0x00000200) == 0x00000200)) {
          output.writeBool(10, selfDeaf_);
        }
        if (((bitField0_ & 0x00000400) == 0x00000400)) {
          output.writeBytes(11, texture_);
        }
        if (((bitField0_ & 0x00000800) == 0x00000800)) {
          output.writeBytes(12, pluginContext_);
        }
        if (((bitField0_ & 0x00001000) == 0x00001000)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 13, pluginIdentity_);
        }
        if (((bitField0_ & 0x00002000) == 0x00002000)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 14, comment_);
        }
        if (((bitField0_ & 0x00004000) == 0x00004000)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 15, hash_);
        }
        if (((bitField0_ & 0x00008000) == 0x00008000)) {
          output.writeBytes(16, commentHash_);
        }
        if (((bitField0_ & 0x00010000) == 0x00010000)) {
          output.writeBytes(17, textureHash_);
        }
        if (((bitField0_ & 0x00020000) == 0x00020000)) {
          output.writeBool(18, prioritySpeaker_);
        }
        if (((bitField0_ & 0x00040000) == 0x00040000)) {
          output.writeBool(19, recording_);
        }
        unknownFields.writeTo(output);
      }
  
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(1, session_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(2, actor_);
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, name_);
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(4, userId_);
        }
        if (((bitField0_ & 0x00000010) == 0x00000010)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(5, channelId_);
        }
        if (((bitField0_ & 0x00000020) == 0x00000020)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBoolSize(6, mute_);
        }
        if (((bitField0_ & 0x00000040) == 0x00000040)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBoolSize(7, deaf_);
        }
        if (((bitField0_ & 0x00000080) == 0x00000080)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBoolSize(8, suppress_);
        }
        if (((bitField0_ & 0x00000100) == 0x00000100)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBoolSize(9, selfMute_);
        }
        if (((bitField0_ & 0x00000200) == 0x00000200)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBoolSize(10, selfDeaf_);
        }
        if (((bitField0_ & 0x00000400) == 0x00000400)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(11, texture_);
        }
        if (((bitField0_ & 0x00000800) == 0x00000800)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(12, pluginContext_);
        }
        if (((bitField0_ & 0x00001000) == 0x00001000)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(13, pluginIdentity_);
        }
        if (((bitField0_ & 0x00002000) == 0x00002000)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(14, comment_);
        }
        if (((bitField0_ & 0x00004000) == 0x00004000)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(15, hash_);
        }
        if (((bitField0_ & 0x00008000) == 0x00008000)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(16, commentHash_);
        }
        if (((bitField0_ & 0x00010000) == 0x00010000)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(17, textureHash_);
        }
        if (((bitField0_ & 0x00020000) == 0x00020000)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBoolSize(18, prioritySpeaker_);
        }
        if (((bitField0_ & 0x00040000) == 0x00040000)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBoolSize(19, recording_);
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }
  
      private static final long serialVersionUID = 0L;
      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.morlunk.jumble.protobuf.Mumble.UserState)) {
          return super.equals(obj);
        }
        com.morlunk.jumble.protobuf.Mumble.UserState other = (com.morlunk.jumble.protobuf.Mumble.UserState) obj;
  
        boolean result = true;
        result = result && (hasSession() == other.hasSession());
        if (hasSession()) {
          result = result && (getSession()
              == other.getSession());
        }
        result = result && (hasActor() == other.hasActor());
        if (hasActor()) {
          result = result && (getActor()
              == other.getActor());
        }
        result = result && (hasName() == other.hasName());
        if (hasName()) {
          result = result && getName()
              .equals(other.getName());
        }
        result = result && (hasUserId() == other.hasUserId());
        if (hasUserId()) {
          result = result && (getUserId()
              == other.getUserId());
        }
        result = result && (hasChannelId() == other.hasChannelId());
        if (hasChannelId()) {
          result = result && (getChannelId()
              == other.getChannelId());
        }
        result = result && (hasMute() == other.hasMute());
        if (hasMute()) {
          result = result && (getMute()
              == other.getMute());
        }
        result = result && (hasDeaf() == other.hasDeaf());
        if (hasDeaf()) {
          result = result && (getDeaf()
              == other.getDeaf());
        }
        result = result && (hasSuppress() == other.hasSuppress());
        if (hasSuppress()) {
          result = result && (getSuppress()
              == other.getSuppress());
        }
        result = result && (hasSelfMute() == other.hasSelfMute());
        if (hasSelfMute()) {
          result = result && (getSelfMute()
              == other.getSelfMute());
        }
        result = result && (hasSelfDeaf() == other.hasSelfDeaf());
        if (hasSelfDeaf()) {
          result = result && (getSelfDeaf()
              == other.getSelfDeaf());
        }
        result = result && (hasTexture() == other.hasTexture());
        if (hasTexture()) {
          result = result && getTexture()
              .equals(other.getTexture());
        }
        result = result && (hasPluginContext() == other.hasPluginContext());
        if (hasPluginContext()) {
          result = result && getPluginContext()
              .equals(other.getPluginContext());
        }
        result = result && (hasPluginIdentity() == other.hasPluginIdentity());
        if (hasPluginIdentity()) {
          result = result && getPluginIdentity()
              .equals(other.getPluginIdentity());
        }
        result = result && (hasComment() == other.hasComment());
        if (hasComment()) {
          result = result && getComment()
              .equals(other.getComment());
        }
        result = result && (hasHash() == other.hasHash());
        if (hasHash()) {
          result = result && getHash()
              .equals(other.getHash());
        }
        result = result && (hasCommentHash() == other.hasCommentHash());
        if (hasCommentHash()) {
          result = result && getCommentHash()
              .equals(other.getCommentHash());
        }
        result = result && (hasTextureHash() == other.hasTextureHash());
        if (hasTextureHash()) {
          result = result && getTextureHash()
              .equals(other.getTextureHash());
        }
        result = result && (hasPrioritySpeaker() == other.hasPrioritySpeaker());
        if (hasPrioritySpeaker()) {
          result = result && (getPrioritySpeaker()
              == other.getPrioritySpeaker());
        }
        result = result && (hasRecording() == other.hasRecording());
        if (hasRecording()) {
          result = result && (getRecording()
              == other.getRecording());
        }
        result = result && unknownFields.equals(other.unknownFields);
        return result;
      }
  
      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptorForType().hashCode();
        if (hasSession()) {
          hash = (37 * hash) + SESSION_FIELD_NUMBER;
          hash = (53 * hash) + getSession();
        }
        if (hasActor()) {
          hash = (37 * hash) + ACTOR_FIELD_NUMBER;
          hash = (53 * hash) + getActor();
        }
        if (hasName()) {
          hash = (37 * hash) + NAME_FIELD_NUMBER;
          hash = (53 * hash) + getName().hashCode();
        }
        if (hasUserId()) {
          hash = (37 * hash) + USER_ID_FIELD_NUMBER;
          hash = (53 * hash) + getUserId();
        }
        if (hasChannelId()) {
          hash = (37 * hash) + CHANNEL_ID_FIELD_NUMBER;
          hash = (53 * hash) + getChannelId();
        }
        if (hasMute()) {
          hash = (37 * hash) + MUTE_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
              getMute());
        }
        if (hasDeaf()) {
          hash = (37 * hash) + DEAF_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
              getDeaf());
        }
        if (hasSuppress()) {
          hash = (37 * hash) + SUPPRESS_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
              getSuppress());
        }
        if (hasSelfMute()) {
          hash = (37 * hash) + SELF_MUTE_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
              getSelfMute());
        }
        if (hasSelfDeaf()) {
          hash = (37 * hash) + SELF_DEAF_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
              getSelfDeaf());
        }
        if (hasTexture()) {
          hash = (37 * hash) + TEXTURE_FIELD_NUMBER;
          hash = (53 * hash) + getTexture().hashCode();
        }
        if (hasPluginContext()) {
          hash = (37 * hash) + PLUGIN_CONTEXT_FIELD_NUMBER;
          hash = (53 * hash) + getPluginContext().hashCode();
        }
        if (hasPluginIdentity()) {
          hash = (37 * hash) + PLUGIN_IDENTITY_FIELD_NUMBER;
          hash = (53 * hash) + getPluginIdentity().hashCode();
        }
        if (hasComment()) {
          hash = (37 * hash) + COMMENT_FIELD_NUMBER;
          hash = (53 * hash) + getComment().hashCode();
        }
        if (hasHash()) {
          hash = (37 * hash) + HASH_FIELD_NUMBER;
          hash = (53 * hash) + getHash().hashCode();
        }
        if (hasCommentHash()) {
          hash = (37 * hash) + COMMENT_HASH_FIELD_NUMBER;
          hash = (53 * hash) + getCommentHash().hashCode();
        }
        if (hasTextureHash()) {
          hash = (37 * hash) + TEXTURE_HASH_FIELD_NUMBER;
          hash = (53 * hash) + getTextureHash().hashCode();
        }
        if (hasPrioritySpeaker()) {
          hash = (37 * hash) + PRIORITY_SPEAKER_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
              getPrioritySpeaker());
        }
        if (hasRecording()) {
          hash = (37 * hash) + RECORDING_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
              getRecording());
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static com.morlunk.jumble.protobuf.Mumble.UserState parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.morlunk.jumble.protobuf.Mumble.UserState parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.UserState parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.morlunk.jumble.protobuf.Mumble.UserState parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.UserState parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.morlunk.jumble.protobuf.Mumble.UserState parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.UserState parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.morlunk.jumble.protobuf.Mumble.UserState parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.UserState parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.morlunk.jumble.protobuf.Mumble.UserState parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
  
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(com.morlunk.jumble.protobuf.Mumble.UserState prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }
  
      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code MumbleProto.UserState}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:MumbleProto.UserState)
          com.morlunk.jumble.protobuf.Mumble.UserStateOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_UserState_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_UserState_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.morlunk.jumble.protobuf.Mumble.UserState.class, com.morlunk.jumble.protobuf.Mumble.UserState.Builder.class);
        }
  
        // Construct using com.morlunk.jumble.protobuf.Mumble.UserState.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
  
        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
          }
        }
        public Builder clear() {
          super.clear();
          session_ = 0;
          bitField0_ = (bitField0_ & ~0x00000001);
          actor_ = 0;
          bitField0_ = (bitField0_ & ~0x00000002);
          name_ = "";
          bitField0_ = (bitField0_ & ~0x00000004);
          userId_ = 0;
          bitField0_ = (bitField0_ & ~0x00000008);
          channelId_ = 0;
          bitField0_ = (bitField0_ & ~0x00000010);
          mute_ = false;
          bitField0_ = (bitField0_ & ~0x00000020);
          deaf_ = false;
          bitField0_ = (bitField0_ & ~0x00000040);
          suppress_ = false;
          bitField0_ = (bitField0_ & ~0x00000080);
          selfMute_ = false;
          bitField0_ = (bitField0_ & ~0x00000100);
          selfDeaf_ = false;
          bitField0_ = (bitField0_ & ~0x00000200);
          texture_ = com.google.protobuf.ByteString.EMPTY;
          bitField0_ = (bitField0_ & ~0x00000400);
          pluginContext_ = com.google.protobuf.ByteString.EMPTY;
          bitField0_ = (bitField0_ & ~0x00000800);
          pluginIdentity_ = "";
          bitField0_ = (bitField0_ & ~0x00001000);
          comment_ = "";
          bitField0_ = (bitField0_ & ~0x00002000);
          hash_ = "";
          bitField0_ = (bitField0_ & ~0x00004000);
          commentHash_ = com.google.protobuf.ByteString.EMPTY;
          bitField0_ = (bitField0_ & ~0x00008000);
          textureHash_ = com.google.protobuf.ByteString.EMPTY;
          bitField0_ = (bitField0_ & ~0x00010000);
          prioritySpeaker_ = false;
          bitField0_ = (bitField0_ & ~0x00020000);
          recording_ = false;
          bitField0_ = (bitField0_ & ~0x00040000);
          return this;
        }
  
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_UserState_descriptor;
        }
  
        public com.morlunk.jumble.protobuf.Mumble.UserState getDefaultInstanceForType() {
          return com.morlunk.jumble.protobuf.Mumble.UserState.getDefaultInstance();
        }
  
        public com.morlunk.jumble.protobuf.Mumble.UserState build() {
          com.morlunk.jumble.protobuf.Mumble.UserState result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        public com.morlunk.jumble.protobuf.Mumble.UserState buildPartial() {
          com.morlunk.jumble.protobuf.Mumble.UserState result = new com.morlunk.jumble.protobuf.Mumble.UserState(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.session_ = session_;
          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
            to_bitField0_ |= 0x00000002;
          }
          result.actor_ = actor_;
          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
            to_bitField0_ |= 0x00000004;
          }
          result.name_ = name_;
          if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
            to_bitField0_ |= 0x00000008;
          }
          result.userId_ = userId_;
          if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
            to_bitField0_ |= 0x00000010;
          }
          result.channelId_ = channelId_;
          if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
            to_bitField0_ |= 0x00000020;
          }
          result.mute_ = mute_;
          if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
            to_bitField0_ |= 0x00000040;
          }
          result.deaf_ = deaf_;
          if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
            to_bitField0_ |= 0x00000080;
          }
          result.suppress_ = suppress_;
          if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
            to_bitField0_ |= 0x00000100;
          }
          result.selfMute_ = selfMute_;
          if (((from_bitField0_ & 0x00000200) == 0x00000200)) {
            to_bitField0_ |= 0x00000200;
          }
          result.selfDeaf_ = selfDeaf_;
          if (((from_bitField0_ & 0x00000400) == 0x00000400)) {
            to_bitField0_ |= 0x00000400;
          }
          result.texture_ = texture_;
          if (((from_bitField0_ & 0x00000800) == 0x00000800)) {
            to_bitField0_ |= 0x00000800;
          }
          result.pluginContext_ = pluginContext_;
          if (((from_bitField0_ & 0x00001000) == 0x00001000)) {
            to_bitField0_ |= 0x00001000;
          }
          result.pluginIdentity_ = pluginIdentity_;
          if (((from_bitField0_ & 0x00002000) == 0x00002000)) {
            to_bitField0_ |= 0x00002000;
          }
          result.comment_ = comment_;
          if (((from_bitField0_ & 0x00004000) == 0x00004000)) {
            to_bitField0_ |= 0x00004000;
          }
          result.hash_ = hash_;
          if (((from_bitField0_ & 0x00008000) == 0x00008000)) {
            to_bitField0_ |= 0x00008000;
          }
          result.commentHash_ = commentHash_;
          if (((from_bitField0_ & 0x00010000) == 0x00010000)) {
            to_bitField0_ |= 0x00010000;
          }
          result.textureHash_ = textureHash_;
          if (((from_bitField0_ & 0x00020000) == 0x00020000)) {
            to_bitField0_ |= 0x00020000;
          }
          result.prioritySpeaker_ = prioritySpeaker_;
          if (((from_bitField0_ & 0x00040000) == 0x00040000)) {
            to_bitField0_ |= 0x00040000;
          }
          result.recording_ = recording_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
  
        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.setField(field, value);
        }
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return (Builder) super.clearField(field);
        }
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return (Builder) super.clearOneof(oneof);
        }
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.morlunk.jumble.protobuf.Mumble.UserState) {
            return mergeFrom((com.morlunk.jumble.protobuf.Mumble.UserState)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(com.morlunk.jumble.protobuf.Mumble.UserState other) {
          if (other == com.morlunk.jumble.protobuf.Mumble.UserState.getDefaultInstance()) return this;
          if (other.hasSession()) {
            setSession(other.getSession());
          }
          if (other.hasActor()) {
            setActor(other.getActor());
          }
          if (other.hasName()) {
            bitField0_ |= 0x00000004;
            name_ = other.name_;
            onChanged();
          }
          if (other.hasUserId()) {
            setUserId(other.getUserId());
          }
          if (other.hasChannelId()) {
            setChannelId(other.getChannelId());
          }
          if (other.hasMute()) {
            setMute(other.getMute());
          }
          if (other.hasDeaf()) {
            setDeaf(other.getDeaf());
          }
          if (other.hasSuppress()) {
            setSuppress(other.getSuppress());
          }
          if (other.hasSelfMute()) {
            setSelfMute(other.getSelfMute());
          }
          if (other.hasSelfDeaf()) {
            setSelfDeaf(other.getSelfDeaf());
          }
          if (other.hasTexture()) {
            setTexture(other.getTexture());
          }
          if (other.hasPluginContext()) {
            setPluginContext(other.getPluginContext());
          }
          if (other.hasPluginIdentity()) {
            bitField0_ |= 0x00001000;
            pluginIdentity_ = other.pluginIdentity_;
            onChanged();
          }
          if (other.hasComment()) {
            bitField0_ |= 0x00002000;
            comment_ = other.comment_;
            onChanged();
          }
          if (other.hasHash()) {
            bitField0_ |= 0x00004000;
            hash_ = other.hash_;
            onChanged();
          }
          if (other.hasCommentHash()) {
            setCommentHash(other.getCommentHash());
          }
          if (other.hasTextureHash()) {
            setTextureHash(other.getTextureHash());
          }
          if (other.hasPrioritySpeaker()) {
            setPrioritySpeaker(other.getPrioritySpeaker());
          }
          if (other.hasRecording()) {
            setRecording(other.getRecording());
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }
  
        public final boolean isInitialized() {
          return true;
        }
  
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.morlunk.jumble.protobuf.Mumble.UserState parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (com.morlunk.jumble.protobuf.Mumble.UserState) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;
  
        private int session_ ;
        /**
         * <code>optional uint32 session = 1;</code>
         */
        public boolean hasSession() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <code>optional uint32 session = 1;</code>
         */
        public int getSession() {
          return session_;
        }
        /**
         * <code>optional uint32 session = 1;</code>
         */
        public Builder setSession(int value) {
          bitField0_ |= 0x00000001;
          session_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional uint32 session = 1;</code>
         */
        public Builder clearSession() {
          bitField0_ = (bitField0_ & ~0x00000001);
          session_ = 0;
          onChanged();
          return this;
        }
  
        private int actor_ ;
        /**
         * <code>optional uint32 actor = 2;</code>
         */
        public boolean hasActor() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * <code>optional uint32 actor = 2;</code>
         */
        public int getActor() {
          return actor_;
        }
        /**
         * <code>optional uint32 actor = 2;</code>
         */
        public Builder setActor(int value) {
          bitField0_ |= 0x00000002;
          actor_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional uint32 actor = 2;</code>
         */
        public Builder clearActor() {
          bitField0_ = (bitField0_ & ~0x00000002);
          actor_ = 0;
          onChanged();
          return this;
        }
  
        private java.lang.Object name_ = "";
        /**
         * <code>optional string name = 3;</code>
         */
        public boolean hasName() {
          return ((bitField0_ & 0x00000004) == 0x00000004);
        }
        /**
         * <code>optional string name = 3;</code>
         */
        public java.lang.String getName() {
          java.lang.Object ref = name_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              name_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>optional string name = 3;</code>
         */
        public com.google.protobuf.ByteString
            getNameBytes() {
          java.lang.Object ref = name_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            name_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>optional string name = 3;</code>
         */
        public Builder setName(
            java.lang.String value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000004;
          name_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional string name = 3;</code>
         */
        public Builder clearName() {
          bitField0_ = (bitField0_ & ~0x00000004);
          name_ = getDefaultInstance().getName();
          onChanged();
          return this;
        }
        /**
         * <code>optional string name = 3;</code>
         */
        public Builder setNameBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000004;
          name_ = value;
          onChanged();
          return this;
        }
  
        private int userId_ ;
        /**
         * <code>optional uint32 user_id = 4;</code>
         */
        public boolean hasUserId() {
          return ((bitField0_ & 0x00000008) == 0x00000008);
        }
        /**
         * <code>optional uint32 user_id = 4;</code>
         */
        public int getUserId() {
          return userId_;
        }
        /**
         * <code>optional uint32 user_id = 4;</code>
         */
        public Builder setUserId(int value) {
          bitField0_ |= 0x00000008;
          userId_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional uint32 user_id = 4;</code>
         */
        public Builder clearUserId() {
          bitField0_ = (bitField0_ & ~0x00000008);
          userId_ = 0;
          onChanged();
          return this;
        }
  
        private int channelId_ ;
        /**
         * <code>optional uint32 channel_id = 5;</code>
         */
        public boolean hasChannelId() {
          return ((bitField0_ & 0x00000010) == 0x00000010);
        }
        /**
         * <code>optional uint32 channel_id = 5;</code>
         */
        public int getChannelId() {
          return channelId_;
        }
        /**
         * <code>optional uint32 channel_id = 5;</code>
         */
        public Builder setChannelId(int value) {
          bitField0_ |= 0x00000010;
          channelId_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional uint32 channel_id = 5;</code>
         */
        public Builder clearChannelId() {
          bitField0_ = (bitField0_ & ~0x00000010);
          channelId_ = 0;
          onChanged();
          return this;
        }
  
        private boolean mute_ ;
        /**
         * <code>optional bool mute = 6;</code>
         */
        public boolean hasMute() {
          return ((bitField0_ & 0x00000020) == 0x00000020);
        }
        /**
         * <code>optional bool mute = 6;</code>
         */
        public boolean getMute() {
          return mute_;
        }
        /**
         * <code>optional bool mute = 6;</code>
         */
        public Builder setMute(boolean value) {
          bitField0_ |= 0x00000020;
          mute_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional bool mute = 6;</code>
         */
        public Builder clearMute() {
          bitField0_ = (bitField0_ & ~0x00000020);
          mute_ = false;
          onChanged();
          return this;
        }
  
        private boolean deaf_ ;
        /**
         * <code>optional bool deaf = 7;</code>
         */
        public boolean hasDeaf() {
          return ((bitField0_ & 0x00000040) == 0x00000040);
        }
        /**
         * <code>optional bool deaf = 7;</code>
         */
        public boolean getDeaf() {
          return deaf_;
        }
        /**
         * <code>optional bool deaf = 7;</code>
         */
        public Builder setDeaf(boolean value) {
          bitField0_ |= 0x00000040;
          deaf_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional bool deaf = 7;</code>
         */
        public Builder clearDeaf() {
          bitField0_ = (bitField0_ & ~0x00000040);
          deaf_ = false;
          onChanged();
          return this;
        }
  
        private boolean suppress_ ;
        /**
         * <code>optional bool suppress = 8;</code>
         */
        public boolean hasSuppress() {
          return ((bitField0_ & 0x00000080) == 0x00000080);
        }
        /**
         * <code>optional bool suppress = 8;</code>
         */
        public boolean getSuppress() {
          return suppress_;
        }
        /**
         * <code>optional bool suppress = 8;</code>
         */
        public Builder setSuppress(boolean value) {
          bitField0_ |= 0x00000080;
          suppress_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional bool suppress = 8;</code>
         */
        public Builder clearSuppress() {
          bitField0_ = (bitField0_ & ~0x00000080);
          suppress_ = false;
          onChanged();
          return this;
        }
  
        private boolean selfMute_ ;
        /**
         * <code>optional bool self_mute = 9;</code>
         */
        public boolean hasSelfMute() {
          return ((bitField0_ & 0x00000100) == 0x00000100);
        }
        /**
         * <code>optional bool self_mute = 9;</code>
         */
        public boolean getSelfMute() {
          return selfMute_;
        }
        /**
         * <code>optional bool self_mute = 9;</code>
         */
        public Builder setSelfMute(boolean value) {
          bitField0_ |= 0x00000100;
          selfMute_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional bool self_mute = 9;</code>
         */
        public Builder clearSelfMute() {
          bitField0_ = (bitField0_ & ~0x00000100);
          selfMute_ = false;
          onChanged();
          return this;
        }
  
        private boolean selfDeaf_ ;
        /**
         * <code>optional bool self_deaf = 10;</code>
         */
        public boolean hasSelfDeaf() {
          return ((bitField0_ & 0x00000200) == 0x00000200);
        }
        /**
         * <code>optional bool self_deaf = 10;</code>
         */
        public boolean getSelfDeaf() {
          return selfDeaf_;
        }
        /**
         * <code>optional bool self_deaf = 10;</code>
         */
        public Builder setSelfDeaf(boolean value) {
          bitField0_ |= 0x00000200;
          selfDeaf_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional bool self_deaf = 10;</code>
         */
        public Builder clearSelfDeaf() {
          bitField0_ = (bitField0_ & ~0x00000200);
          selfDeaf_ = false;
          onChanged();
          return this;
        }
  
        private com.google.protobuf.ByteString texture_ = com.google.protobuf.ByteString.EMPTY;
        /**
         * <code>optional bytes texture = 11;</code>
         */
        public boolean hasTexture() {
          return ((bitField0_ & 0x00000400) == 0x00000400);
        }
        /**
         * <code>optional bytes texture = 11;</code>
         */
        public com.google.protobuf.ByteString getTexture() {
          return texture_;
        }
        /**
         * <code>optional bytes texture = 11;</code>
         */
        public Builder setTexture(com.google.protobuf.ByteString value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000400;
          texture_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional bytes texture = 11;</code>
         */
        public Builder clearTexture() {
          bitField0_ = (bitField0_ & ~0x00000400);
          texture_ = getDefaultInstance().getTexture();
          onChanged();
          return this;
        }
  
        private com.google.protobuf.ByteString pluginContext_ = com.google.protobuf.ByteString.EMPTY;
        /**
         * <code>optional bytes plugin_context = 12;</code>
         */
        public boolean hasPluginContext() {
          return ((bitField0_ & 0x00000800) == 0x00000800);
        }
        /**
         * <code>optional bytes plugin_context = 12;</code>
         */
        public com.google.protobuf.ByteString getPluginContext() {
          return pluginContext_;
        }
        /**
         * <code>optional bytes plugin_context = 12;</code>
         */
        public Builder setPluginContext(com.google.protobuf.ByteString value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000800;
          pluginContext_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional bytes plugin_context = 12;</code>
         */
        public Builder clearPluginContext() {
          bitField0_ = (bitField0_ & ~0x00000800);
          pluginContext_ = getDefaultInstance().getPluginContext();
          onChanged();
          return this;
        }
  
        private java.lang.Object pluginIdentity_ = "";
        /**
         * <code>optional string plugin_identity = 13;</code>
         */
        public boolean hasPluginIdentity() {
          return ((bitField0_ & 0x00001000) == 0x00001000);
        }
        /**
         * <code>optional string plugin_identity = 13;</code>
         */
        public java.lang.String getPluginIdentity() {
          java.lang.Object ref = pluginIdentity_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              pluginIdentity_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>optional string plugin_identity = 13;</code>
         */
        public com.google.protobuf.ByteString
            getPluginIdentityBytes() {
          java.lang.Object ref = pluginIdentity_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            pluginIdentity_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>optional string plugin_identity = 13;</code>
         */
        public Builder setPluginIdentity(
            java.lang.String value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00001000;
          pluginIdentity_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional string plugin_identity = 13;</code>
         */
        public Builder clearPluginIdentity() {
          bitField0_ = (bitField0_ & ~0x00001000);
          pluginIdentity_ = getDefaultInstance().getPluginIdentity();
          onChanged();
          return this;
        }
        /**
         * <code>optional string plugin_identity = 13;</code>
         */
        public Builder setPluginIdentityBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00001000;
          pluginIdentity_ = value;
          onChanged();
          return this;
        }
  
        private java.lang.Object comment_ = "";
        /**
         * <code>optional string comment = 14;</code>
         */
        public boolean hasComment() {
          return ((bitField0_ & 0x00002000) == 0x00002000);
        }
        /**
         * <code>optional string comment = 14;</code>
         */
        public java.lang.String getComment() {
          java.lang.Object ref = comment_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              comment_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>optional string comment = 14;</code>
         */
        public com.google.protobuf.ByteString
            getCommentBytes() {
          java.lang.Object ref = comment_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            comment_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>optional string comment = 14;</code>
         */
        public Builder setComment(
            java.lang.String value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00002000;
          comment_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional string comment = 14;</code>
         */
        public Builder clearComment() {
          bitField0_ = (bitField0_ & ~0x00002000);
          comment_ = getDefaultInstance().getComment();
          onChanged();
          return this;
        }
        /**
         * <code>optional string comment = 14;</code>
         */
        public Builder setCommentBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00002000;
          comment_ = value;
          onChanged();
          return this;
        }
  
        private java.lang.Object hash_ = "";
        /**
         * <code>optional string hash = 15;</code>
         */
        public boolean hasHash() {
          return ((bitField0_ & 0x00004000) == 0x00004000);
        }
        /**
         * <code>optional string hash = 15;</code>
         */
        public java.lang.String getHash() {
          java.lang.Object ref = hash_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              hash_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>optional string hash = 15;</code>
         */
        public com.google.protobuf.ByteString
            getHashBytes() {
          java.lang.Object ref = hash_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            hash_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>optional string hash = 15;</code>
         */
        public Builder setHash(
            java.lang.String value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00004000;
          hash_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional string hash = 15;</code>
         */
        public Builder clearHash() {
          bitField0_ = (bitField0_ & ~0x00004000);
          hash_ = getDefaultInstance().getHash();
          onChanged();
          return this;
        }
        /**
         * <code>optional string hash = 15;</code>
         */
        public Builder setHashBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00004000;
          hash_ = value;
          onChanged();
          return this;
        }
  
        private com.google.protobuf.ByteString commentHash_ = com.google.protobuf.ByteString.EMPTY;
        /**
         * <code>optional bytes comment_hash = 16;</code>
         */
        public boolean hasCommentHash() {
          return ((bitField0_ & 0x00008000) == 0x00008000);
        }
        /**
         * <code>optional bytes comment_hash = 16;</code>
         */
        public com.google.protobuf.ByteString getCommentHash() {
          return commentHash_;
        }
        /**
         * <code>optional bytes comment_hash = 16;</code>
         */
        public Builder setCommentHash(com.google.protobuf.ByteString value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00008000;
          commentHash_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional bytes comment_hash = 16;</code>
         */
        public Builder clearCommentHash() {
          bitField0_ = (bitField0_ & ~0x00008000);
          commentHash_ = getDefaultInstance().getCommentHash();
          onChanged();
          return this;
        }
  
        private com.google.protobuf.ByteString textureHash_ = com.google.protobuf.ByteString.EMPTY;
        /**
         * <code>optional bytes texture_hash = 17;</code>
         */
        public boolean hasTextureHash() {
          return ((bitField0_ & 0x00010000) == 0x00010000);
        }
        /**
         * <code>optional bytes texture_hash = 17;</code>
         */
        public com.google.protobuf.ByteString getTextureHash() {
          return textureHash_;
        }
        /**
         * <code>optional bytes texture_hash = 17;</code>
         */
        public Builder setTextureHash(com.google.protobuf.ByteString value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00010000;
          textureHash_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional bytes texture_hash = 17;</code>
         */
        public Builder clearTextureHash() {
          bitField0_ = (bitField0_ & ~0x00010000);
          textureHash_ = getDefaultInstance().getTextureHash();
          onChanged();
          return this;
        }
  
        private boolean prioritySpeaker_ ;
        /**
         * <code>optional bool priority_speaker = 18;</code>
         */
        public boolean hasPrioritySpeaker() {
          return ((bitField0_ & 0x00020000) == 0x00020000);
        }
        /**
         * <code>optional bool priority_speaker = 18;</code>
         */
        public boolean getPrioritySpeaker() {
          return prioritySpeaker_;
        }
        /**
         * <code>optional bool priority_speaker = 18;</code>
         */
        public Builder setPrioritySpeaker(boolean value) {
          bitField0_ |= 0x00020000;
          prioritySpeaker_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional bool priority_speaker = 18;</code>
         */
        public Builder clearPrioritySpeaker() {
          bitField0_ = (bitField0_ & ~0x00020000);
          prioritySpeaker_ = false;
          onChanged();
          return this;
        }
  
        private boolean recording_ ;
        /**
         * <code>optional bool recording = 19;</code>
         */
        public boolean hasRecording() {
          return ((bitField0_ & 0x00040000) == 0x00040000);
        }
        /**
         * <code>optional bool recording = 19;</code>
         */
        public boolean getRecording() {
          return recording_;
        }
        /**
         * <code>optional bool recording = 19;</code>
         */
        public Builder setRecording(boolean value) {
          bitField0_ |= 0x00040000;
          recording_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional bool recording = 19;</code>
         */
        public Builder clearRecording() {
          bitField0_ = (bitField0_ & ~0x00040000);
          recording_ = false;
          onChanged();
          return this;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }
  
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:MumbleProto.UserState)
      }
  
      // @@protoc_insertion_point(class_scope:MumbleProto.UserState)
      private static final com.morlunk.jumble.protobuf.Mumble.UserState DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.morlunk.jumble.protobuf.Mumble.UserState();
      }
  
      public static com.morlunk.jumble.protobuf.Mumble.UserState getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      @java.lang.Deprecated public static final com.google.protobuf.Parser<UserState>
          PARSER = new com.google.protobuf.AbstractParser<UserState>() {
        public UserState parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return new UserState(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<UserState> parser() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.google.protobuf.Parser<UserState> getParserForType() {
        return PARSER;
      }
  
      public com.morlunk.jumble.protobuf.Mumble.UserState getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface BanListOrBuilder extends
        // @@protoc_insertion_point(interface_extends:MumbleProto.BanList)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <code>repeated .MumbleProto.BanList.BanEntry bans = 1;</code>
       */
      java.util.List<com.morlunk.jumble.protobuf.Mumble.BanList.BanEntry> 
          getBansList();
      /**
       * <code>repeated .MumbleProto.BanList.BanEntry bans = 1;</code>
       */
      com.morlunk.jumble.protobuf.Mumble.BanList.BanEntry getBans(int index);
      /**
       * <code>repeated .MumbleProto.BanList.BanEntry bans = 1;</code>
       */
      int getBansCount();
      /**
       * <code>repeated .MumbleProto.BanList.BanEntry bans = 1;</code>
       */
      java.util.List<? extends com.morlunk.jumble.protobuf.Mumble.BanList.BanEntryOrBuilder> 
          getBansOrBuilderList();
      /**
       * <code>repeated .MumbleProto.BanList.BanEntry bans = 1;</code>
       */
      com.morlunk.jumble.protobuf.Mumble.BanList.BanEntryOrBuilder getBansOrBuilder(
          int index);
  
      /**
       * <code>optional bool query = 2 [default = false];</code>
       */
      boolean hasQuery();
      /**
       * <code>optional bool query = 2 [default = false];</code>
       */
      boolean getQuery();
    }
    /**
     * Protobuf type {@code MumbleProto.BanList}
     */
    public  static final class BanList extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:MumbleProto.BanList)
        BanListOrBuilder {
      // Use BanList.newBuilder() to construct.
      private BanList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private BanList() {
        bans_ = java.util.Collections.emptyList();
        query_ = false;
      }
  
      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private BanList(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        int mutable_bitField0_ = 0;
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder();
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              default: {
                if (!parseUnknownField(input, unknownFields,
                                       extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 10: {
                if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                  bans_ = new java.util.ArrayList<com.morlunk.jumble.protobuf.Mumble.BanList.BanEntry>();
                  mutable_bitField0_ |= 0x00000001;
                }
                bans_.add(
                    input.readMessage(com.morlunk.jumble.protobuf.Mumble.BanList.BanEntry.PARSER, extensionRegistry));
                break;
              }
              case 16: {
                bitField0_ |= 0x00000001;
                query_ = input.readBool();
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
            bans_ = java.util.Collections.unmodifiableList(bans_);
          }
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_BanList_descriptor;
      }
  
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_BanList_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.morlunk.jumble.protobuf.Mumble.BanList.class, com.morlunk.jumble.protobuf.Mumble.BanList.Builder.class);
      }
  
      public interface BanEntryOrBuilder extends
          // @@protoc_insertion_point(interface_extends:MumbleProto.BanList.BanEntry)
          com.google.protobuf.MessageOrBuilder {
  
        /**
         * <code>required bytes address = 1;</code>
         */
        boolean hasAddress();
        /**
         * <code>required bytes address = 1;</code>
         */
        com.google.protobuf.ByteString getAddress();
  
        /**
         * <code>required uint32 mask = 2;</code>
         */
        boolean hasMask();
        /**
         * <code>required uint32 mask = 2;</code>
         */
        int getMask();
  
        /**
         * <code>optional string name = 3;</code>
         */
        boolean hasName();
        /**
         * <code>optional string name = 3;</code>
         */
        java.lang.String getName();
        /**
         * <code>optional string name = 3;</code>
         */
        com.google.protobuf.ByteString
            getNameBytes();
  
        /**
         * <code>optional string hash = 4;</code>
         */
        boolean hasHash();
        /**
         * <code>optional string hash = 4;</code>
         */
        java.lang.String getHash();
        /**
         * <code>optional string hash = 4;</code>
         */
        com.google.protobuf.ByteString
            getHashBytes();
  
        /**
         * <code>optional string reason = 5;</code>
         */
        boolean hasReason();
        /**
         * <code>optional string reason = 5;</code>
         */
        java.lang.String getReason();
        /**
         * <code>optional string reason = 5;</code>
         */
        com.google.protobuf.ByteString
            getReasonBytes();
  
        /**
         * <code>optional string start = 6;</code>
         */
        boolean hasStart();
        /**
         * <code>optional string start = 6;</code>
         */
        java.lang.String getStart();
        /**
         * <code>optional string start = 6;</code>
         */
        com.google.protobuf.ByteString
            getStartBytes();
  
        /**
         * <code>optional uint32 duration = 7;</code>
         */
        boolean hasDuration();
        /**
         * <code>optional uint32 duration = 7;</code>
         */
        int getDuration();
      }
      /**
       * Protobuf type {@code MumbleProto.BanList.BanEntry}
       */
      public  static final class BanEntry extends
          com.google.protobuf.GeneratedMessageV3 implements
          // @@protoc_insertion_point(message_implements:MumbleProto.BanList.BanEntry)
          BanEntryOrBuilder {
        // Use BanEntry.newBuilder() to construct.
        private BanEntry(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
          super(builder);
        }
        private BanEntry() {
          address_ = com.google.protobuf.ByteString.EMPTY;
          mask_ = 0;
          name_ = "";
          hash_ = "";
          reason_ = "";
          start_ = "";
          duration_ = 0;
        }
  
        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
          return this.unknownFields;
        }
        private BanEntry(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          this();
          int mutable_bitField0_ = 0;
          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
              com.google.protobuf.UnknownFieldSet.newBuilder();
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                default: {
                  if (!parseUnknownField(input, unknownFields,
                                         extensionRegistry, tag)) {
                    done = true;
                  }
                  break;
                }
                case 10: {
                  bitField0_ |= 0x00000001;
                  address_ = input.readBytes();
                  break;
                }
                case 16: {
                  bitField0_ |= 0x00000002;
                  mask_ = input.readUInt32();
                  break;
                }
                case 26: {
                  com.google.protobuf.ByteString bs = input.readBytes();
                  bitField0_ |= 0x00000004;
                  name_ = bs;
                  break;
                }
                case 34: {
                  com.google.protobuf.ByteString bs = input.readBytes();
                  bitField0_ |= 0x00000008;
                  hash_ = bs;
                  break;
                }
                case 42: {
                  com.google.protobuf.ByteString bs = input.readBytes();
                  bitField0_ |= 0x00000010;
                  reason_ = bs;
                  break;
                }
                case 50: {
                  com.google.protobuf.ByteString bs = input.readBytes();
                  bitField0_ |= 0x00000020;
                  start_ = bs;
                  break;
                }
                case 56: {
                  bitField0_ |= 0x00000040;
                  duration_ = input.readUInt32();
                  break;
                }
              }
            }
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(this);
          } catch (java.io.IOException e) {
            throw new com.google.protobuf.InvalidProtocolBufferException(
                e).setUnfinishedMessage(this);
          } finally {
            this.unknownFields = unknownFields.build();
            makeExtensionsImmutable();
          }
        }
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_BanList_BanEntry_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_BanList_BanEntry_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.morlunk.jumble.protobuf.Mumble.BanList.BanEntry.class, com.morlunk.jumble.protobuf.Mumble.BanList.BanEntry.Builder.class);
        }
  
        private int bitField0_;
        public static final int ADDRESS_FIELD_NUMBER = 1;
        private com.google.protobuf.ByteString address_;
        /**
         * <code>required bytes address = 1;</code>
         */
        public boolean hasAddress() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <code>required bytes address = 1;</code>
         */
        public com.google.protobuf.ByteString getAddress() {
          return address_;
        }
  
        public static final int MASK_FIELD_NUMBER = 2;
        private int mask_;
        /**
         * <code>required uint32 mask = 2;</code>
         */
        public boolean hasMask() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * <code>required uint32 mask = 2;</code>
         */
        public int getMask() {
          return mask_;
        }
  
        public static final int NAME_FIELD_NUMBER = 3;
        private volatile java.lang.Object name_;
        /**
         * <code>optional string name = 3;</code>
         */
        public boolean hasName() {
          return ((bitField0_ & 0x00000004) == 0x00000004);
        }
        /**
         * <code>optional string name = 3;</code>
         */
        public java.lang.String getName() {
          java.lang.Object ref = name_;
          if (ref instanceof java.lang.String) {
            return (java.lang.String) ref;
          } else {
            com.google.protobuf.ByteString bs = 
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              name_ = s;
            }
            return s;
          }
        }
        /**
         * <code>optional string name = 3;</code>
         */
        public com.google.protobuf.ByteString
            getNameBytes() {
          java.lang.Object ref = name_;
          if (ref instanceof java.lang.String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            name_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
  
        public static final int HASH_FIELD_NUMBER = 4;
        private volatile java.lang.Object hash_;
        /**
         * <code>optional string hash = 4;</code>
         */
        public boolean hasHash() {
          return ((bitField0_ & 0x00000008) == 0x00000008);
        }
        /**
         * <code>optional string hash = 4;</code>
         */
        public java.lang.String getHash() {
          java.lang.Object ref = hash_;
          if (ref instanceof java.lang.String) {
            return (java.lang.String) ref;
          } else {
            com.google.protobuf.ByteString bs = 
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              hash_ = s;
            }
            return s;
          }
        }
        /**
         * <code>optional string hash = 4;</code>
         */
        public com.google.protobuf.ByteString
            getHashBytes() {
          java.lang.Object ref = hash_;
          if (ref instanceof java.lang.String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            hash_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
  
        public static final int REASON_FIELD_NUMBER = 5;
        private volatile java.lang.Object reason_;
        /**
         * <code>optional string reason = 5;</code>
         */
        public boolean hasReason() {
          return ((bitField0_ & 0x00000010) == 0x00000010);
        }
        /**
         * <code>optional string reason = 5;</code>
         */
        public java.lang.String getReason() {
          java.lang.Object ref = reason_;
          if (ref instanceof java.lang.String) {
            return (java.lang.String) ref;
          } else {
            com.google.protobuf.ByteString bs = 
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              reason_ = s;
            }
            return s;
          }
        }
        /**
         * <code>optional string reason = 5;</code>
         */
        public com.google.protobuf.ByteString
            getReasonBytes() {
          java.lang.Object ref = reason_;
          if (ref instanceof java.lang.String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            reason_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
  
        public static final int START_FIELD_NUMBER = 6;
        private volatile java.lang.Object start_;
        /**
         * <code>optional string start = 6;</code>
         */
        public boolean hasStart() {
          return ((bitField0_ & 0x00000020) == 0x00000020);
        }
        /**
         * <code>optional string start = 6;</code>
         */
        public java.lang.String getStart() {
          java.lang.Object ref = start_;
          if (ref instanceof java.lang.String) {
            return (java.lang.String) ref;
          } else {
            com.google.protobuf.ByteString bs = 
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              start_ = s;
            }
            return s;
          }
        }
        /**
         * <code>optional string start = 6;</code>
         */
        public com.google.protobuf.ByteString
            getStartBytes() {
          java.lang.Object ref = start_;
          if (ref instanceof java.lang.String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            start_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
  
        public static final int DURATION_FIELD_NUMBER = 7;
        private int duration_;
        /**
         * <code>optional uint32 duration = 7;</code>
         */
        public boolean hasDuration() {
          return ((bitField0_ & 0x00000040) == 0x00000040);
        }
        /**
         * <code>optional uint32 duration = 7;</code>
         */
        public int getDuration() {
          return duration_;
        }
  
        private byte memoizedIsInitialized = -1;
        public final boolean isInitialized() {
          byte isInitialized = memoizedIsInitialized;
          if (isInitialized == 1) return true;
          if (isInitialized == 0) return false;
  
          if (!hasAddress()) {
            memoizedIsInitialized = 0;
            return false;
          }
          if (!hasMask()) {
            memoizedIsInitialized = 0;
            return false;
          }
          memoizedIsInitialized = 1;
          return true;
        }
  
        public void writeTo(com.google.protobuf.CodedOutputStream output)
                            throws java.io.IOException {
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            output.writeBytes(1, address_);
          }
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            output.writeUInt32(2, mask_);
          }
          if (((bitField0_ & 0x00000004) == 0x00000004)) {
            com.google.protobuf.GeneratedMessageV3.writeString(output, 3, name_);
          }
          if (((bitField0_ & 0x00000008) == 0x00000008)) {
            com.google.protobuf.GeneratedMessageV3.writeString(output, 4, hash_);
          }
          if (((bitField0_ & 0x00000010) == 0x00000010)) {
            com.google.protobuf.GeneratedMessageV3.writeString(output, 5, reason_);
          }
          if (((bitField0_ & 0x00000020) == 0x00000020)) {
            com.google.protobuf.GeneratedMessageV3.writeString(output, 6, start_);
          }
          if (((bitField0_ & 0x00000040) == 0x00000040)) {
            output.writeUInt32(7, duration_);
          }
          unknownFields.writeTo(output);
        }
  
        public int getSerializedSize() {
          int size = memoizedSize;
          if (size != -1) return size;
  
          size = 0;
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            size += com.google.protobuf.CodedOutputStream
              .computeBytesSize(1, address_);
          }
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(2, mask_);
          }
          if (((bitField0_ & 0x00000004) == 0x00000004)) {
            size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, name_);
          }
          if (((bitField0_ & 0x00000008) == 0x00000008)) {
            size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, hash_);
          }
          if (((bitField0_ & 0x00000010) == 0x00000010)) {
            size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, reason_);
          }
          if (((bitField0_ & 0x00000020) == 0x00000020)) {
            size += com.google.protobuf.GeneratedMessageV3.computeStringSize(6, start_);
          }
          if (((bitField0_ & 0x00000040) == 0x00000040)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(7, duration_);
          }
          size += unknownFields.getSerializedSize();
          memoizedSize = size;
          return size;
        }
  
        private static final long serialVersionUID = 0L;
        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
          if (obj == this) {
           return true;
          }
          if (!(obj instanceof com.morlunk.jumble.protobuf.Mumble.BanList.BanEntry)) {
            return super.equals(obj);
          }
          com.morlunk.jumble.protobuf.Mumble.BanList.BanEntry other = (com.morlunk.jumble.protobuf.Mumble.BanList.BanEntry) obj;
  
          boolean result = true;
          result = result && (hasAddress() == other.hasAddress());
          if (hasAddress()) {
            result = result && getAddress()
                .equals(other.getAddress());
          }
          result = result && (hasMask() == other.hasMask());
          if (hasMask()) {
            result = result && (getMask()
                == other.getMask());
          }
          result = result && (hasName() == other.hasName());
          if (hasName()) {
            result = result && getName()
                .equals(other.getName());
          }
          result = result && (hasHash() == other.hasHash());
          if (hasHash()) {
            result = result && getHash()
                .equals(other.getHash());
          }
          result = result && (hasReason() == other.hasReason());
          if (hasReason()) {
            result = result && getReason()
                .equals(other.getReason());
          }
          result = result && (hasStart() == other.hasStart());
          if (hasStart()) {
            result = result && getStart()
                .equals(other.getStart());
          }
          result = result && (hasDuration() == other.hasDuration());
          if (hasDuration()) {
            result = result && (getDuration()
                == other.getDuration());
          }
          result = result && unknownFields.equals(other.unknownFields);
          return result;
        }
  
        @java.lang.Override
        public int hashCode() {
          if (memoizedHashCode != 0) {
            return memoizedHashCode;
          }
          int hash = 41;
          hash = (19 * hash) + getDescriptorForType().hashCode();
          if (hasAddress()) {
            hash = (37 * hash) + ADDRESS_FIELD_NUMBER;
            hash = (53 * hash) + getAddress().hashCode();
          }
          if (hasMask()) {
            hash = (37 * hash) + MASK_FIELD_NUMBER;
            hash = (53 * hash) + getMask();
          }
          if (hasName()) {
            hash = (37 * hash) + NAME_FIELD_NUMBER;
            hash = (53 * hash) + getName().hashCode();
          }
          if (hasHash()) {
            hash = (37 * hash) + HASH_FIELD_NUMBER;
            hash = (53 * hash) + getHash().hashCode();
          }
          if (hasReason()) {
            hash = (37 * hash) + REASON_FIELD_NUMBER;
            hash = (53 * hash) + getReason().hashCode();
          }
          if (hasStart()) {
            hash = (37 * hash) + START_FIELD_NUMBER;
            hash = (53 * hash) + getStart().hashCode();
          }
          if (hasDuration()) {
            hash = (37 * hash) + DURATION_FIELD_NUMBER;
            hash = (53 * hash) + getDuration();
          }
          hash = (29 * hash) + unknownFields.hashCode();
          memoizedHashCode = hash;
          return hash;
        }
  
        public static com.morlunk.jumble.protobuf.Mumble.BanList.BanEntry parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static com.morlunk.jumble.protobuf.Mumble.BanList.BanEntry parseFrom(
            com.google.protobuf.ByteString data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.morlunk.jumble.protobuf.Mumble.BanList.BanEntry parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static com.morlunk.jumble.protobuf.Mumble.BanList.BanEntry parseFrom(
            byte[] data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.morlunk.jumble.protobuf.Mumble.BanList.BanEntry parseFrom(java.io.InputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input);
        }
        public static com.morlunk.jumble.protobuf.Mumble.BanList.BanEntry parseFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.morlunk.jumble.protobuf.Mumble.BanList.BanEntry parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseDelimitedWithIOException(PARSER, input);
        }
        public static com.morlunk.jumble.protobuf.Mumble.BanList.BanEntry parseDelimitedFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.morlunk.jumble.protobuf.Mumble.BanList.BanEntry parseFrom(
            com.google.protobuf.CodedInputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input);
        }
        public static com.morlunk.jumble.protobuf.Mumble.BanList.BanEntry parseFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input, extensionRegistry);
        }
  
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder() {
          return DEFAULT_INSTANCE.toBuilder();
        }
        public static Builder newBuilder(com.morlunk.jumble.protobuf.Mumble.BanList.BanEntry prototype) {
          return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }
        public Builder toBuilder() {
          return this == DEFAULT_INSTANCE
              ? new Builder() : new Builder().mergeFrom(this);
        }
  
        @java.lang.Override
        protected Builder newBuilderForType(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          Builder builder = new Builder(parent);
          return builder;
        }
        /**
         * Protobuf type {@code MumbleProto.BanList.BanEntry}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
            // @@protoc_insertion_point(builder_implements:MumbleProto.BanList.BanEntry)
            com.morlunk.jumble.protobuf.Mumble.BanList.BanEntryOrBuilder {
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_BanList_BanEntry_descriptor;
          }
  
          protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_BanList_BanEntry_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    com.morlunk.jumble.protobuf.Mumble.BanList.BanEntry.class, com.morlunk.jumble.protobuf.Mumble.BanList.BanEntry.Builder.class);
          }
  
          // Construct using com.morlunk.jumble.protobuf.Mumble.BanList.BanEntry.newBuilder()
          private Builder() {
            maybeForceBuilderInitialization();
          }
  
          private Builder(
              com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            super(parent);
            maybeForceBuilderInitialization();
          }
          private void maybeForceBuilderInitialization() {
            if (com.google.protobuf.GeneratedMessageV3
                    .alwaysUseFieldBuilders) {
            }
          }
          public Builder clear() {
            super.clear();
            address_ = com.google.protobuf.ByteString.EMPTY;
            bitField0_ = (bitField0_ & ~0x00000001);
            mask_ = 0;
            bitField0_ = (bitField0_ & ~0x00000002);
            name_ = "";
            bitField0_ = (bitField0_ & ~0x00000004);
            hash_ = "";
            bitField0_ = (bitField0_ & ~0x00000008);
            reason_ = "";
            bitField0_ = (bitField0_ & ~0x00000010);
            start_ = "";
            bitField0_ = (bitField0_ & ~0x00000020);
            duration_ = 0;
            bitField0_ = (bitField0_ & ~0x00000040);
            return this;
          }
  
          public com.google.protobuf.Descriptors.Descriptor
              getDescriptorForType() {
            return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_BanList_BanEntry_descriptor;
          }
  
          public com.morlunk.jumble.protobuf.Mumble.BanList.BanEntry getDefaultInstanceForType() {
            return com.morlunk.jumble.protobuf.Mumble.BanList.BanEntry.getDefaultInstance();
          }
  
          public com.morlunk.jumble.protobuf.Mumble.BanList.BanEntry build() {
            com.morlunk.jumble.protobuf.Mumble.BanList.BanEntry result = buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(result);
            }
            return result;
          }
  
          public com.morlunk.jumble.protobuf.Mumble.BanList.BanEntry buildPartial() {
            com.morlunk.jumble.protobuf.Mumble.BanList.BanEntry result = new com.morlunk.jumble.protobuf.Mumble.BanList.BanEntry(this);
            int from_bitField0_ = bitField0_;
            int to_bitField0_ = 0;
            if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
              to_bitField0_ |= 0x00000001;
            }
            result.address_ = address_;
            if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
              to_bitField0_ |= 0x00000002;
            }
            result.mask_ = mask_;
            if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
              to_bitField0_ |= 0x00000004;
            }
            result.name_ = name_;
            if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
              to_bitField0_ |= 0x00000008;
            }
            result.hash_ = hash_;
            if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
              to_bitField0_ |= 0x00000010;
            }
            result.reason_ = reason_;
            if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
              to_bitField0_ |= 0x00000020;
            }
            result.start_ = start_;
            if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
              to_bitField0_ |= 0x00000040;
            }
            result.duration_ = duration_;
            result.bitField0_ = to_bitField0_;
            onBuilt();
            return result;
          }
  
          public Builder clone() {
            return (Builder) super.clone();
          }
          public Builder setField(
              com.google.protobuf.Descriptors.FieldDescriptor field,
              Object value) {
            return (Builder) super.setField(field, value);
          }
          public Builder clearField(
              com.google.protobuf.Descriptors.FieldDescriptor field) {
            return (Builder) super.clearField(field);
          }
          public Builder clearOneof(
              com.google.protobuf.Descriptors.OneofDescriptor oneof) {
            return (Builder) super.clearOneof(oneof);
          }
          public Builder setRepeatedField(
              com.google.protobuf.Descriptors.FieldDescriptor field,
              int index, Object value) {
            return (Builder) super.setRepeatedField(field, index, value);
          }
          public Builder addRepeatedField(
              com.google.protobuf.Descriptors.FieldDescriptor field,
              Object value) {
            return (Builder) super.addRepeatedField(field, value);
          }
          public Builder mergeFrom(com.google.protobuf.Message other) {
            if (other instanceof com.morlunk.jumble.protobuf.Mumble.BanList.BanEntry) {
              return mergeFrom((com.morlunk.jumble.protobuf.Mumble.BanList.BanEntry)other);
            } else {
              super.mergeFrom(other);
              return this;
            }
          }
  
          public Builder mergeFrom(com.morlunk.jumble.protobuf.Mumble.BanList.BanEntry other) {
            if (other == com.morlunk.jumble.protobuf.Mumble.BanList.BanEntry.getDefaultInstance()) return this;
            if (other.hasAddress()) {
              setAddress(other.getAddress());
            }
            if (other.hasMask()) {
              setMask(other.getMask());
            }
            if (other.hasName()) {
              bitField0_ |= 0x00000004;
              name_ = other.name_;
              onChanged();
            }
            if (other.hasHash()) {
              bitField0_ |= 0x00000008;
              hash_ = other.hash_;
              onChanged();
            }
            if (other.hasReason()) {
              bitField0_ |= 0x00000010;
              reason_ = other.reason_;
              onChanged();
            }
            if (other.hasStart()) {
              bitField0_ |= 0x00000020;
              start_ = other.start_;
              onChanged();
            }
            if (other.hasDuration()) {
              setDuration(other.getDuration());
            }
            this.mergeUnknownFields(other.unknownFields);
            onChanged();
            return this;
          }
  
          public final boolean isInitialized() {
            if (!hasAddress()) {
              return false;
            }
            if (!hasMask()) {
              return false;
            }
            return true;
          }
  
          public Builder mergeFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            com.morlunk.jumble.protobuf.Mumble.BanList.BanEntry parsedMessage = null;
            try {
              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              parsedMessage = (com.morlunk.jumble.protobuf.Mumble.BanList.BanEntry) e.getUnfinishedMessage();
              throw e.unwrapIOException();
            } finally {
              if (parsedMessage != null) {
                mergeFrom(parsedMessage);
              }
            }
            return this;
          }
          private int bitField0_;
  
          private com.google.protobuf.ByteString address_ = com.google.protobuf.ByteString.EMPTY;
          /**
           * <code>required bytes address = 1;</code>
           */
          public boolean hasAddress() {
            return ((bitField0_ & 0x00000001) == 0x00000001);
          }
          /**
           * <code>required bytes address = 1;</code>
           */
          public com.google.protobuf.ByteString getAddress() {
            return address_;
          }
          /**
           * <code>required bytes address = 1;</code>
           */
          public Builder setAddress(com.google.protobuf.ByteString value) {
            if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000001;
            address_ = value;
            onChanged();
            return this;
          }
          /**
           * <code>required bytes address = 1;</code>
           */
          public Builder clearAddress() {
            bitField0_ = (bitField0_ & ~0x00000001);
            address_ = getDefaultInstance().getAddress();
            onChanged();
            return this;
          }
  
          private int mask_ ;
          /**
           * <code>required uint32 mask = 2;</code>
           */
          public boolean hasMask() {
            return ((bitField0_ & 0x00000002) == 0x00000002);
          }
          /**
           * <code>required uint32 mask = 2;</code>
           */
          public int getMask() {
            return mask_;
          }
          /**
           * <code>required uint32 mask = 2;</code>
           */
          public Builder setMask(int value) {
            bitField0_ |= 0x00000002;
            mask_ = value;
            onChanged();
            return this;
          }
          /**
           * <code>required uint32 mask = 2;</code>
           */
          public Builder clearMask() {
            bitField0_ = (bitField0_ & ~0x00000002);
            mask_ = 0;
            onChanged();
            return this;
          }
  
          private java.lang.Object name_ = "";
          /**
           * <code>optional string name = 3;</code>
           */
          public boolean hasName() {
            return ((bitField0_ & 0x00000004) == 0x00000004);
          }
          /**
           * <code>optional string name = 3;</code>
           */
          public java.lang.String getName() {
            java.lang.Object ref = name_;
            if (!(ref instanceof java.lang.String)) {
              com.google.protobuf.ByteString bs =
                  (com.google.protobuf.ByteString) ref;
              java.lang.String s = bs.toStringUtf8();
              if (bs.isValidUtf8()) {
                name_ = s;
              }
              return s;
            } else {
              return (java.lang.String) ref;
            }
          }
          /**
           * <code>optional string name = 3;</code>
           */
          public com.google.protobuf.ByteString
              getNameBytes() {
            java.lang.Object ref = name_;
            if (ref instanceof String) {
              com.google.protobuf.ByteString b = 
                  com.google.protobuf.ByteString.copyFromUtf8(
                      (java.lang.String) ref);
              name_ = b;
              return b;
            } else {
              return (com.google.protobuf.ByteString) ref;
            }
          }
          /**
           * <code>optional string name = 3;</code>
           */
          public Builder setName(
              java.lang.String value) {
            if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000004;
            name_ = value;
            onChanged();
            return this;
          }
          /**
           * <code>optional string name = 3;</code>
           */
          public Builder clearName() {
            bitField0_ = (bitField0_ & ~0x00000004);
            name_ = getDefaultInstance().getName();
            onChanged();
            return this;
          }
          /**
           * <code>optional string name = 3;</code>
           */
          public Builder setNameBytes(
              com.google.protobuf.ByteString value) {
            if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000004;
            name_ = value;
            onChanged();
            return this;
          }
  
          private java.lang.Object hash_ = "";
          /**
           * <code>optional string hash = 4;</code>
           */
          public boolean hasHash() {
            return ((bitField0_ & 0x00000008) == 0x00000008);
          }
          /**
           * <code>optional string hash = 4;</code>
           */
          public java.lang.String getHash() {
            java.lang.Object ref = hash_;
            if (!(ref instanceof java.lang.String)) {
              com.google.protobuf.ByteString bs =
                  (com.google.protobuf.ByteString) ref;
              java.lang.String s = bs.toStringUtf8();
              if (bs.isValidUtf8()) {
                hash_ = s;
              }
              return s;
            } else {
              return (java.lang.String) ref;
            }
          }
          /**
           * <code>optional string hash = 4;</code>
           */
          public com.google.protobuf.ByteString
              getHashBytes() {
            java.lang.Object ref = hash_;
            if (ref instanceof String) {
              com.google.protobuf.ByteString b = 
                  com.google.protobuf.ByteString.copyFromUtf8(
                      (java.lang.String) ref);
              hash_ = b;
              return b;
            } else {
              return (com.google.protobuf.ByteString) ref;
            }
          }
          /**
           * <code>optional string hash = 4;</code>
           */
          public Builder setHash(
              java.lang.String value) {
            if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000008;
            hash_ = value;
            onChanged();
            return this;
          }
          /**
           * <code>optional string hash = 4;</code>
           */
          public Builder clearHash() {
            bitField0_ = (bitField0_ & ~0x00000008);
            hash_ = getDefaultInstance().getHash();
            onChanged();
            return this;
          }
          /**
           * <code>optional string hash = 4;</code>
           */
          public Builder setHashBytes(
              com.google.protobuf.ByteString value) {
            if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000008;
            hash_ = value;
            onChanged();
            return this;
          }
  
          private java.lang.Object reason_ = "";
          /**
           * <code>optional string reason = 5;</code>
           */
          public boolean hasReason() {
            return ((bitField0_ & 0x00000010) == 0x00000010);
          }
          /**
           * <code>optional string reason = 5;</code>
           */
          public java.lang.String getReason() {
            java.lang.Object ref = reason_;
            if (!(ref instanceof java.lang.String)) {
              com.google.protobuf.ByteString bs =
                  (com.google.protobuf.ByteString) ref;
              java.lang.String s = bs.toStringUtf8();
              if (bs.isValidUtf8()) {
                reason_ = s;
              }
              return s;
            } else {
              return (java.lang.String) ref;
            }
          }
          /**
           * <code>optional string reason = 5;</code>
           */
          public com.google.protobuf.ByteString
              getReasonBytes() {
            java.lang.Object ref = reason_;
            if (ref instanceof String) {
              com.google.protobuf.ByteString b = 
                  com.google.protobuf.ByteString.copyFromUtf8(
                      (java.lang.String) ref);
              reason_ = b;
              return b;
            } else {
              return (com.google.protobuf.ByteString) ref;
            }
          }
          /**
           * <code>optional string reason = 5;</code>
           */
          public Builder setReason(
              java.lang.String value) {
            if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000010;
            reason_ = value;
            onChanged();
            return this;
          }
          /**
           * <code>optional string reason = 5;</code>
           */
          public Builder clearReason() {
            bitField0_ = (bitField0_ & ~0x00000010);
            reason_ = getDefaultInstance().getReason();
            onChanged();
            return this;
          }
          /**
           * <code>optional string reason = 5;</code>
           */
          public Builder setReasonBytes(
              com.google.protobuf.ByteString value) {
            if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000010;
            reason_ = value;
            onChanged();
            return this;
          }
  
          private java.lang.Object start_ = "";
          /**
           * <code>optional string start = 6;</code>
           */
          public boolean hasStart() {
            return ((bitField0_ & 0x00000020) == 0x00000020);
          }
          /**
           * <code>optional string start = 6;</code>
           */
          public java.lang.String getStart() {
            java.lang.Object ref = start_;
            if (!(ref instanceof java.lang.String)) {
              com.google.protobuf.ByteString bs =
                  (com.google.protobuf.ByteString) ref;
              java.lang.String s = bs.toStringUtf8();
              if (bs.isValidUtf8()) {
                start_ = s;
              }
              return s;
            } else {
              return (java.lang.String) ref;
            }
          }
          /**
           * <code>optional string start = 6;</code>
           */
          public com.google.protobuf.ByteString
              getStartBytes() {
            java.lang.Object ref = start_;
            if (ref instanceof String) {
              com.google.protobuf.ByteString b = 
                  com.google.protobuf.ByteString.copyFromUtf8(
                      (java.lang.String) ref);
              start_ = b;
              return b;
            } else {
              return (com.google.protobuf.ByteString) ref;
            }
          }
          /**
           * <code>optional string start = 6;</code>
           */
          public Builder setStart(
              java.lang.String value) {
            if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000020;
            start_ = value;
            onChanged();
            return this;
          }
          /**
           * <code>optional string start = 6;</code>
           */
          public Builder clearStart() {
            bitField0_ = (bitField0_ & ~0x00000020);
            start_ = getDefaultInstance().getStart();
            onChanged();
            return this;
          }
          /**
           * <code>optional string start = 6;</code>
           */
          public Builder setStartBytes(
              com.google.protobuf.ByteString value) {
            if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000020;
            start_ = value;
            onChanged();
            return this;
          }
  
          private int duration_ ;
          /**
           * <code>optional uint32 duration = 7;</code>
           */
          public boolean hasDuration() {
            return ((bitField0_ & 0x00000040) == 0x00000040);
          }
          /**
           * <code>optional uint32 duration = 7;</code>
           */
          public int getDuration() {
            return duration_;
          }
          /**
           * <code>optional uint32 duration = 7;</code>
           */
          public Builder setDuration(int value) {
            bitField0_ |= 0x00000040;
            duration_ = value;
            onChanged();
            return this;
          }
          /**
           * <code>optional uint32 duration = 7;</code>
           */
          public Builder clearDuration() {
            bitField0_ = (bitField0_ & ~0x00000040);
            duration_ = 0;
            onChanged();
            return this;
          }
          public final Builder setUnknownFields(
              final com.google.protobuf.UnknownFieldSet unknownFields) {
            return super.setUnknownFields(unknownFields);
          }
  
          public final Builder mergeUnknownFields(
              final com.google.protobuf.UnknownFieldSet unknownFields) {
            return super.mergeUnknownFields(unknownFields);
          }
  
  
          // @@protoc_insertion_point(builder_scope:MumbleProto.BanList.BanEntry)
        }
  
        // @@protoc_insertion_point(class_scope:MumbleProto.BanList.BanEntry)
        private static final com.morlunk.jumble.protobuf.Mumble.BanList.BanEntry DEFAULT_INSTANCE;
        static {
          DEFAULT_INSTANCE = new com.morlunk.jumble.protobuf.Mumble.BanList.BanEntry();
        }
  
        public static com.morlunk.jumble.protobuf.Mumble.BanList.BanEntry getDefaultInstance() {
          return DEFAULT_INSTANCE;
        }
  
        @java.lang.Deprecated public static final com.google.protobuf.Parser<BanEntry>
            PARSER = new com.google.protobuf.AbstractParser<BanEntry>() {
          public BanEntry parsePartialFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
              return new BanEntry(input, extensionRegistry);
          }
        };
  
        public static com.google.protobuf.Parser<BanEntry> parser() {
          return PARSER;
        }
  
        @java.lang.Override
        public com.google.protobuf.Parser<BanEntry> getParserForType() {
          return PARSER;
        }
  
        public com.morlunk.jumble.protobuf.Mumble.BanList.BanEntry getDefaultInstanceForType() {
          return DEFAULT_INSTANCE;
        }
  
      }
  
      private int bitField0_;
      public static final int BANS_FIELD_NUMBER = 1;
      private java.util.List<com.morlunk.jumble.protobuf.Mumble.BanList.BanEntry> bans_;
      /**
       * <code>repeated .MumbleProto.BanList.BanEntry bans = 1;</code>
       */
      public java.util.List<com.morlunk.jumble.protobuf.Mumble.BanList.BanEntry> getBansList() {
        return bans_;
      }
      /**
       * <code>repeated .MumbleProto.BanList.BanEntry bans = 1;</code>
       */
      public java.util.List<? extends com.morlunk.jumble.protobuf.Mumble.BanList.BanEntryOrBuilder> 
          getBansOrBuilderList() {
        return bans_;
      }
      /**
       * <code>repeated .MumbleProto.BanList.BanEntry bans = 1;</code>
       */
      public int getBansCount() {
        return bans_.size();
      }
      /**
       * <code>repeated .MumbleProto.BanList.BanEntry bans = 1;</code>
       */
      public com.morlunk.jumble.protobuf.Mumble.BanList.BanEntry getBans(int index) {
        return bans_.get(index);
      }
      /**
       * <code>repeated .MumbleProto.BanList.BanEntry bans = 1;</code>
       */
      public com.morlunk.jumble.protobuf.Mumble.BanList.BanEntryOrBuilder getBansOrBuilder(
          int index) {
        return bans_.get(index);
      }
  
      public static final int QUERY_FIELD_NUMBER = 2;
      private boolean query_;
      /**
       * <code>optional bool query = 2 [default = false];</code>
       */
      public boolean hasQuery() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>optional bool query = 2 [default = false];</code>
       */
      public boolean getQuery() {
        return query_;
      }
  
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        for (int i = 0; i < getBansCount(); i++) {
          if (!getBans(i).isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        memoizedIsInitialized = 1;
        return true;
      }
  
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        for (int i = 0; i < bans_.size(); i++) {
          output.writeMessage(1, bans_.get(i));
        }
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeBool(2, query_);
        }
        unknownFields.writeTo(output);
      }
  
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        for (int i = 0; i < bans_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(1, bans_.get(i));
        }
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBoolSize(2, query_);
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }
  
      private static final long serialVersionUID = 0L;
      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.morlunk.jumble.protobuf.Mumble.BanList)) {
          return super.equals(obj);
        }
        com.morlunk.jumble.protobuf.Mumble.BanList other = (com.morlunk.jumble.protobuf.Mumble.BanList) obj;
  
        boolean result = true;
        result = result && getBansList()
            .equals(other.getBansList());
        result = result && (hasQuery() == other.hasQuery());
        if (hasQuery()) {
          result = result && (getQuery()
              == other.getQuery());
        }
        result = result && unknownFields.equals(other.unknownFields);
        return result;
      }
  
      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptorForType().hashCode();
        if (getBansCount() > 0) {
          hash = (37 * hash) + BANS_FIELD_NUMBER;
          hash = (53 * hash) + getBansList().hashCode();
        }
        if (hasQuery()) {
          hash = (37 * hash) + QUERY_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
              getQuery());
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static com.morlunk.jumble.protobuf.Mumble.BanList parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.morlunk.jumble.protobuf.Mumble.BanList parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.BanList parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.morlunk.jumble.protobuf.Mumble.BanList parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.BanList parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.morlunk.jumble.protobuf.Mumble.BanList parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.BanList parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.morlunk.jumble.protobuf.Mumble.BanList parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.BanList parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.morlunk.jumble.protobuf.Mumble.BanList parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
  
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(com.morlunk.jumble.protobuf.Mumble.BanList prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }
  
      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code MumbleProto.BanList}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:MumbleProto.BanList)
          com.morlunk.jumble.protobuf.Mumble.BanListOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_BanList_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_BanList_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.morlunk.jumble.protobuf.Mumble.BanList.class, com.morlunk.jumble.protobuf.Mumble.BanList.Builder.class);
        }
  
        // Construct using com.morlunk.jumble.protobuf.Mumble.BanList.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
  
        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
            getBansFieldBuilder();
          }
        }
        public Builder clear() {
          super.clear();
          if (bansBuilder_ == null) {
            bans_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            bansBuilder_.clear();
          }
          query_ = false;
          bitField0_ = (bitField0_ & ~0x00000002);
          return this;
        }
  
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_BanList_descriptor;
        }
  
        public com.morlunk.jumble.protobuf.Mumble.BanList getDefaultInstanceForType() {
          return com.morlunk.jumble.protobuf.Mumble.BanList.getDefaultInstance();
        }
  
        public com.morlunk.jumble.protobuf.Mumble.BanList build() {
          com.morlunk.jumble.protobuf.Mumble.BanList result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        public com.morlunk.jumble.protobuf.Mumble.BanList buildPartial() {
          com.morlunk.jumble.protobuf.Mumble.BanList result = new com.morlunk.jumble.protobuf.Mumble.BanList(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (bansBuilder_ == null) {
            if (((bitField0_ & 0x00000001) == 0x00000001)) {
              bans_ = java.util.Collections.unmodifiableList(bans_);
              bitField0_ = (bitField0_ & ~0x00000001);
            }
            result.bans_ = bans_;
          } else {
            result.bans_ = bansBuilder_.build();
          }
          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
            to_bitField0_ |= 0x00000001;
          }
          result.query_ = query_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
  
        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.setField(field, value);
        }
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return (Builder) super.clearField(field);
        }
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return (Builder) super.clearOneof(oneof);
        }
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.morlunk.jumble.protobuf.Mumble.BanList) {
            return mergeFrom((com.morlunk.jumble.protobuf.Mumble.BanList)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(com.morlunk.jumble.protobuf.Mumble.BanList other) {
          if (other == com.morlunk.jumble.protobuf.Mumble.BanList.getDefaultInstance()) return this;
          if (bansBuilder_ == null) {
            if (!other.bans_.isEmpty()) {
              if (bans_.isEmpty()) {
                bans_ = other.bans_;
                bitField0_ = (bitField0_ & ~0x00000001);
              } else {
                ensureBansIsMutable();
                bans_.addAll(other.bans_);
              }
              onChanged();
            }
          } else {
            if (!other.bans_.isEmpty()) {
              if (bansBuilder_.isEmpty()) {
                bansBuilder_.dispose();
                bansBuilder_ = null;
                bans_ = other.bans_;
                bitField0_ = (bitField0_ & ~0x00000001);
                bansBuilder_ = 
                  com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                     getBansFieldBuilder() : null;
              } else {
                bansBuilder_.addAllMessages(other.bans_);
              }
            }
          }
          if (other.hasQuery()) {
            setQuery(other.getQuery());
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }
  
        public final boolean isInitialized() {
          for (int i = 0; i < getBansCount(); i++) {
            if (!getBans(i).isInitialized()) {
              return false;
            }
          }
          return true;
        }
  
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.morlunk.jumble.protobuf.Mumble.BanList parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (com.morlunk.jumble.protobuf.Mumble.BanList) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;
  
        private java.util.List<com.morlunk.jumble.protobuf.Mumble.BanList.BanEntry> bans_ =
          java.util.Collections.emptyList();
        private void ensureBansIsMutable() {
          if (!((bitField0_ & 0x00000001) == 0x00000001)) {
            bans_ = new java.util.ArrayList<com.morlunk.jumble.protobuf.Mumble.BanList.BanEntry>(bans_);
            bitField0_ |= 0x00000001;
           }
        }
  
        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.morlunk.jumble.protobuf.Mumble.BanList.BanEntry, com.morlunk.jumble.protobuf.Mumble.BanList.BanEntry.Builder, com.morlunk.jumble.protobuf.Mumble.BanList.BanEntryOrBuilder> bansBuilder_;
  
        /**
         * <code>repeated .MumbleProto.BanList.BanEntry bans = 1;</code>
         */
        public java.util.List<com.morlunk.jumble.protobuf.Mumble.BanList.BanEntry> getBansList() {
          if (bansBuilder_ == null) {
            return java.util.Collections.unmodifiableList(bans_);
          } else {
            return bansBuilder_.getMessageList();
          }
        }
        /**
         * <code>repeated .MumbleProto.BanList.BanEntry bans = 1;</code>
         */
        public int getBansCount() {
          if (bansBuilder_ == null) {
            return bans_.size();
          } else {
            return bansBuilder_.getCount();
          }
        }
        /**
         * <code>repeated .MumbleProto.BanList.BanEntry bans = 1;</code>
         */
        public com.morlunk.jumble.protobuf.Mumble.BanList.BanEntry getBans(int index) {
          if (bansBuilder_ == null) {
            return bans_.get(index);
          } else {
            return bansBuilder_.getMessage(index);
          }
        }
        /**
         * <code>repeated .MumbleProto.BanList.BanEntry bans = 1;</code>
         */
        public Builder setBans(
            int index, com.morlunk.jumble.protobuf.Mumble.BanList.BanEntry value) {
          if (bansBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureBansIsMutable();
            bans_.set(index, value);
            onChanged();
          } else {
            bansBuilder_.setMessage(index, value);
          }
          return this;
        }
        /**
         * <code>repeated .MumbleProto.BanList.BanEntry bans = 1;</code>
         */
        public Builder setBans(
            int index, com.morlunk.jumble.protobuf.Mumble.BanList.BanEntry.Builder builderForValue) {
          if (bansBuilder_ == null) {
            ensureBansIsMutable();
            bans_.set(index, builderForValue.build());
            onChanged();
          } else {
            bansBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .MumbleProto.BanList.BanEntry bans = 1;</code>
         */
        public Builder addBans(com.morlunk.jumble.protobuf.Mumble.BanList.BanEntry value) {
          if (bansBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureBansIsMutable();
            bans_.add(value);
            onChanged();
          } else {
            bansBuilder_.addMessage(value);
          }
          return this;
        }
        /**
         * <code>repeated .MumbleProto.BanList.BanEntry bans = 1;</code>
         */
        public Builder addBans(
            int index, com.morlunk.jumble.protobuf.Mumble.BanList.BanEntry value) {
          if (bansBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureBansIsMutable();
            bans_.add(index, value);
            onChanged();
          } else {
            bansBuilder_.addMessage(index, value);
          }
          return this;
        }
        /**
         * <code>repeated .MumbleProto.BanList.BanEntry bans = 1;</code>
         */
        public Builder addBans(
            com.morlunk.jumble.protobuf.Mumble.BanList.BanEntry.Builder builderForValue) {
          if (bansBuilder_ == null) {
            ensureBansIsMutable();
            bans_.add(builderForValue.build());
            onChanged();
          } else {
            bansBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .MumbleProto.BanList.BanEntry bans = 1;</code>
         */
        public Builder addBans(
            int index, com.morlunk.jumble.protobuf.Mumble.BanList.BanEntry.Builder builderForValue) {
          if (bansBuilder_ == null) {
            ensureBansIsMutable();
            bans_.add(index, builderForValue.build());
            onChanged();
          } else {
            bansBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .MumbleProto.BanList.BanEntry bans = 1;</code>
         */
        public Builder addAllBans(
            java.lang.Iterable<? extends com.morlunk.jumble.protobuf.Mumble.BanList.BanEntry> values) {
          if (bansBuilder_ == null) {
            ensureBansIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, bans_);
            onChanged();
          } else {
            bansBuilder_.addAllMessages(values);
          }
          return this;
        }
        /**
         * <code>repeated .MumbleProto.BanList.BanEntry bans = 1;</code>
         */
        public Builder clearBans() {
          if (bansBuilder_ == null) {
            bans_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000001);
            onChanged();
          } else {
            bansBuilder_.clear();
          }
          return this;
        }
        /**
         * <code>repeated .MumbleProto.BanList.BanEntry bans = 1;</code>
         */
        public Builder removeBans(int index) {
          if (bansBuilder_ == null) {
            ensureBansIsMutable();
            bans_.remove(index);
            onChanged();
          } else {
            bansBuilder_.remove(index);
          }
          return this;
        }
        /**
         * <code>repeated .MumbleProto.BanList.BanEntry bans = 1;</code>
         */
        public com.morlunk.jumble.protobuf.Mumble.BanList.BanEntry.Builder getBansBuilder(
            int index) {
          return getBansFieldBuilder().getBuilder(index);
        }
        /**
         * <code>repeated .MumbleProto.BanList.BanEntry bans = 1;</code>
         */
        public com.morlunk.jumble.protobuf.Mumble.BanList.BanEntryOrBuilder getBansOrBuilder(
            int index) {
          if (bansBuilder_ == null) {
            return bans_.get(index);  } else {
            return bansBuilder_.getMessageOrBuilder(index);
          }
        }
        /**
         * <code>repeated .MumbleProto.BanList.BanEntry bans = 1;</code>
         */
        public java.util.List<? extends com.morlunk.jumble.protobuf.Mumble.BanList.BanEntryOrBuilder> 
             getBansOrBuilderList() {
          if (bansBuilder_ != null) {
            return bansBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(bans_);
          }
        }
        /**
         * <code>repeated .MumbleProto.BanList.BanEntry bans = 1;</code>
         */
        public com.morlunk.jumble.protobuf.Mumble.BanList.BanEntry.Builder addBansBuilder() {
          return getBansFieldBuilder().addBuilder(
              com.morlunk.jumble.protobuf.Mumble.BanList.BanEntry.getDefaultInstance());
        }
        /**
         * <code>repeated .MumbleProto.BanList.BanEntry bans = 1;</code>
         */
        public com.morlunk.jumble.protobuf.Mumble.BanList.BanEntry.Builder addBansBuilder(
            int index) {
          return getBansFieldBuilder().addBuilder(
              index, com.morlunk.jumble.protobuf.Mumble.BanList.BanEntry.getDefaultInstance());
        }
        /**
         * <code>repeated .MumbleProto.BanList.BanEntry bans = 1;</code>
         */
        public java.util.List<com.morlunk.jumble.protobuf.Mumble.BanList.BanEntry.Builder> 
             getBansBuilderList() {
          return getBansFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.morlunk.jumble.protobuf.Mumble.BanList.BanEntry, com.morlunk.jumble.protobuf.Mumble.BanList.BanEntry.Builder, com.morlunk.jumble.protobuf.Mumble.BanList.BanEntryOrBuilder> 
            getBansFieldBuilder() {
          if (bansBuilder_ == null) {
            bansBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
                com.morlunk.jumble.protobuf.Mumble.BanList.BanEntry, com.morlunk.jumble.protobuf.Mumble.BanList.BanEntry.Builder, com.morlunk.jumble.protobuf.Mumble.BanList.BanEntryOrBuilder>(
                    bans_,
                    ((bitField0_ & 0x00000001) == 0x00000001),
                    getParentForChildren(),
                    isClean());
            bans_ = null;
          }
          return bansBuilder_;
        }
  
        private boolean query_ ;
        /**
         * <code>optional bool query = 2 [default = false];</code>
         */
        public boolean hasQuery() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * <code>optional bool query = 2 [default = false];</code>
         */
        public boolean getQuery() {
          return query_;
        }
        /**
         * <code>optional bool query = 2 [default = false];</code>
         */
        public Builder setQuery(boolean value) {
          bitField0_ |= 0x00000002;
          query_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional bool query = 2 [default = false];</code>
         */
        public Builder clearQuery() {
          bitField0_ = (bitField0_ & ~0x00000002);
          query_ = false;
          onChanged();
          return this;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }
  
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:MumbleProto.BanList)
      }
  
      // @@protoc_insertion_point(class_scope:MumbleProto.BanList)
      private static final com.morlunk.jumble.protobuf.Mumble.BanList DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.morlunk.jumble.protobuf.Mumble.BanList();
      }
  
      public static com.morlunk.jumble.protobuf.Mumble.BanList getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      @java.lang.Deprecated public static final com.google.protobuf.Parser<BanList>
          PARSER = new com.google.protobuf.AbstractParser<BanList>() {
        public BanList parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return new BanList(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<BanList> parser() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.google.protobuf.Parser<BanList> getParserForType() {
        return PARSER;
      }
  
      public com.morlunk.jumble.protobuf.Mumble.BanList getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface TextMessageOrBuilder extends
        // @@protoc_insertion_point(interface_extends:MumbleProto.TextMessage)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <code>optional uint32 actor = 1;</code>
       */
      boolean hasActor();
      /**
       * <code>optional uint32 actor = 1;</code>
       */
      int getActor();
  
      /**
       * <code>repeated uint32 session = 2;</code>
       */
      java.util.List<java.lang.Integer> getSessionList();
      /**
       * <code>repeated uint32 session = 2;</code>
       */
      int getSessionCount();
      /**
       * <code>repeated uint32 session = 2;</code>
       */
      int getSession(int index);
  
      /**
       * <code>repeated uint32 channel_id = 3;</code>
       */
      java.util.List<java.lang.Integer> getChannelIdList();
      /**
       * <code>repeated uint32 channel_id = 3;</code>
       */
      int getChannelIdCount();
      /**
       * <code>repeated uint32 channel_id = 3;</code>
       */
      int getChannelId(int index);
  
      /**
       * <code>repeated uint32 tree_id = 4;</code>
       */
      java.util.List<java.lang.Integer> getTreeIdList();
      /**
       * <code>repeated uint32 tree_id = 4;</code>
       */
      int getTreeIdCount();
      /**
       * <code>repeated uint32 tree_id = 4;</code>
       */
      int getTreeId(int index);
  
      /**
       * <code>required string message = 5;</code>
       */
      boolean hasMessage();
      /**
       * <code>required string message = 5;</code>
       */
      java.lang.String getMessage();
      /**
       * <code>required string message = 5;</code>
       */
      com.google.protobuf.ByteString
          getMessageBytes();
    }
    /**
     * Protobuf type {@code MumbleProto.TextMessage}
     */
    public  static final class TextMessage extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:MumbleProto.TextMessage)
        TextMessageOrBuilder {
      // Use TextMessage.newBuilder() to construct.
      private TextMessage(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private TextMessage() {
        actor_ = 0;
        session_ = java.util.Collections.emptyList();
        channelId_ = java.util.Collections.emptyList();
        treeId_ = java.util.Collections.emptyList();
        message_ = "";
      }
  
      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private TextMessage(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        int mutable_bitField0_ = 0;
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder();
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              default: {
                if (!parseUnknownField(input, unknownFields,
                                       extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 8: {
                bitField0_ |= 0x00000001;
                actor_ = input.readUInt32();
                break;
              }
              case 16: {
                if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                  session_ = new java.util.ArrayList<java.lang.Integer>();
                  mutable_bitField0_ |= 0x00000002;
                }
                session_.add(input.readUInt32());
                break;
              }
              case 18: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                if (!((mutable_bitField0_ & 0x00000002) == 0x00000002) && input.getBytesUntilLimit() > 0) {
                  session_ = new java.util.ArrayList<java.lang.Integer>();
                  mutable_bitField0_ |= 0x00000002;
                }
                while (input.getBytesUntilLimit() > 0) {
                  session_.add(input.readUInt32());
                }
                input.popLimit(limit);
                break;
              }
              case 24: {
                if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
                  channelId_ = new java.util.ArrayList<java.lang.Integer>();
                  mutable_bitField0_ |= 0x00000004;
                }
                channelId_.add(input.readUInt32());
                break;
              }
              case 26: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                if (!((mutable_bitField0_ & 0x00000004) == 0x00000004) && input.getBytesUntilLimit() > 0) {
                  channelId_ = new java.util.ArrayList<java.lang.Integer>();
                  mutable_bitField0_ |= 0x00000004;
                }
                while (input.getBytesUntilLimit() > 0) {
                  channelId_.add(input.readUInt32());
                }
                input.popLimit(limit);
                break;
              }
              case 32: {
                if (!((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
                  treeId_ = new java.util.ArrayList<java.lang.Integer>();
                  mutable_bitField0_ |= 0x00000008;
                }
                treeId_.add(input.readUInt32());
                break;
              }
              case 34: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                if (!((mutable_bitField0_ & 0x00000008) == 0x00000008) && input.getBytesUntilLimit() > 0) {
                  treeId_ = new java.util.ArrayList<java.lang.Integer>();
                  mutable_bitField0_ |= 0x00000008;
                }
                while (input.getBytesUntilLimit() > 0) {
                  treeId_.add(input.readUInt32());
                }
                input.popLimit(limit);
                break;
              }
              case 42: {
                com.google.protobuf.ByteString bs = input.readBytes();
                bitField0_ |= 0x00000002;
                message_ = bs;
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
            session_ = java.util.Collections.unmodifiableList(session_);
          }
          if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
            channelId_ = java.util.Collections.unmodifiableList(channelId_);
          }
          if (((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
            treeId_ = java.util.Collections.unmodifiableList(treeId_);
          }
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_TextMessage_descriptor;
      }
  
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_TextMessage_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.morlunk.jumble.protobuf.Mumble.TextMessage.class, com.morlunk.jumble.protobuf.Mumble.TextMessage.Builder.class);
      }
  
      private int bitField0_;
      public static final int ACTOR_FIELD_NUMBER = 1;
      private int actor_;
      /**
       * <code>optional uint32 actor = 1;</code>
       */
      public boolean hasActor() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>optional uint32 actor = 1;</code>
       */
      public int getActor() {
        return actor_;
      }
  
      public static final int SESSION_FIELD_NUMBER = 2;
      private java.util.List<java.lang.Integer> session_;
      /**
       * <code>repeated uint32 session = 2;</code>
       */
      public java.util.List<java.lang.Integer>
          getSessionList() {
        return session_;
      }
      /**
       * <code>repeated uint32 session = 2;</code>
       */
      public int getSessionCount() {
        return session_.size();
      }
      /**
       * <code>repeated uint32 session = 2;</code>
       */
      public int getSession(int index) {
        return session_.get(index);
      }
  
      public static final int CHANNEL_ID_FIELD_NUMBER = 3;
      private java.util.List<java.lang.Integer> channelId_;
      /**
       * <code>repeated uint32 channel_id = 3;</code>
       */
      public java.util.List<java.lang.Integer>
          getChannelIdList() {
        return channelId_;
      }
      /**
       * <code>repeated uint32 channel_id = 3;</code>
       */
      public int getChannelIdCount() {
        return channelId_.size();
      }
      /**
       * <code>repeated uint32 channel_id = 3;</code>
       */
      public int getChannelId(int index) {
        return channelId_.get(index);
      }
  
      public static final int TREE_ID_FIELD_NUMBER = 4;
      private java.util.List<java.lang.Integer> treeId_;
      /**
       * <code>repeated uint32 tree_id = 4;</code>
       */
      public java.util.List<java.lang.Integer>
          getTreeIdList() {
        return treeId_;
      }
      /**
       * <code>repeated uint32 tree_id = 4;</code>
       */
      public int getTreeIdCount() {
        return treeId_.size();
      }
      /**
       * <code>repeated uint32 tree_id = 4;</code>
       */
      public int getTreeId(int index) {
        return treeId_.get(index);
      }
  
      public static final int MESSAGE_FIELD_NUMBER = 5;
      private volatile java.lang.Object message_;
      /**
       * <code>required string message = 5;</code>
       */
      public boolean hasMessage() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required string message = 5;</code>
       */
      public java.lang.String getMessage() {
        java.lang.Object ref = message_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            message_ = s;
          }
          return s;
        }
      }
      /**
       * <code>required string message = 5;</code>
       */
      public com.google.protobuf.ByteString
          getMessageBytes() {
        java.lang.Object ref = message_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          message_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
  
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        if (!hasMessage()) {
          memoizedIsInitialized = 0;
          return false;
        }
        memoizedIsInitialized = 1;
        return true;
      }
  
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeUInt32(1, actor_);
        }
        for (int i = 0; i < session_.size(); i++) {
          output.writeUInt32(2, session_.get(i));
        }
        for (int i = 0; i < channelId_.size(); i++) {
          output.writeUInt32(3, channelId_.get(i));
        }
        for (int i = 0; i < treeId_.size(); i++) {
          output.writeUInt32(4, treeId_.get(i));
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 5, message_);
        }
        unknownFields.writeTo(output);
      }
  
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(1, actor_);
        }
        {
          int dataSize = 0;
          for (int i = 0; i < session_.size(); i++) {
            dataSize += com.google.protobuf.CodedOutputStream
              .computeUInt32SizeNoTag(session_.get(i));
          }
          size += dataSize;
          size += 1 * getSessionList().size();
        }
        {
          int dataSize = 0;
          for (int i = 0; i < channelId_.size(); i++) {
            dataSize += com.google.protobuf.CodedOutputStream
              .computeUInt32SizeNoTag(channelId_.get(i));
          }
          size += dataSize;
          size += 1 * getChannelIdList().size();
        }
        {
          int dataSize = 0;
          for (int i = 0; i < treeId_.size(); i++) {
            dataSize += com.google.protobuf.CodedOutputStream
              .computeUInt32SizeNoTag(treeId_.get(i));
          }
          size += dataSize;
          size += 1 * getTreeIdList().size();
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, message_);
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }
  
      private static final long serialVersionUID = 0L;
      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.morlunk.jumble.protobuf.Mumble.TextMessage)) {
          return super.equals(obj);
        }
        com.morlunk.jumble.protobuf.Mumble.TextMessage other = (com.morlunk.jumble.protobuf.Mumble.TextMessage) obj;
  
        boolean result = true;
        result = result && (hasActor() == other.hasActor());
        if (hasActor()) {
          result = result && (getActor()
              == other.getActor());
        }
        result = result && getSessionList()
            .equals(other.getSessionList());
        result = result && getChannelIdList()
            .equals(other.getChannelIdList());
        result = result && getTreeIdList()
            .equals(other.getTreeIdList());
        result = result && (hasMessage() == other.hasMessage());
        if (hasMessage()) {
          result = result && getMessage()
              .equals(other.getMessage());
        }
        result = result && unknownFields.equals(other.unknownFields);
        return result;
      }
  
      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptorForType().hashCode();
        if (hasActor()) {
          hash = (37 * hash) + ACTOR_FIELD_NUMBER;
          hash = (53 * hash) + getActor();
        }
        if (getSessionCount() > 0) {
          hash = (37 * hash) + SESSION_FIELD_NUMBER;
          hash = (53 * hash) + getSessionList().hashCode();
        }
        if (getChannelIdCount() > 0) {
          hash = (37 * hash) + CHANNEL_ID_FIELD_NUMBER;
          hash = (53 * hash) + getChannelIdList().hashCode();
        }
        if (getTreeIdCount() > 0) {
          hash = (37 * hash) + TREE_ID_FIELD_NUMBER;
          hash = (53 * hash) + getTreeIdList().hashCode();
        }
        if (hasMessage()) {
          hash = (37 * hash) + MESSAGE_FIELD_NUMBER;
          hash = (53 * hash) + getMessage().hashCode();
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static com.morlunk.jumble.protobuf.Mumble.TextMessage parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.morlunk.jumble.protobuf.Mumble.TextMessage parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.TextMessage parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.morlunk.jumble.protobuf.Mumble.TextMessage parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.TextMessage parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.morlunk.jumble.protobuf.Mumble.TextMessage parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.TextMessage parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.morlunk.jumble.protobuf.Mumble.TextMessage parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.TextMessage parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.morlunk.jumble.protobuf.Mumble.TextMessage parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
  
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(com.morlunk.jumble.protobuf.Mumble.TextMessage prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }
  
      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code MumbleProto.TextMessage}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:MumbleProto.TextMessage)
          com.morlunk.jumble.protobuf.Mumble.TextMessageOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_TextMessage_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_TextMessage_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.morlunk.jumble.protobuf.Mumble.TextMessage.class, com.morlunk.jumble.protobuf.Mumble.TextMessage.Builder.class);
        }
  
        // Construct using com.morlunk.jumble.protobuf.Mumble.TextMessage.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
  
        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
          }
        }
        public Builder clear() {
          super.clear();
          actor_ = 0;
          bitField0_ = (bitField0_ & ~0x00000001);
          session_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          channelId_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000004);
          treeId_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000008);
          message_ = "";
          bitField0_ = (bitField0_ & ~0x00000010);
          return this;
        }
  
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_TextMessage_descriptor;
        }
  
        public com.morlunk.jumble.protobuf.Mumble.TextMessage getDefaultInstanceForType() {
          return com.morlunk.jumble.protobuf.Mumble.TextMessage.getDefaultInstance();
        }
  
        public com.morlunk.jumble.protobuf.Mumble.TextMessage build() {
          com.morlunk.jumble.protobuf.Mumble.TextMessage result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        public com.morlunk.jumble.protobuf.Mumble.TextMessage buildPartial() {
          com.morlunk.jumble.protobuf.Mumble.TextMessage result = new com.morlunk.jumble.protobuf.Mumble.TextMessage(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.actor_ = actor_;
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            session_ = java.util.Collections.unmodifiableList(session_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.session_ = session_;
          if (((bitField0_ & 0x00000004) == 0x00000004)) {
            channelId_ = java.util.Collections.unmodifiableList(channelId_);
            bitField0_ = (bitField0_ & ~0x00000004);
          }
          result.channelId_ = channelId_;
          if (((bitField0_ & 0x00000008) == 0x00000008)) {
            treeId_ = java.util.Collections.unmodifiableList(treeId_);
            bitField0_ = (bitField0_ & ~0x00000008);
          }
          result.treeId_ = treeId_;
          if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
            to_bitField0_ |= 0x00000002;
          }
          result.message_ = message_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
  
        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.setField(field, value);
        }
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return (Builder) super.clearField(field);
        }
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return (Builder) super.clearOneof(oneof);
        }
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.morlunk.jumble.protobuf.Mumble.TextMessage) {
            return mergeFrom((com.morlunk.jumble.protobuf.Mumble.TextMessage)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(com.morlunk.jumble.protobuf.Mumble.TextMessage other) {
          if (other == com.morlunk.jumble.protobuf.Mumble.TextMessage.getDefaultInstance()) return this;
          if (other.hasActor()) {
            setActor(other.getActor());
          }
          if (!other.session_.isEmpty()) {
            if (session_.isEmpty()) {
              session_ = other.session_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureSessionIsMutable();
              session_.addAll(other.session_);
            }
            onChanged();
          }
          if (!other.channelId_.isEmpty()) {
            if (channelId_.isEmpty()) {
              channelId_ = other.channelId_;
              bitField0_ = (bitField0_ & ~0x00000004);
            } else {
              ensureChannelIdIsMutable();
              channelId_.addAll(other.channelId_);
            }
            onChanged();
          }
          if (!other.treeId_.isEmpty()) {
            if (treeId_.isEmpty()) {
              treeId_ = other.treeId_;
              bitField0_ = (bitField0_ & ~0x00000008);
            } else {
              ensureTreeIdIsMutable();
              treeId_.addAll(other.treeId_);
            }
            onChanged();
          }
          if (other.hasMessage()) {
            bitField0_ |= 0x00000010;
            message_ = other.message_;
            onChanged();
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }
  
        public final boolean isInitialized() {
          if (!hasMessage()) {
            return false;
          }
          return true;
        }
  
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.morlunk.jumble.protobuf.Mumble.TextMessage parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (com.morlunk.jumble.protobuf.Mumble.TextMessage) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;
  
        private int actor_ ;
        /**
         * <code>optional uint32 actor = 1;</code>
         */
        public boolean hasActor() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <code>optional uint32 actor = 1;</code>
         */
        public int getActor() {
          return actor_;
        }
        /**
         * <code>optional uint32 actor = 1;</code>
         */
        public Builder setActor(int value) {
          bitField0_ |= 0x00000001;
          actor_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional uint32 actor = 1;</code>
         */
        public Builder clearActor() {
          bitField0_ = (bitField0_ & ~0x00000001);
          actor_ = 0;
          onChanged();
          return this;
        }
  
        private java.util.List<java.lang.Integer> session_ = java.util.Collections.emptyList();
        private void ensureSessionIsMutable() {
          if (!((bitField0_ & 0x00000002) == 0x00000002)) {
            session_ = new java.util.ArrayList<java.lang.Integer>(session_);
            bitField0_ |= 0x00000002;
           }
        }
        /**
         * <code>repeated uint32 session = 2;</code>
         */
        public java.util.List<java.lang.Integer>
            getSessionList() {
          return java.util.Collections.unmodifiableList(session_);
        }
        /**
         * <code>repeated uint32 session = 2;</code>
         */
        public int getSessionCount() {
          return session_.size();
        }
        /**
         * <code>repeated uint32 session = 2;</code>
         */
        public int getSession(int index) {
          return session_.get(index);
        }
        /**
         * <code>repeated uint32 session = 2;</code>
         */
        public Builder setSession(
            int index, int value) {
          ensureSessionIsMutable();
          session_.set(index, value);
          onChanged();
          return this;
        }
        /**
         * <code>repeated uint32 session = 2;</code>
         */
        public Builder addSession(int value) {
          ensureSessionIsMutable();
          session_.add(value);
          onChanged();
          return this;
        }
        /**
         * <code>repeated uint32 session = 2;</code>
         */
        public Builder addAllSession(
            java.lang.Iterable<? extends java.lang.Integer> values) {
          ensureSessionIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, session_);
          onChanged();
          return this;
        }
        /**
         * <code>repeated uint32 session = 2;</code>
         */
        public Builder clearSession() {
          session_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
          return this;
        }
  
        private java.util.List<java.lang.Integer> channelId_ = java.util.Collections.emptyList();
        private void ensureChannelIdIsMutable() {
          if (!((bitField0_ & 0x00000004) == 0x00000004)) {
            channelId_ = new java.util.ArrayList<java.lang.Integer>(channelId_);
            bitField0_ |= 0x00000004;
           }
        }
        /**
         * <code>repeated uint32 channel_id = 3;</code>
         */
        public java.util.List<java.lang.Integer>
            getChannelIdList() {
          return java.util.Collections.unmodifiableList(channelId_);
        }
        /**
         * <code>repeated uint32 channel_id = 3;</code>
         */
        public int getChannelIdCount() {
          return channelId_.size();
        }
        /**
         * <code>repeated uint32 channel_id = 3;</code>
         */
        public int getChannelId(int index) {
          return channelId_.get(index);
        }
        /**
         * <code>repeated uint32 channel_id = 3;</code>
         */
        public Builder setChannelId(
            int index, int value) {
          ensureChannelIdIsMutable();
          channelId_.set(index, value);
          onChanged();
          return this;
        }
        /**
         * <code>repeated uint32 channel_id = 3;</code>
         */
        public Builder addChannelId(int value) {
          ensureChannelIdIsMutable();
          channelId_.add(value);
          onChanged();
          return this;
        }
        /**
         * <code>repeated uint32 channel_id = 3;</code>
         */
        public Builder addAllChannelId(
            java.lang.Iterable<? extends java.lang.Integer> values) {
          ensureChannelIdIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, channelId_);
          onChanged();
          return this;
        }
        /**
         * <code>repeated uint32 channel_id = 3;</code>
         */
        public Builder clearChannelId() {
          channelId_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000004);
          onChanged();
          return this;
        }
  
        private java.util.List<java.lang.Integer> treeId_ = java.util.Collections.emptyList();
        private void ensureTreeIdIsMutable() {
          if (!((bitField0_ & 0x00000008) == 0x00000008)) {
            treeId_ = new java.util.ArrayList<java.lang.Integer>(treeId_);
            bitField0_ |= 0x00000008;
           }
        }
        /**
         * <code>repeated uint32 tree_id = 4;</code>
         */
        public java.util.List<java.lang.Integer>
            getTreeIdList() {
          return java.util.Collections.unmodifiableList(treeId_);
        }
        /**
         * <code>repeated uint32 tree_id = 4;</code>
         */
        public int getTreeIdCount() {
          return treeId_.size();
        }
        /**
         * <code>repeated uint32 tree_id = 4;</code>
         */
        public int getTreeId(int index) {
          return treeId_.get(index);
        }
        /**
         * <code>repeated uint32 tree_id = 4;</code>
         */
        public Builder setTreeId(
            int index, int value) {
          ensureTreeIdIsMutable();
          treeId_.set(index, value);
          onChanged();
          return this;
        }
        /**
         * <code>repeated uint32 tree_id = 4;</code>
         */
        public Builder addTreeId(int value) {
          ensureTreeIdIsMutable();
          treeId_.add(value);
          onChanged();
          return this;
        }
        /**
         * <code>repeated uint32 tree_id = 4;</code>
         */
        public Builder addAllTreeId(
            java.lang.Iterable<? extends java.lang.Integer> values) {
          ensureTreeIdIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, treeId_);
          onChanged();
          return this;
        }
        /**
         * <code>repeated uint32 tree_id = 4;</code>
         */
        public Builder clearTreeId() {
          treeId_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000008);
          onChanged();
          return this;
        }
  
        private java.lang.Object message_ = "";
        /**
         * <code>required string message = 5;</code>
         */
        public boolean hasMessage() {
          return ((bitField0_ & 0x00000010) == 0x00000010);
        }
        /**
         * <code>required string message = 5;</code>
         */
        public java.lang.String getMessage() {
          java.lang.Object ref = message_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              message_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>required string message = 5;</code>
         */
        public com.google.protobuf.ByteString
            getMessageBytes() {
          java.lang.Object ref = message_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            message_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>required string message = 5;</code>
         */
        public Builder setMessage(
            java.lang.String value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000010;
          message_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>required string message = 5;</code>
         */
        public Builder clearMessage() {
          bitField0_ = (bitField0_ & ~0x00000010);
          message_ = getDefaultInstance().getMessage();
          onChanged();
          return this;
        }
        /**
         * <code>required string message = 5;</code>
         */
        public Builder setMessageBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000010;
          message_ = value;
          onChanged();
          return this;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }
  
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:MumbleProto.TextMessage)
      }
  
      // @@protoc_insertion_point(class_scope:MumbleProto.TextMessage)
      private static final com.morlunk.jumble.protobuf.Mumble.TextMessage DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.morlunk.jumble.protobuf.Mumble.TextMessage();
      }
  
      public static com.morlunk.jumble.protobuf.Mumble.TextMessage getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      @java.lang.Deprecated public static final com.google.protobuf.Parser<TextMessage>
          PARSER = new com.google.protobuf.AbstractParser<TextMessage>() {
        public TextMessage parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return new TextMessage(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<TextMessage> parser() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.google.protobuf.Parser<TextMessage> getParserForType() {
        return PARSER;
      }
  
      public com.morlunk.jumble.protobuf.Mumble.TextMessage getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface PermissionDeniedOrBuilder extends
        // @@protoc_insertion_point(interface_extends:MumbleProto.PermissionDenied)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <code>optional uint32 permission = 1;</code>
       */
      boolean hasPermission();
      /**
       * <code>optional uint32 permission = 1;</code>
       */
      int getPermission();
  
      /**
       * <code>optional uint32 channel_id = 2;</code>
       */
      boolean hasChannelId();
      /**
       * <code>optional uint32 channel_id = 2;</code>
       */
      int getChannelId();
  
      /**
       * <code>optional uint32 session = 3;</code>
       */
      boolean hasSession();
      /**
       * <code>optional uint32 session = 3;</code>
       */
      int getSession();
  
      /**
       * <code>optional string reason = 4;</code>
       */
      boolean hasReason();
      /**
       * <code>optional string reason = 4;</code>
       */
      java.lang.String getReason();
      /**
       * <code>optional string reason = 4;</code>
       */
      com.google.protobuf.ByteString
          getReasonBytes();
  
      /**
       * <code>optional .MumbleProto.PermissionDenied.DenyType type = 5;</code>
       */
      boolean hasType();
      /**
       * <code>optional .MumbleProto.PermissionDenied.DenyType type = 5;</code>
       */
      com.morlunk.jumble.protobuf.Mumble.PermissionDenied.DenyType getType();
  
      /**
       * <code>optional string name = 6;</code>
       */
      boolean hasName();
      /**
       * <code>optional string name = 6;</code>
       */
      java.lang.String getName();
      /**
       * <code>optional string name = 6;</code>
       */
      com.google.protobuf.ByteString
          getNameBytes();
    }
    /**
     * Protobuf type {@code MumbleProto.PermissionDenied}
     */
    public  static final class PermissionDenied extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:MumbleProto.PermissionDenied)
        PermissionDeniedOrBuilder {
      // Use PermissionDenied.newBuilder() to construct.
      private PermissionDenied(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private PermissionDenied() {
        permission_ = 0;
        channelId_ = 0;
        session_ = 0;
        reason_ = "";
        type_ = 0;
        name_ = "";
      }
  
      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private PermissionDenied(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        int mutable_bitField0_ = 0;
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder();
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              default: {
                if (!parseUnknownField(input, unknownFields,
                                       extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 8: {
                bitField0_ |= 0x00000001;
                permission_ = input.readUInt32();
                break;
              }
              case 16: {
                bitField0_ |= 0x00000002;
                channelId_ = input.readUInt32();
                break;
              }
              case 24: {
                bitField0_ |= 0x00000004;
                session_ = input.readUInt32();
                break;
              }
              case 34: {
                com.google.protobuf.ByteString bs = input.readBytes();
                bitField0_ |= 0x00000008;
                reason_ = bs;
                break;
              }
              case 40: {
                int rawValue = input.readEnum();
                com.morlunk.jumble.protobuf.Mumble.PermissionDenied.DenyType value = com.morlunk.jumble.protobuf.Mumble.PermissionDenied.DenyType.valueOf(rawValue);
                if (value == null) {
                  unknownFields.mergeVarintField(5, rawValue);
                } else {
                  bitField0_ |= 0x00000010;
                  type_ = rawValue;
                }
                break;
              }
              case 50: {
                com.google.protobuf.ByteString bs = input.readBytes();
                bitField0_ |= 0x00000020;
                name_ = bs;
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_PermissionDenied_descriptor;
      }
  
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_PermissionDenied_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.morlunk.jumble.protobuf.Mumble.PermissionDenied.class, com.morlunk.jumble.protobuf.Mumble.PermissionDenied.Builder.class);
      }
  
      /**
       * Protobuf enum {@code MumbleProto.PermissionDenied.DenyType}
       */
      public enum DenyType
          implements com.google.protobuf.ProtocolMessageEnum {
        /**
         * <code>Text = 0;</code>
         */
        Text(0),
        /**
         * <code>Permission = 1;</code>
         */
        Permission(1),
        /**
         * <code>SuperUser = 2;</code>
         */
        SuperUser(2),
        /**
         * <code>ChannelName = 3;</code>
         */
        ChannelName(3),
        /**
         * <code>TextTooLong = 4;</code>
         */
        TextTooLong(4),
        /**
         * <code>H9K = 5;</code>
         */
        H9K(5),
        /**
         * <code>TemporaryChannel = 6;</code>
         */
        TemporaryChannel(6),
        /**
         * <code>MissingCertificate = 7;</code>
         */
        MissingCertificate(7),
        /**
         * <code>UserName = 8;</code>
         */
        UserName(8),
        /**
         * <code>ChannelFull = 9;</code>
         */
        ChannelFull(9),
        /**
         * <code>NestingLimit = 10;</code>
         */
        NestingLimit(10),
        ;
  
        /**
         * <code>Text = 0;</code>
         */
        public static final int Text_VALUE = 0;
        /**
         * <code>Permission = 1;</code>
         */
        public static final int Permission_VALUE = 1;
        /**
         * <code>SuperUser = 2;</code>
         */
        public static final int SuperUser_VALUE = 2;
        /**
         * <code>ChannelName = 3;</code>
         */
        public static final int ChannelName_VALUE = 3;
        /**
         * <code>TextTooLong = 4;</code>
         */
        public static final int TextTooLong_VALUE = 4;
        /**
         * <code>H9K = 5;</code>
         */
        public static final int H9K_VALUE = 5;
        /**
         * <code>TemporaryChannel = 6;</code>
         */
        public static final int TemporaryChannel_VALUE = 6;
        /**
         * <code>MissingCertificate = 7;</code>
         */
        public static final int MissingCertificate_VALUE = 7;
        /**
         * <code>UserName = 8;</code>
         */
        public static final int UserName_VALUE = 8;
        /**
         * <code>ChannelFull = 9;</code>
         */
        public static final int ChannelFull_VALUE = 9;
        /**
         * <code>NestingLimit = 10;</code>
         */
        public static final int NestingLimit_VALUE = 10;
  
  
        public final int getNumber() {
          return value;
        }
  
        /**
         * @deprecated Use {@link #forNumber(int)} instead.
         */
        @java.lang.Deprecated
        public static DenyType valueOf(int value) {
          return forNumber(value);
        }
  
        public static DenyType forNumber(int value) {
          switch (value) {
            case 0: return Text;
            case 1: return Permission;
            case 2: return SuperUser;
            case 3: return ChannelName;
            case 4: return TextTooLong;
            case 5: return H9K;
            case 6: return TemporaryChannel;
            case 7: return MissingCertificate;
            case 8: return UserName;
            case 9: return ChannelFull;
            case 10: return NestingLimit;
            default: return null;
          }
        }
  
        public static com.google.protobuf.Internal.EnumLiteMap<DenyType>
            internalGetValueMap() {
          return internalValueMap;
        }
        private static final com.google.protobuf.Internal.EnumLiteMap<
            DenyType> internalValueMap =
              new com.google.protobuf.Internal.EnumLiteMap<DenyType>() {
                public DenyType findValueByNumber(int number) {
                  return DenyType.forNumber(number);
                }
              };
  
        public final com.google.protobuf.Descriptors.EnumValueDescriptor
            getValueDescriptor() {
          return getDescriptor().getValues().get(ordinal());
        }
        public final com.google.protobuf.Descriptors.EnumDescriptor
            getDescriptorForType() {
          return getDescriptor();
        }
        public static final com.google.protobuf.Descriptors.EnumDescriptor
            getDescriptor() {
          return com.morlunk.jumble.protobuf.Mumble.PermissionDenied.getDescriptor().getEnumTypes().get(0);
        }
  
        private static final DenyType[] VALUES = values();
  
        public static DenyType valueOf(
            com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
          if (desc.getType() != getDescriptor()) {
            throw new java.lang.IllegalArgumentException(
              "EnumValueDescriptor is not for this type.");
          }
          return VALUES[desc.getIndex()];
        }
  
        private final int value;
  
        private DenyType(int value) {
          this.value = value;
        }
  
        // @@protoc_insertion_point(enum_scope:MumbleProto.PermissionDenied.DenyType)
      }
  
      private int bitField0_;
      public static final int PERMISSION_FIELD_NUMBER = 1;
      private int permission_;
      /**
       * <code>optional uint32 permission = 1;</code>
       */
      public boolean hasPermission() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>optional uint32 permission = 1;</code>
       */
      public int getPermission() {
        return permission_;
      }
  
      public static final int CHANNEL_ID_FIELD_NUMBER = 2;
      private int channelId_;
      /**
       * <code>optional uint32 channel_id = 2;</code>
       */
      public boolean hasChannelId() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional uint32 channel_id = 2;</code>
       */
      public int getChannelId() {
        return channelId_;
      }
  
      public static final int SESSION_FIELD_NUMBER = 3;
      private int session_;
      /**
       * <code>optional uint32 session = 3;</code>
       */
      public boolean hasSession() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>optional uint32 session = 3;</code>
       */
      public int getSession() {
        return session_;
      }
  
      public static final int REASON_FIELD_NUMBER = 4;
      private volatile java.lang.Object reason_;
      /**
       * <code>optional string reason = 4;</code>
       */
      public boolean hasReason() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>optional string reason = 4;</code>
       */
      public java.lang.String getReason() {
        java.lang.Object ref = reason_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            reason_ = s;
          }
          return s;
        }
      }
      /**
       * <code>optional string reason = 4;</code>
       */
      public com.google.protobuf.ByteString
          getReasonBytes() {
        java.lang.Object ref = reason_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          reason_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
  
      public static final int TYPE_FIELD_NUMBER = 5;
      private int type_;
      /**
       * <code>optional .MumbleProto.PermissionDenied.DenyType type = 5;</code>
       */
      public boolean hasType() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      /**
       * <code>optional .MumbleProto.PermissionDenied.DenyType type = 5;</code>
       */
      public com.morlunk.jumble.protobuf.Mumble.PermissionDenied.DenyType getType() {
        com.morlunk.jumble.protobuf.Mumble.PermissionDenied.DenyType result = com.morlunk.jumble.protobuf.Mumble.PermissionDenied.DenyType.valueOf(type_);
        return result == null ? com.morlunk.jumble.protobuf.Mumble.PermissionDenied.DenyType.Text : result;
      }
  
      public static final int NAME_FIELD_NUMBER = 6;
      private volatile java.lang.Object name_;
      /**
       * <code>optional string name = 6;</code>
       */
      public boolean hasName() {
        return ((bitField0_ & 0x00000020) == 0x00000020);
      }
      /**
       * <code>optional string name = 6;</code>
       */
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            name_ = s;
          }
          return s;
        }
      }
      /**
       * <code>optional string name = 6;</code>
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
  
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        memoizedIsInitialized = 1;
        return true;
      }
  
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeUInt32(1, permission_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          output.writeUInt32(2, channelId_);
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          output.writeUInt32(3, session_);
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 4, reason_);
        }
        if (((bitField0_ & 0x00000010) == 0x00000010)) {
          output.writeEnum(5, type_);
        }
        if (((bitField0_ & 0x00000020) == 0x00000020)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 6, name_);
        }
        unknownFields.writeTo(output);
      }
  
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(1, permission_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(2, channelId_);
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(3, session_);
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, reason_);
        }
        if (((bitField0_ & 0x00000010) == 0x00000010)) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(5, type_);
        }
        if (((bitField0_ & 0x00000020) == 0x00000020)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(6, name_);
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }
  
      private static final long serialVersionUID = 0L;
      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.morlunk.jumble.protobuf.Mumble.PermissionDenied)) {
          return super.equals(obj);
        }
        com.morlunk.jumble.protobuf.Mumble.PermissionDenied other = (com.morlunk.jumble.protobuf.Mumble.PermissionDenied) obj;
  
        boolean result = true;
        result = result && (hasPermission() == other.hasPermission());
        if (hasPermission()) {
          result = result && (getPermission()
              == other.getPermission());
        }
        result = result && (hasChannelId() == other.hasChannelId());
        if (hasChannelId()) {
          result = result && (getChannelId()
              == other.getChannelId());
        }
        result = result && (hasSession() == other.hasSession());
        if (hasSession()) {
          result = result && (getSession()
              == other.getSession());
        }
        result = result && (hasReason() == other.hasReason());
        if (hasReason()) {
          result = result && getReason()
              .equals(other.getReason());
        }
        result = result && (hasType() == other.hasType());
        if (hasType()) {
          result = result && type_ == other.type_;
        }
        result = result && (hasName() == other.hasName());
        if (hasName()) {
          result = result && getName()
              .equals(other.getName());
        }
        result = result && unknownFields.equals(other.unknownFields);
        return result;
      }
  
      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptorForType().hashCode();
        if (hasPermission()) {
          hash = (37 * hash) + PERMISSION_FIELD_NUMBER;
          hash = (53 * hash) + getPermission();
        }
        if (hasChannelId()) {
          hash = (37 * hash) + CHANNEL_ID_FIELD_NUMBER;
          hash = (53 * hash) + getChannelId();
        }
        if (hasSession()) {
          hash = (37 * hash) + SESSION_FIELD_NUMBER;
          hash = (53 * hash) + getSession();
        }
        if (hasReason()) {
          hash = (37 * hash) + REASON_FIELD_NUMBER;
          hash = (53 * hash) + getReason().hashCode();
        }
        if (hasType()) {
          hash = (37 * hash) + TYPE_FIELD_NUMBER;
          hash = (53 * hash) + type_;
        }
        if (hasName()) {
          hash = (37 * hash) + NAME_FIELD_NUMBER;
          hash = (53 * hash) + getName().hashCode();
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static com.morlunk.jumble.protobuf.Mumble.PermissionDenied parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.morlunk.jumble.protobuf.Mumble.PermissionDenied parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.PermissionDenied parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.morlunk.jumble.protobuf.Mumble.PermissionDenied parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.PermissionDenied parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.morlunk.jumble.protobuf.Mumble.PermissionDenied parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.PermissionDenied parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.morlunk.jumble.protobuf.Mumble.PermissionDenied parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.PermissionDenied parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.morlunk.jumble.protobuf.Mumble.PermissionDenied parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
  
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(com.morlunk.jumble.protobuf.Mumble.PermissionDenied prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }
  
      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code MumbleProto.PermissionDenied}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:MumbleProto.PermissionDenied)
          com.morlunk.jumble.protobuf.Mumble.PermissionDeniedOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_PermissionDenied_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_PermissionDenied_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.morlunk.jumble.protobuf.Mumble.PermissionDenied.class, com.morlunk.jumble.protobuf.Mumble.PermissionDenied.Builder.class);
        }
  
        // Construct using com.morlunk.jumble.protobuf.Mumble.PermissionDenied.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
  
        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
          }
        }
        public Builder clear() {
          super.clear();
          permission_ = 0;
          bitField0_ = (bitField0_ & ~0x00000001);
          channelId_ = 0;
          bitField0_ = (bitField0_ & ~0x00000002);
          session_ = 0;
          bitField0_ = (bitField0_ & ~0x00000004);
          reason_ = "";
          bitField0_ = (bitField0_ & ~0x00000008);
          type_ = 0;
          bitField0_ = (bitField0_ & ~0x00000010);
          name_ = "";
          bitField0_ = (bitField0_ & ~0x00000020);
          return this;
        }
  
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_PermissionDenied_descriptor;
        }
  
        public com.morlunk.jumble.protobuf.Mumble.PermissionDenied getDefaultInstanceForType() {
          return com.morlunk.jumble.protobuf.Mumble.PermissionDenied.getDefaultInstance();
        }
  
        public com.morlunk.jumble.protobuf.Mumble.PermissionDenied build() {
          com.morlunk.jumble.protobuf.Mumble.PermissionDenied result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        public com.morlunk.jumble.protobuf.Mumble.PermissionDenied buildPartial() {
          com.morlunk.jumble.protobuf.Mumble.PermissionDenied result = new com.morlunk.jumble.protobuf.Mumble.PermissionDenied(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.permission_ = permission_;
          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
            to_bitField0_ |= 0x00000002;
          }
          result.channelId_ = channelId_;
          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
            to_bitField0_ |= 0x00000004;
          }
          result.session_ = session_;
          if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
            to_bitField0_ |= 0x00000008;
          }
          result.reason_ = reason_;
          if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
            to_bitField0_ |= 0x00000010;
          }
          result.type_ = type_;
          if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
            to_bitField0_ |= 0x00000020;
          }
          result.name_ = name_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
  
        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.setField(field, value);
        }
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return (Builder) super.clearField(field);
        }
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return (Builder) super.clearOneof(oneof);
        }
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.morlunk.jumble.protobuf.Mumble.PermissionDenied) {
            return mergeFrom((com.morlunk.jumble.protobuf.Mumble.PermissionDenied)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(com.morlunk.jumble.protobuf.Mumble.PermissionDenied other) {
          if (other == com.morlunk.jumble.protobuf.Mumble.PermissionDenied.getDefaultInstance()) return this;
          if (other.hasPermission()) {
            setPermission(other.getPermission());
          }
          if (other.hasChannelId()) {
            setChannelId(other.getChannelId());
          }
          if (other.hasSession()) {
            setSession(other.getSession());
          }
          if (other.hasReason()) {
            bitField0_ |= 0x00000008;
            reason_ = other.reason_;
            onChanged();
          }
          if (other.hasType()) {
            setType(other.getType());
          }
          if (other.hasName()) {
            bitField0_ |= 0x00000020;
            name_ = other.name_;
            onChanged();
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }
  
        public final boolean isInitialized() {
          return true;
        }
  
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.morlunk.jumble.protobuf.Mumble.PermissionDenied parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (com.morlunk.jumble.protobuf.Mumble.PermissionDenied) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;
  
        private int permission_ ;
        /**
         * <code>optional uint32 permission = 1;</code>
         */
        public boolean hasPermission() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <code>optional uint32 permission = 1;</code>
         */
        public int getPermission() {
          return permission_;
        }
        /**
         * <code>optional uint32 permission = 1;</code>
         */
        public Builder setPermission(int value) {
          bitField0_ |= 0x00000001;
          permission_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional uint32 permission = 1;</code>
         */
        public Builder clearPermission() {
          bitField0_ = (bitField0_ & ~0x00000001);
          permission_ = 0;
          onChanged();
          return this;
        }
  
        private int channelId_ ;
        /**
         * <code>optional uint32 channel_id = 2;</code>
         */
        public boolean hasChannelId() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * <code>optional uint32 channel_id = 2;</code>
         */
        public int getChannelId() {
          return channelId_;
        }
        /**
         * <code>optional uint32 channel_id = 2;</code>
         */
        public Builder setChannelId(int value) {
          bitField0_ |= 0x00000002;
          channelId_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional uint32 channel_id = 2;</code>
         */
        public Builder clearChannelId() {
          bitField0_ = (bitField0_ & ~0x00000002);
          channelId_ = 0;
          onChanged();
          return this;
        }
  
        private int session_ ;
        /**
         * <code>optional uint32 session = 3;</code>
         */
        public boolean hasSession() {
          return ((bitField0_ & 0x00000004) == 0x00000004);
        }
        /**
         * <code>optional uint32 session = 3;</code>
         */
        public int getSession() {
          return session_;
        }
        /**
         * <code>optional uint32 session = 3;</code>
         */
        public Builder setSession(int value) {
          bitField0_ |= 0x00000004;
          session_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional uint32 session = 3;</code>
         */
        public Builder clearSession() {
          bitField0_ = (bitField0_ & ~0x00000004);
          session_ = 0;
          onChanged();
          return this;
        }
  
        private java.lang.Object reason_ = "";
        /**
         * <code>optional string reason = 4;</code>
         */
        public boolean hasReason() {
          return ((bitField0_ & 0x00000008) == 0x00000008);
        }
        /**
         * <code>optional string reason = 4;</code>
         */
        public java.lang.String getReason() {
          java.lang.Object ref = reason_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              reason_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>optional string reason = 4;</code>
         */
        public com.google.protobuf.ByteString
            getReasonBytes() {
          java.lang.Object ref = reason_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            reason_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>optional string reason = 4;</code>
         */
        public Builder setReason(
            java.lang.String value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000008;
          reason_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional string reason = 4;</code>
         */
        public Builder clearReason() {
          bitField0_ = (bitField0_ & ~0x00000008);
          reason_ = getDefaultInstance().getReason();
          onChanged();
          return this;
        }
        /**
         * <code>optional string reason = 4;</code>
         */
        public Builder setReasonBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000008;
          reason_ = value;
          onChanged();
          return this;
        }
  
        private int type_ = 0;
        /**
         * <code>optional .MumbleProto.PermissionDenied.DenyType type = 5;</code>
         */
        public boolean hasType() {
          return ((bitField0_ & 0x00000010) == 0x00000010);
        }
        /**
         * <code>optional .MumbleProto.PermissionDenied.DenyType type = 5;</code>
         */
        public com.morlunk.jumble.protobuf.Mumble.PermissionDenied.DenyType getType() {
          com.morlunk.jumble.protobuf.Mumble.PermissionDenied.DenyType result = com.morlunk.jumble.protobuf.Mumble.PermissionDenied.DenyType.valueOf(type_);
          return result == null ? com.morlunk.jumble.protobuf.Mumble.PermissionDenied.DenyType.Text : result;
        }
        /**
         * <code>optional .MumbleProto.PermissionDenied.DenyType type = 5;</code>
         */
        public Builder setType(com.morlunk.jumble.protobuf.Mumble.PermissionDenied.DenyType value) {
          if (value == null) {
            throw new NullPointerException();
          }
          bitField0_ |= 0x00000010;
          type_ = value.getNumber();
          onChanged();
          return this;
        }
        /**
         * <code>optional .MumbleProto.PermissionDenied.DenyType type = 5;</code>
         */
        public Builder clearType() {
          bitField0_ = (bitField0_ & ~0x00000010);
          type_ = 0;
          onChanged();
          return this;
        }
  
        private java.lang.Object name_ = "";
        /**
         * <code>optional string name = 6;</code>
         */
        public boolean hasName() {
          return ((bitField0_ & 0x00000020) == 0x00000020);
        }
        /**
         * <code>optional string name = 6;</code>
         */
        public java.lang.String getName() {
          java.lang.Object ref = name_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              name_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>optional string name = 6;</code>
         */
        public com.google.protobuf.ByteString
            getNameBytes() {
          java.lang.Object ref = name_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            name_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>optional string name = 6;</code>
         */
        public Builder setName(
            java.lang.String value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000020;
          name_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional string name = 6;</code>
         */
        public Builder clearName() {
          bitField0_ = (bitField0_ & ~0x00000020);
          name_ = getDefaultInstance().getName();
          onChanged();
          return this;
        }
        /**
         * <code>optional string name = 6;</code>
         */
        public Builder setNameBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000020;
          name_ = value;
          onChanged();
          return this;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }
  
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:MumbleProto.PermissionDenied)
      }
  
      // @@protoc_insertion_point(class_scope:MumbleProto.PermissionDenied)
      private static final com.morlunk.jumble.protobuf.Mumble.PermissionDenied DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.morlunk.jumble.protobuf.Mumble.PermissionDenied();
      }
  
      public static com.morlunk.jumble.protobuf.Mumble.PermissionDenied getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      @java.lang.Deprecated public static final com.google.protobuf.Parser<PermissionDenied>
          PARSER = new com.google.protobuf.AbstractParser<PermissionDenied>() {
        public PermissionDenied parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return new PermissionDenied(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<PermissionDenied> parser() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.google.protobuf.Parser<PermissionDenied> getParserForType() {
        return PARSER;
      }
  
      public com.morlunk.jumble.protobuf.Mumble.PermissionDenied getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface ACLOrBuilder extends
        // @@protoc_insertion_point(interface_extends:MumbleProto.ACL)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <code>required uint32 channel_id = 1;</code>
       */
      boolean hasChannelId();
      /**
       * <code>required uint32 channel_id = 1;</code>
       */
      int getChannelId();
  
      /**
       * <code>optional bool inherit_acls = 2 [default = true];</code>
       */
      boolean hasInheritAcls();
      /**
       * <code>optional bool inherit_acls = 2 [default = true];</code>
       */
      boolean getInheritAcls();
  
      /**
       * <code>repeated .MumbleProto.ACL.ChanGroup groups = 3;</code>
       */
      java.util.List<com.morlunk.jumble.protobuf.Mumble.ACL.ChanGroup> 
          getGroupsList();
      /**
       * <code>repeated .MumbleProto.ACL.ChanGroup groups = 3;</code>
       */
      com.morlunk.jumble.protobuf.Mumble.ACL.ChanGroup getGroups(int index);
      /**
       * <code>repeated .MumbleProto.ACL.ChanGroup groups = 3;</code>
       */
      int getGroupsCount();
      /**
       * <code>repeated .MumbleProto.ACL.ChanGroup groups = 3;</code>
       */
      java.util.List<? extends com.morlunk.jumble.protobuf.Mumble.ACL.ChanGroupOrBuilder> 
          getGroupsOrBuilderList();
      /**
       * <code>repeated .MumbleProto.ACL.ChanGroup groups = 3;</code>
       */
      com.morlunk.jumble.protobuf.Mumble.ACL.ChanGroupOrBuilder getGroupsOrBuilder(
          int index);
  
      /**
       * <code>repeated .MumbleProto.ACL.ChanACL acls = 4;</code>
       */
      java.util.List<com.morlunk.jumble.protobuf.Mumble.ACL.ChanACL> 
          getAclsList();
      /**
       * <code>repeated .MumbleProto.ACL.ChanACL acls = 4;</code>
       */
      com.morlunk.jumble.protobuf.Mumble.ACL.ChanACL getAcls(int index);
      /**
       * <code>repeated .MumbleProto.ACL.ChanACL acls = 4;</code>
       */
      int getAclsCount();
      /**
       * <code>repeated .MumbleProto.ACL.ChanACL acls = 4;</code>
       */
      java.util.List<? extends com.morlunk.jumble.protobuf.Mumble.ACL.ChanACLOrBuilder> 
          getAclsOrBuilderList();
      /**
       * <code>repeated .MumbleProto.ACL.ChanACL acls = 4;</code>
       */
      com.morlunk.jumble.protobuf.Mumble.ACL.ChanACLOrBuilder getAclsOrBuilder(
          int index);
  
      /**
       * <code>optional bool query = 5 [default = false];</code>
       */
      boolean hasQuery();
      /**
       * <code>optional bool query = 5 [default = false];</code>
       */
      boolean getQuery();
    }
    /**
     * Protobuf type {@code MumbleProto.ACL}
     */
    public  static final class ACL extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:MumbleProto.ACL)
        ACLOrBuilder {
      // Use ACL.newBuilder() to construct.
      private ACL(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private ACL() {
        channelId_ = 0;
        inheritAcls_ = true;
        groups_ = java.util.Collections.emptyList();
        acls_ = java.util.Collections.emptyList();
        query_ = false;
      }
  
      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private ACL(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        int mutable_bitField0_ = 0;
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder();
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              default: {
                if (!parseUnknownField(input, unknownFields,
                                       extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 8: {
                bitField0_ |= 0x00000001;
                channelId_ = input.readUInt32();
                break;
              }
              case 16: {
                bitField0_ |= 0x00000002;
                inheritAcls_ = input.readBool();
                break;
              }
              case 26: {
                if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
                  groups_ = new java.util.ArrayList<com.morlunk.jumble.protobuf.Mumble.ACL.ChanGroup>();
                  mutable_bitField0_ |= 0x00000004;
                }
                groups_.add(
                    input.readMessage(com.morlunk.jumble.protobuf.Mumble.ACL.ChanGroup.PARSER, extensionRegistry));
                break;
              }
              case 34: {
                if (!((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
                  acls_ = new java.util.ArrayList<com.morlunk.jumble.protobuf.Mumble.ACL.ChanACL>();
                  mutable_bitField0_ |= 0x00000008;
                }
                acls_.add(
                    input.readMessage(com.morlunk.jumble.protobuf.Mumble.ACL.ChanACL.PARSER, extensionRegistry));
                break;
              }
              case 40: {
                bitField0_ |= 0x00000004;
                query_ = input.readBool();
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
            groups_ = java.util.Collections.unmodifiableList(groups_);
          }
          if (((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
            acls_ = java.util.Collections.unmodifiableList(acls_);
          }
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_ACL_descriptor;
      }
  
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_ACL_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.morlunk.jumble.protobuf.Mumble.ACL.class, com.morlunk.jumble.protobuf.Mumble.ACL.Builder.class);
      }
  
      public interface ChanGroupOrBuilder extends
          // @@protoc_insertion_point(interface_extends:MumbleProto.ACL.ChanGroup)
          com.google.protobuf.MessageOrBuilder {
  
        /**
         * <code>required string name = 1;</code>
         */
        boolean hasName();
        /**
         * <code>required string name = 1;</code>
         */
        java.lang.String getName();
        /**
         * <code>required string name = 1;</code>
         */
        com.google.protobuf.ByteString
            getNameBytes();
  
        /**
         * <code>optional bool inherited = 2 [default = true];</code>
         */
        boolean hasInherited();
        /**
         * <code>optional bool inherited = 2 [default = true];</code>
         */
        boolean getInherited();
  
        /**
         * <code>optional bool inherit = 3 [default = true];</code>
         */
        boolean hasInherit();
        /**
         * <code>optional bool inherit = 3 [default = true];</code>
         */
        boolean getInherit();
  
        /**
         * <code>optional bool inheritable = 4 [default = true];</code>
         */
        boolean hasInheritable();
        /**
         * <code>optional bool inheritable = 4 [default = true];</code>
         */
        boolean getInheritable();
  
        /**
         * <code>repeated uint32 add = 5;</code>
         */
        java.util.List<java.lang.Integer> getAddList();
        /**
         * <code>repeated uint32 add = 5;</code>
         */
        int getAddCount();
        /**
         * <code>repeated uint32 add = 5;</code>
         */
        int getAdd(int index);
  
        /**
         * <code>repeated uint32 remove = 6;</code>
         */
        java.util.List<java.lang.Integer> getRemoveList();
        /**
         * <code>repeated uint32 remove = 6;</code>
         */
        int getRemoveCount();
        /**
         * <code>repeated uint32 remove = 6;</code>
         */
        int getRemove(int index);
  
        /**
         * <code>repeated uint32 inherited_members = 7;</code>
         */
        java.util.List<java.lang.Integer> getInheritedMembersList();
        /**
         * <code>repeated uint32 inherited_members = 7;</code>
         */
        int getInheritedMembersCount();
        /**
         * <code>repeated uint32 inherited_members = 7;</code>
         */
        int getInheritedMembers(int index);
      }
      /**
       * Protobuf type {@code MumbleProto.ACL.ChanGroup}
       */
      public  static final class ChanGroup extends
          com.google.protobuf.GeneratedMessageV3 implements
          // @@protoc_insertion_point(message_implements:MumbleProto.ACL.ChanGroup)
          ChanGroupOrBuilder {
        // Use ChanGroup.newBuilder() to construct.
        private ChanGroup(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
          super(builder);
        }
        private ChanGroup() {
          name_ = "";
          inherited_ = true;
          inherit_ = true;
          inheritable_ = true;
          add_ = java.util.Collections.emptyList();
          remove_ = java.util.Collections.emptyList();
          inheritedMembers_ = java.util.Collections.emptyList();
        }
  
        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
          return this.unknownFields;
        }
        private ChanGroup(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          this();
          int mutable_bitField0_ = 0;
          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
              com.google.protobuf.UnknownFieldSet.newBuilder();
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                default: {
                  if (!parseUnknownField(input, unknownFields,
                                         extensionRegistry, tag)) {
                    done = true;
                  }
                  break;
                }
                case 10: {
                  com.google.protobuf.ByteString bs = input.readBytes();
                  bitField0_ |= 0x00000001;
                  name_ = bs;
                  break;
                }
                case 16: {
                  bitField0_ |= 0x00000002;
                  inherited_ = input.readBool();
                  break;
                }
                case 24: {
                  bitField0_ |= 0x00000004;
                  inherit_ = input.readBool();
                  break;
                }
                case 32: {
                  bitField0_ |= 0x00000008;
                  inheritable_ = input.readBool();
                  break;
                }
                case 40: {
                  if (!((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
                    add_ = new java.util.ArrayList<java.lang.Integer>();
                    mutable_bitField0_ |= 0x00000010;
                  }
                  add_.add(input.readUInt32());
                  break;
                }
                case 42: {
                  int length = input.readRawVarint32();
                  int limit = input.pushLimit(length);
                  if (!((mutable_bitField0_ & 0x00000010) == 0x00000010) && input.getBytesUntilLimit() > 0) {
                    add_ = new java.util.ArrayList<java.lang.Integer>();
                    mutable_bitField0_ |= 0x00000010;
                  }
                  while (input.getBytesUntilLimit() > 0) {
                    add_.add(input.readUInt32());
                  }
                  input.popLimit(limit);
                  break;
                }
                case 48: {
                  if (!((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
                    remove_ = new java.util.ArrayList<java.lang.Integer>();
                    mutable_bitField0_ |= 0x00000020;
                  }
                  remove_.add(input.readUInt32());
                  break;
                }
                case 50: {
                  int length = input.readRawVarint32();
                  int limit = input.pushLimit(length);
                  if (!((mutable_bitField0_ & 0x00000020) == 0x00000020) && input.getBytesUntilLimit() > 0) {
                    remove_ = new java.util.ArrayList<java.lang.Integer>();
                    mutable_bitField0_ |= 0x00000020;
                  }
                  while (input.getBytesUntilLimit() > 0) {
                    remove_.add(input.readUInt32());
                  }
                  input.popLimit(limit);
                  break;
                }
                case 56: {
                  if (!((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
                    inheritedMembers_ = new java.util.ArrayList<java.lang.Integer>();
                    mutable_bitField0_ |= 0x00000040;
                  }
                  inheritedMembers_.add(input.readUInt32());
                  break;
                }
                case 58: {
                  int length = input.readRawVarint32();
                  int limit = input.pushLimit(length);
                  if (!((mutable_bitField0_ & 0x00000040) == 0x00000040) && input.getBytesUntilLimit() > 0) {
                    inheritedMembers_ = new java.util.ArrayList<java.lang.Integer>();
                    mutable_bitField0_ |= 0x00000040;
                  }
                  while (input.getBytesUntilLimit() > 0) {
                    inheritedMembers_.add(input.readUInt32());
                  }
                  input.popLimit(limit);
                  break;
                }
              }
            }
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(this);
          } catch (java.io.IOException e) {
            throw new com.google.protobuf.InvalidProtocolBufferException(
                e).setUnfinishedMessage(this);
          } finally {
            if (((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
              add_ = java.util.Collections.unmodifiableList(add_);
            }
            if (((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
              remove_ = java.util.Collections.unmodifiableList(remove_);
            }
            if (((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
              inheritedMembers_ = java.util.Collections.unmodifiableList(inheritedMembers_);
            }
            this.unknownFields = unknownFields.build();
            makeExtensionsImmutable();
          }
        }
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_ACL_ChanGroup_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_ACL_ChanGroup_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.morlunk.jumble.protobuf.Mumble.ACL.ChanGroup.class, com.morlunk.jumble.protobuf.Mumble.ACL.ChanGroup.Builder.class);
        }
  
        private int bitField0_;
        public static final int NAME_FIELD_NUMBER = 1;
        private volatile java.lang.Object name_;
        /**
         * <code>required string name = 1;</code>
         */
        public boolean hasName() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <code>required string name = 1;</code>
         */
        public java.lang.String getName() {
          java.lang.Object ref = name_;
          if (ref instanceof java.lang.String) {
            return (java.lang.String) ref;
          } else {
            com.google.protobuf.ByteString bs = 
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              name_ = s;
            }
            return s;
          }
        }
        /**
         * <code>required string name = 1;</code>
         */
        public com.google.protobuf.ByteString
            getNameBytes() {
          java.lang.Object ref = name_;
          if (ref instanceof java.lang.String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            name_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
  
        public static final int INHERITED_FIELD_NUMBER = 2;
        private boolean inherited_;
        /**
         * <code>optional bool inherited = 2 [default = true];</code>
         */
        public boolean hasInherited() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * <code>optional bool inherited = 2 [default = true];</code>
         */
        public boolean getInherited() {
          return inherited_;
        }
  
        public static final int INHERIT_FIELD_NUMBER = 3;
        private boolean inherit_;
        /**
         * <code>optional bool inherit = 3 [default = true];</code>
         */
        public boolean hasInherit() {
          return ((bitField0_ & 0x00000004) == 0x00000004);
        }
        /**
         * <code>optional bool inherit = 3 [default = true];</code>
         */
        public boolean getInherit() {
          return inherit_;
        }
  
        public static final int INHERITABLE_FIELD_NUMBER = 4;
        private boolean inheritable_;
        /**
         * <code>optional bool inheritable = 4 [default = true];</code>
         */
        public boolean hasInheritable() {
          return ((bitField0_ & 0x00000008) == 0x00000008);
        }
        /**
         * <code>optional bool inheritable = 4 [default = true];</code>
         */
        public boolean getInheritable() {
          return inheritable_;
        }
  
        public static final int ADD_FIELD_NUMBER = 5;
        private java.util.List<java.lang.Integer> add_;
        /**
         * <code>repeated uint32 add = 5;</code>
         */
        public java.util.List<java.lang.Integer>
            getAddList() {
          return add_;
        }
        /**
         * <code>repeated uint32 add = 5;</code>
         */
        public int getAddCount() {
          return add_.size();
        }
        /**
         * <code>repeated uint32 add = 5;</code>
         */
        public int getAdd(int index) {
          return add_.get(index);
        }
  
        public static final int REMOVE_FIELD_NUMBER = 6;
        private java.util.List<java.lang.Integer> remove_;
        /**
         * <code>repeated uint32 remove = 6;</code>
         */
        public java.util.List<java.lang.Integer>
            getRemoveList() {
          return remove_;
        }
        /**
         * <code>repeated uint32 remove = 6;</code>
         */
        public int getRemoveCount() {
          return remove_.size();
        }
        /**
         * <code>repeated uint32 remove = 6;</code>
         */
        public int getRemove(int index) {
          return remove_.get(index);
        }
  
        public static final int INHERITED_MEMBERS_FIELD_NUMBER = 7;
        private java.util.List<java.lang.Integer> inheritedMembers_;
        /**
         * <code>repeated uint32 inherited_members = 7;</code>
         */
        public java.util.List<java.lang.Integer>
            getInheritedMembersList() {
          return inheritedMembers_;
        }
        /**
         * <code>repeated uint32 inherited_members = 7;</code>
         */
        public int getInheritedMembersCount() {
          return inheritedMembers_.size();
        }
        /**
         * <code>repeated uint32 inherited_members = 7;</code>
         */
        public int getInheritedMembers(int index) {
          return inheritedMembers_.get(index);
        }
  
        private byte memoizedIsInitialized = -1;
        public final boolean isInitialized() {
          byte isInitialized = memoizedIsInitialized;
          if (isInitialized == 1) return true;
          if (isInitialized == 0) return false;
  
          if (!hasName()) {
            memoizedIsInitialized = 0;
            return false;
          }
          memoizedIsInitialized = 1;
          return true;
        }
  
        public void writeTo(com.google.protobuf.CodedOutputStream output)
                            throws java.io.IOException {
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
          }
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            output.writeBool(2, inherited_);
          }
          if (((bitField0_ & 0x00000004) == 0x00000004)) {
            output.writeBool(3, inherit_);
          }
          if (((bitField0_ & 0x00000008) == 0x00000008)) {
            output.writeBool(4, inheritable_);
          }
          for (int i = 0; i < add_.size(); i++) {
            output.writeUInt32(5, add_.get(i));
          }
          for (int i = 0; i < remove_.size(); i++) {
            output.writeUInt32(6, remove_.get(i));
          }
          for (int i = 0; i < inheritedMembers_.size(); i++) {
            output.writeUInt32(7, inheritedMembers_.get(i));
          }
          unknownFields.writeTo(output);
        }
  
        public int getSerializedSize() {
          int size = memoizedSize;
          if (size != -1) return size;
  
          size = 0;
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
          }
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            size += com.google.protobuf.CodedOutputStream
              .computeBoolSize(2, inherited_);
          }
          if (((bitField0_ & 0x00000004) == 0x00000004)) {
            size += com.google.protobuf.CodedOutputStream
              .computeBoolSize(3, inherit_);
          }
          if (((bitField0_ & 0x00000008) == 0x00000008)) {
            size += com.google.protobuf.CodedOutputStream
              .computeBoolSize(4, inheritable_);
          }
          {
            int dataSize = 0;
            for (int i = 0; i < add_.size(); i++) {
              dataSize += com.google.protobuf.CodedOutputStream
                .computeUInt32SizeNoTag(add_.get(i));
            }
            size += dataSize;
            size += 1 * getAddList().size();
          }
          {
            int dataSize = 0;
            for (int i = 0; i < remove_.size(); i++) {
              dataSize += com.google.protobuf.CodedOutputStream
                .computeUInt32SizeNoTag(remove_.get(i));
            }
            size += dataSize;
            size += 1 * getRemoveList().size();
          }
          {
            int dataSize = 0;
            for (int i = 0; i < inheritedMembers_.size(); i++) {
              dataSize += com.google.protobuf.CodedOutputStream
                .computeUInt32SizeNoTag(inheritedMembers_.get(i));
            }
            size += dataSize;
            size += 1 * getInheritedMembersList().size();
          }
          size += unknownFields.getSerializedSize();
          memoizedSize = size;
          return size;
        }
  
        private static final long serialVersionUID = 0L;
        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
          if (obj == this) {
           return true;
          }
          if (!(obj instanceof com.morlunk.jumble.protobuf.Mumble.ACL.ChanGroup)) {
            return super.equals(obj);
          }
          com.morlunk.jumble.protobuf.Mumble.ACL.ChanGroup other = (com.morlunk.jumble.protobuf.Mumble.ACL.ChanGroup) obj;
  
          boolean result = true;
          result = result && (hasName() == other.hasName());
          if (hasName()) {
            result = result && getName()
                .equals(other.getName());
          }
          result = result && (hasInherited() == other.hasInherited());
          if (hasInherited()) {
            result = result && (getInherited()
                == other.getInherited());
          }
          result = result && (hasInherit() == other.hasInherit());
          if (hasInherit()) {
            result = result && (getInherit()
                == other.getInherit());
          }
          result = result && (hasInheritable() == other.hasInheritable());
          if (hasInheritable()) {
            result = result && (getInheritable()
                == other.getInheritable());
          }
          result = result && getAddList()
              .equals(other.getAddList());
          result = result && getRemoveList()
              .equals(other.getRemoveList());
          result = result && getInheritedMembersList()
              .equals(other.getInheritedMembersList());
          result = result && unknownFields.equals(other.unknownFields);
          return result;
        }
  
        @java.lang.Override
        public int hashCode() {
          if (memoizedHashCode != 0) {
            return memoizedHashCode;
          }
          int hash = 41;
          hash = (19 * hash) + getDescriptorForType().hashCode();
          if (hasName()) {
            hash = (37 * hash) + NAME_FIELD_NUMBER;
            hash = (53 * hash) + getName().hashCode();
          }
          if (hasInherited()) {
            hash = (37 * hash) + INHERITED_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
                getInherited());
          }
          if (hasInherit()) {
            hash = (37 * hash) + INHERIT_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
                getInherit());
          }
          if (hasInheritable()) {
            hash = (37 * hash) + INHERITABLE_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
                getInheritable());
          }
          if (getAddCount() > 0) {
            hash = (37 * hash) + ADD_FIELD_NUMBER;
            hash = (53 * hash) + getAddList().hashCode();
          }
          if (getRemoveCount() > 0) {
            hash = (37 * hash) + REMOVE_FIELD_NUMBER;
            hash = (53 * hash) + getRemoveList().hashCode();
          }
          if (getInheritedMembersCount() > 0) {
            hash = (37 * hash) + INHERITED_MEMBERS_FIELD_NUMBER;
            hash = (53 * hash) + getInheritedMembersList().hashCode();
          }
          hash = (29 * hash) + unknownFields.hashCode();
          memoizedHashCode = hash;
          return hash;
        }
  
        public static com.morlunk.jumble.protobuf.Mumble.ACL.ChanGroup parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static com.morlunk.jumble.protobuf.Mumble.ACL.ChanGroup parseFrom(
            com.google.protobuf.ByteString data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.morlunk.jumble.protobuf.Mumble.ACL.ChanGroup parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static com.morlunk.jumble.protobuf.Mumble.ACL.ChanGroup parseFrom(
            byte[] data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.morlunk.jumble.protobuf.Mumble.ACL.ChanGroup parseFrom(java.io.InputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input);
        }
        public static com.morlunk.jumble.protobuf.Mumble.ACL.ChanGroup parseFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.morlunk.jumble.protobuf.Mumble.ACL.ChanGroup parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseDelimitedWithIOException(PARSER, input);
        }
        public static com.morlunk.jumble.protobuf.Mumble.ACL.ChanGroup parseDelimitedFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.morlunk.jumble.protobuf.Mumble.ACL.ChanGroup parseFrom(
            com.google.protobuf.CodedInputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input);
        }
        public static com.morlunk.jumble.protobuf.Mumble.ACL.ChanGroup parseFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input, extensionRegistry);
        }
  
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder() {
          return DEFAULT_INSTANCE.toBuilder();
        }
        public static Builder newBuilder(com.morlunk.jumble.protobuf.Mumble.ACL.ChanGroup prototype) {
          return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }
        public Builder toBuilder() {
          return this == DEFAULT_INSTANCE
              ? new Builder() : new Builder().mergeFrom(this);
        }
  
        @java.lang.Override
        protected Builder newBuilderForType(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          Builder builder = new Builder(parent);
          return builder;
        }
        /**
         * Protobuf type {@code MumbleProto.ACL.ChanGroup}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
            // @@protoc_insertion_point(builder_implements:MumbleProto.ACL.ChanGroup)
            com.morlunk.jumble.protobuf.Mumble.ACL.ChanGroupOrBuilder {
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_ACL_ChanGroup_descriptor;
          }
  
          protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_ACL_ChanGroup_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    com.morlunk.jumble.protobuf.Mumble.ACL.ChanGroup.class, com.morlunk.jumble.protobuf.Mumble.ACL.ChanGroup.Builder.class);
          }
  
          // Construct using com.morlunk.jumble.protobuf.Mumble.ACL.ChanGroup.newBuilder()
          private Builder() {
            maybeForceBuilderInitialization();
          }
  
          private Builder(
              com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            super(parent);
            maybeForceBuilderInitialization();
          }
          private void maybeForceBuilderInitialization() {
            if (com.google.protobuf.GeneratedMessageV3
                    .alwaysUseFieldBuilders) {
            }
          }
          public Builder clear() {
            super.clear();
            name_ = "";
            bitField0_ = (bitField0_ & ~0x00000001);
            inherited_ = true;
            bitField0_ = (bitField0_ & ~0x00000002);
            inherit_ = true;
            bitField0_ = (bitField0_ & ~0x00000004);
            inheritable_ = true;
            bitField0_ = (bitField0_ & ~0x00000008);
            add_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000010);
            remove_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000020);
            inheritedMembers_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000040);
            return this;
          }
  
          public com.google.protobuf.Descriptors.Descriptor
              getDescriptorForType() {
            return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_ACL_ChanGroup_descriptor;
          }
  
          public com.morlunk.jumble.protobuf.Mumble.ACL.ChanGroup getDefaultInstanceForType() {
            return com.morlunk.jumble.protobuf.Mumble.ACL.ChanGroup.getDefaultInstance();
          }
  
          public com.morlunk.jumble.protobuf.Mumble.ACL.ChanGroup build() {
            com.morlunk.jumble.protobuf.Mumble.ACL.ChanGroup result = buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(result);
            }
            return result;
          }
  
          public com.morlunk.jumble.protobuf.Mumble.ACL.ChanGroup buildPartial() {
            com.morlunk.jumble.protobuf.Mumble.ACL.ChanGroup result = new com.morlunk.jumble.protobuf.Mumble.ACL.ChanGroup(this);
            int from_bitField0_ = bitField0_;
            int to_bitField0_ = 0;
            if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
              to_bitField0_ |= 0x00000001;
            }
            result.name_ = name_;
            if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
              to_bitField0_ |= 0x00000002;
            }
            result.inherited_ = inherited_;
            if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
              to_bitField0_ |= 0x00000004;
            }
            result.inherit_ = inherit_;
            if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
              to_bitField0_ |= 0x00000008;
            }
            result.inheritable_ = inheritable_;
            if (((bitField0_ & 0x00000010) == 0x00000010)) {
              add_ = java.util.Collections.unmodifiableList(add_);
              bitField0_ = (bitField0_ & ~0x00000010);
            }
            result.add_ = add_;
            if (((bitField0_ & 0x00000020) == 0x00000020)) {
              remove_ = java.util.Collections.unmodifiableList(remove_);
              bitField0_ = (bitField0_ & ~0x00000020);
            }
            result.remove_ = remove_;
            if (((bitField0_ & 0x00000040) == 0x00000040)) {
              inheritedMembers_ = java.util.Collections.unmodifiableList(inheritedMembers_);
              bitField0_ = (bitField0_ & ~0x00000040);
            }
            result.inheritedMembers_ = inheritedMembers_;
            result.bitField0_ = to_bitField0_;
            onBuilt();
            return result;
          }
  
          public Builder clone() {
            return (Builder) super.clone();
          }
          public Builder setField(
              com.google.protobuf.Descriptors.FieldDescriptor field,
              Object value) {
            return (Builder) super.setField(field, value);
          }
          public Builder clearField(
              com.google.protobuf.Descriptors.FieldDescriptor field) {
            return (Builder) super.clearField(field);
          }
          public Builder clearOneof(
              com.google.protobuf.Descriptors.OneofDescriptor oneof) {
            return (Builder) super.clearOneof(oneof);
          }
          public Builder setRepeatedField(
              com.google.protobuf.Descriptors.FieldDescriptor field,
              int index, Object value) {
            return (Builder) super.setRepeatedField(field, index, value);
          }
          public Builder addRepeatedField(
              com.google.protobuf.Descriptors.FieldDescriptor field,
              Object value) {
            return (Builder) super.addRepeatedField(field, value);
          }
          public Builder mergeFrom(com.google.protobuf.Message other) {
            if (other instanceof com.morlunk.jumble.protobuf.Mumble.ACL.ChanGroup) {
              return mergeFrom((com.morlunk.jumble.protobuf.Mumble.ACL.ChanGroup)other);
            } else {
              super.mergeFrom(other);
              return this;
            }
          }
  
          public Builder mergeFrom(com.morlunk.jumble.protobuf.Mumble.ACL.ChanGroup other) {
            if (other == com.morlunk.jumble.protobuf.Mumble.ACL.ChanGroup.getDefaultInstance()) return this;
            if (other.hasName()) {
              bitField0_ |= 0x00000001;
              name_ = other.name_;
              onChanged();
            }
            if (other.hasInherited()) {
              setInherited(other.getInherited());
            }
            if (other.hasInherit()) {
              setInherit(other.getInherit());
            }
            if (other.hasInheritable()) {
              setInheritable(other.getInheritable());
            }
            if (!other.add_.isEmpty()) {
              if (add_.isEmpty()) {
                add_ = other.add_;
                bitField0_ = (bitField0_ & ~0x00000010);
              } else {
                ensureAddIsMutable();
                add_.addAll(other.add_);
              }
              onChanged();
            }
            if (!other.remove_.isEmpty()) {
              if (remove_.isEmpty()) {
                remove_ = other.remove_;
                bitField0_ = (bitField0_ & ~0x00000020);
              } else {
                ensureRemoveIsMutable();
                remove_.addAll(other.remove_);
              }
              onChanged();
            }
            if (!other.inheritedMembers_.isEmpty()) {
              if (inheritedMembers_.isEmpty()) {
                inheritedMembers_ = other.inheritedMembers_;
                bitField0_ = (bitField0_ & ~0x00000040);
              } else {
                ensureInheritedMembersIsMutable();
                inheritedMembers_.addAll(other.inheritedMembers_);
              }
              onChanged();
            }
            this.mergeUnknownFields(other.unknownFields);
            onChanged();
            return this;
          }
  
          public final boolean isInitialized() {
            if (!hasName()) {
              return false;
            }
            return true;
          }
  
          public Builder mergeFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            com.morlunk.jumble.protobuf.Mumble.ACL.ChanGroup parsedMessage = null;
            try {
              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              parsedMessage = (com.morlunk.jumble.protobuf.Mumble.ACL.ChanGroup) e.getUnfinishedMessage();
              throw e.unwrapIOException();
            } finally {
              if (parsedMessage != null) {
                mergeFrom(parsedMessage);
              }
            }
            return this;
          }
          private int bitField0_;
  
          private java.lang.Object name_ = "";
          /**
           * <code>required string name = 1;</code>
           */
          public boolean hasName() {
            return ((bitField0_ & 0x00000001) == 0x00000001);
          }
          /**
           * <code>required string name = 1;</code>
           */
          public java.lang.String getName() {
            java.lang.Object ref = name_;
            if (!(ref instanceof java.lang.String)) {
              com.google.protobuf.ByteString bs =
                  (com.google.protobuf.ByteString) ref;
              java.lang.String s = bs.toStringUtf8();
              if (bs.isValidUtf8()) {
                name_ = s;
              }
              return s;
            } else {
              return (java.lang.String) ref;
            }
          }
          /**
           * <code>required string name = 1;</code>
           */
          public com.google.protobuf.ByteString
              getNameBytes() {
            java.lang.Object ref = name_;
            if (ref instanceof String) {
              com.google.protobuf.ByteString b = 
                  com.google.protobuf.ByteString.copyFromUtf8(
                      (java.lang.String) ref);
              name_ = b;
              return b;
            } else {
              return (com.google.protobuf.ByteString) ref;
            }
          }
          /**
           * <code>required string name = 1;</code>
           */
          public Builder setName(
              java.lang.String value) {
            if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000001;
            name_ = value;
            onChanged();
            return this;
          }
          /**
           * <code>required string name = 1;</code>
           */
          public Builder clearName() {
            bitField0_ = (bitField0_ & ~0x00000001);
            name_ = getDefaultInstance().getName();
            onChanged();
            return this;
          }
          /**
           * <code>required string name = 1;</code>
           */
          public Builder setNameBytes(
              com.google.protobuf.ByteString value) {
            if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000001;
            name_ = value;
            onChanged();
            return this;
          }
  
          private boolean inherited_ = true;
          /**
           * <code>optional bool inherited = 2 [default = true];</code>
           */
          public boolean hasInherited() {
            return ((bitField0_ & 0x00000002) == 0x00000002);
          }
          /**
           * <code>optional bool inherited = 2 [default = true];</code>
           */
          public boolean getInherited() {
            return inherited_;
          }
          /**
           * <code>optional bool inherited = 2 [default = true];</code>
           */
          public Builder setInherited(boolean value) {
            bitField0_ |= 0x00000002;
            inherited_ = value;
            onChanged();
            return this;
          }
          /**
           * <code>optional bool inherited = 2 [default = true];</code>
           */
          public Builder clearInherited() {
            bitField0_ = (bitField0_ & ~0x00000002);
            inherited_ = true;
            onChanged();
            return this;
          }
  
          private boolean inherit_ = true;
          /**
           * <code>optional bool inherit = 3 [default = true];</code>
           */
          public boolean hasInherit() {
            return ((bitField0_ & 0x00000004) == 0x00000004);
          }
          /**
           * <code>optional bool inherit = 3 [default = true];</code>
           */
          public boolean getInherit() {
            return inherit_;
          }
          /**
           * <code>optional bool inherit = 3 [default = true];</code>
           */
          public Builder setInherit(boolean value) {
            bitField0_ |= 0x00000004;
            inherit_ = value;
            onChanged();
            return this;
          }
          /**
           * <code>optional bool inherit = 3 [default = true];</code>
           */
          public Builder clearInherit() {
            bitField0_ = (bitField0_ & ~0x00000004);
            inherit_ = true;
            onChanged();
            return this;
          }
  
          private boolean inheritable_ = true;
          /**
           * <code>optional bool inheritable = 4 [default = true];</code>
           */
          public boolean hasInheritable() {
            return ((bitField0_ & 0x00000008) == 0x00000008);
          }
          /**
           * <code>optional bool inheritable = 4 [default = true];</code>
           */
          public boolean getInheritable() {
            return inheritable_;
          }
          /**
           * <code>optional bool inheritable = 4 [default = true];</code>
           */
          public Builder setInheritable(boolean value) {
            bitField0_ |= 0x00000008;
            inheritable_ = value;
            onChanged();
            return this;
          }
          /**
           * <code>optional bool inheritable = 4 [default = true];</code>
           */
          public Builder clearInheritable() {
            bitField0_ = (bitField0_ & ~0x00000008);
            inheritable_ = true;
            onChanged();
            return this;
          }
  
          private java.util.List<java.lang.Integer> add_ = java.util.Collections.emptyList();
          private void ensureAddIsMutable() {
            if (!((bitField0_ & 0x00000010) == 0x00000010)) {
              add_ = new java.util.ArrayList<java.lang.Integer>(add_);
              bitField0_ |= 0x00000010;
             }
          }
          /**
           * <code>repeated uint32 add = 5;</code>
           */
          public java.util.List<java.lang.Integer>
              getAddList() {
            return java.util.Collections.unmodifiableList(add_);
          }
          /**
           * <code>repeated uint32 add = 5;</code>
           */
          public int getAddCount() {
            return add_.size();
          }
          /**
           * <code>repeated uint32 add = 5;</code>
           */
          public int getAdd(int index) {
            return add_.get(index);
          }
          /**
           * <code>repeated uint32 add = 5;</code>
           */
          public Builder setAdd(
              int index, int value) {
            ensureAddIsMutable();
            add_.set(index, value);
            onChanged();
            return this;
          }
          /**
           * <code>repeated uint32 add = 5;</code>
           */
          public Builder addAdd(int value) {
            ensureAddIsMutable();
            add_.add(value);
            onChanged();
            return this;
          }
          /**
           * <code>repeated uint32 add = 5;</code>
           */
          public Builder addAllAdd(
              java.lang.Iterable<? extends java.lang.Integer> values) {
            ensureAddIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, add_);
            onChanged();
            return this;
          }
          /**
           * <code>repeated uint32 add = 5;</code>
           */
          public Builder clearAdd() {
            add_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000010);
            onChanged();
            return this;
          }
  
          private java.util.List<java.lang.Integer> remove_ = java.util.Collections.emptyList();
          private void ensureRemoveIsMutable() {
            if (!((bitField0_ & 0x00000020) == 0x00000020)) {
              remove_ = new java.util.ArrayList<java.lang.Integer>(remove_);
              bitField0_ |= 0x00000020;
             }
          }
          /**
           * <code>repeated uint32 remove = 6;</code>
           */
          public java.util.List<java.lang.Integer>
              getRemoveList() {
            return java.util.Collections.unmodifiableList(remove_);
          }
          /**
           * <code>repeated uint32 remove = 6;</code>
           */
          public int getRemoveCount() {
            return remove_.size();
          }
          /**
           * <code>repeated uint32 remove = 6;</code>
           */
          public int getRemove(int index) {
            return remove_.get(index);
          }
          /**
           * <code>repeated uint32 remove = 6;</code>
           */
          public Builder setRemove(
              int index, int value) {
            ensureRemoveIsMutable();
            remove_.set(index, value);
            onChanged();
            return this;
          }
          /**
           * <code>repeated uint32 remove = 6;</code>
           */
          public Builder addRemove(int value) {
            ensureRemoveIsMutable();
            remove_.add(value);
            onChanged();
            return this;
          }
          /**
           * <code>repeated uint32 remove = 6;</code>
           */
          public Builder addAllRemove(
              java.lang.Iterable<? extends java.lang.Integer> values) {
            ensureRemoveIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, remove_);
            onChanged();
            return this;
          }
          /**
           * <code>repeated uint32 remove = 6;</code>
           */
          public Builder clearRemove() {
            remove_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000020);
            onChanged();
            return this;
          }
  
          private java.util.List<java.lang.Integer> inheritedMembers_ = java.util.Collections.emptyList();
          private void ensureInheritedMembersIsMutable() {
            if (!((bitField0_ & 0x00000040) == 0x00000040)) {
              inheritedMembers_ = new java.util.ArrayList<java.lang.Integer>(inheritedMembers_);
              bitField0_ |= 0x00000040;
             }
          }
          /**
           * <code>repeated uint32 inherited_members = 7;</code>
           */
          public java.util.List<java.lang.Integer>
              getInheritedMembersList() {
            return java.util.Collections.unmodifiableList(inheritedMembers_);
          }
          /**
           * <code>repeated uint32 inherited_members = 7;</code>
           */
          public int getInheritedMembersCount() {
            return inheritedMembers_.size();
          }
          /**
           * <code>repeated uint32 inherited_members = 7;</code>
           */
          public int getInheritedMembers(int index) {
            return inheritedMembers_.get(index);
          }
          /**
           * <code>repeated uint32 inherited_members = 7;</code>
           */
          public Builder setInheritedMembers(
              int index, int value) {
            ensureInheritedMembersIsMutable();
            inheritedMembers_.set(index, value);
            onChanged();
            return this;
          }
          /**
           * <code>repeated uint32 inherited_members = 7;</code>
           */
          public Builder addInheritedMembers(int value) {
            ensureInheritedMembersIsMutable();
            inheritedMembers_.add(value);
            onChanged();
            return this;
          }
          /**
           * <code>repeated uint32 inherited_members = 7;</code>
           */
          public Builder addAllInheritedMembers(
              java.lang.Iterable<? extends java.lang.Integer> values) {
            ensureInheritedMembersIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, inheritedMembers_);
            onChanged();
            return this;
          }
          /**
           * <code>repeated uint32 inherited_members = 7;</code>
           */
          public Builder clearInheritedMembers() {
            inheritedMembers_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000040);
            onChanged();
            return this;
          }
          public final Builder setUnknownFields(
              final com.google.protobuf.UnknownFieldSet unknownFields) {
            return super.setUnknownFields(unknownFields);
          }
  
          public final Builder mergeUnknownFields(
              final com.google.protobuf.UnknownFieldSet unknownFields) {
            return super.mergeUnknownFields(unknownFields);
          }
  
  
          // @@protoc_insertion_point(builder_scope:MumbleProto.ACL.ChanGroup)
        }
  
        // @@protoc_insertion_point(class_scope:MumbleProto.ACL.ChanGroup)
        private static final com.morlunk.jumble.protobuf.Mumble.ACL.ChanGroup DEFAULT_INSTANCE;
        static {
          DEFAULT_INSTANCE = new com.morlunk.jumble.protobuf.Mumble.ACL.ChanGroup();
        }
  
        public static com.morlunk.jumble.protobuf.Mumble.ACL.ChanGroup getDefaultInstance() {
          return DEFAULT_INSTANCE;
        }
  
        @java.lang.Deprecated public static final com.google.protobuf.Parser<ChanGroup>
            PARSER = new com.google.protobuf.AbstractParser<ChanGroup>() {
          public ChanGroup parsePartialFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
              return new ChanGroup(input, extensionRegistry);
          }
        };
  
        public static com.google.protobuf.Parser<ChanGroup> parser() {
          return PARSER;
        }
  
        @java.lang.Override
        public com.google.protobuf.Parser<ChanGroup> getParserForType() {
          return PARSER;
        }
  
        public com.morlunk.jumble.protobuf.Mumble.ACL.ChanGroup getDefaultInstanceForType() {
          return DEFAULT_INSTANCE;
        }
  
      }
  
      public interface ChanACLOrBuilder extends
          // @@protoc_insertion_point(interface_extends:MumbleProto.ACL.ChanACL)
          com.google.protobuf.MessageOrBuilder {
  
        /**
         * <code>optional bool apply_here = 1 [default = true];</code>
         */
        boolean hasApplyHere();
        /**
         * <code>optional bool apply_here = 1 [default = true];</code>
         */
        boolean getApplyHere();
  
        /**
         * <code>optional bool apply_subs = 2 [default = true];</code>
         */
        boolean hasApplySubs();
        /**
         * <code>optional bool apply_subs = 2 [default = true];</code>
         */
        boolean getApplySubs();
  
        /**
         * <code>optional bool inherited = 3 [default = true];</code>
         */
        boolean hasInherited();
        /**
         * <code>optional bool inherited = 3 [default = true];</code>
         */
        boolean getInherited();
  
        /**
         * <code>optional uint32 user_id = 4;</code>
         */
        boolean hasUserId();
        /**
         * <code>optional uint32 user_id = 4;</code>
         */
        int getUserId();
  
        /**
         * <code>optional string group = 5;</code>
         */
        boolean hasGroup();
        /**
         * <code>optional string group = 5;</code>
         */
        java.lang.String getGroup();
        /**
         * <code>optional string group = 5;</code>
         */
        com.google.protobuf.ByteString
            getGroupBytes();
  
        /**
         * <code>optional uint32 grant = 6;</code>
         */
        boolean hasGrant();
        /**
         * <code>optional uint32 grant = 6;</code>
         */
        int getGrant();
  
        /**
         * <code>optional uint32 deny = 7;</code>
         */
        boolean hasDeny();
        /**
         * <code>optional uint32 deny = 7;</code>
         */
        int getDeny();
      }
      /**
       * Protobuf type {@code MumbleProto.ACL.ChanACL}
       */
      public  static final class ChanACL extends
          com.google.protobuf.GeneratedMessageV3 implements
          // @@protoc_insertion_point(message_implements:MumbleProto.ACL.ChanACL)
          ChanACLOrBuilder {
        // Use ChanACL.newBuilder() to construct.
        private ChanACL(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
          super(builder);
        }
        private ChanACL() {
          applyHere_ = true;
          applySubs_ = true;
          inherited_ = true;
          userId_ = 0;
          group_ = "";
          grant_ = 0;
          deny_ = 0;
        }
  
        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
          return this.unknownFields;
        }
        private ChanACL(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          this();
          int mutable_bitField0_ = 0;
          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
              com.google.protobuf.UnknownFieldSet.newBuilder();
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                default: {
                  if (!parseUnknownField(input, unknownFields,
                                         extensionRegistry, tag)) {
                    done = true;
                  }
                  break;
                }
                case 8: {
                  bitField0_ |= 0x00000001;
                  applyHere_ = input.readBool();
                  break;
                }
                case 16: {
                  bitField0_ |= 0x00000002;
                  applySubs_ = input.readBool();
                  break;
                }
                case 24: {
                  bitField0_ |= 0x00000004;
                  inherited_ = input.readBool();
                  break;
                }
                case 32: {
                  bitField0_ |= 0x00000008;
                  userId_ = input.readUInt32();
                  break;
                }
                case 42: {
                  com.google.protobuf.ByteString bs = input.readBytes();
                  bitField0_ |= 0x00000010;
                  group_ = bs;
                  break;
                }
                case 48: {
                  bitField0_ |= 0x00000020;
                  grant_ = input.readUInt32();
                  break;
                }
                case 56: {
                  bitField0_ |= 0x00000040;
                  deny_ = input.readUInt32();
                  break;
                }
              }
            }
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(this);
          } catch (java.io.IOException e) {
            throw new com.google.protobuf.InvalidProtocolBufferException(
                e).setUnfinishedMessage(this);
          } finally {
            this.unknownFields = unknownFields.build();
            makeExtensionsImmutable();
          }
        }
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_ACL_ChanACL_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_ACL_ChanACL_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.morlunk.jumble.protobuf.Mumble.ACL.ChanACL.class, com.morlunk.jumble.protobuf.Mumble.ACL.ChanACL.Builder.class);
        }
  
        private int bitField0_;
        public static final int APPLY_HERE_FIELD_NUMBER = 1;
        private boolean applyHere_;
        /**
         * <code>optional bool apply_here = 1 [default = true];</code>
         */
        public boolean hasApplyHere() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <code>optional bool apply_here = 1 [default = true];</code>
         */
        public boolean getApplyHere() {
          return applyHere_;
        }
  
        public static final int APPLY_SUBS_FIELD_NUMBER = 2;
        private boolean applySubs_;
        /**
         * <code>optional bool apply_subs = 2 [default = true];</code>
         */
        public boolean hasApplySubs() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * <code>optional bool apply_subs = 2 [default = true];</code>
         */
        public boolean getApplySubs() {
          return applySubs_;
        }
  
        public static final int INHERITED_FIELD_NUMBER = 3;
        private boolean inherited_;
        /**
         * <code>optional bool inherited = 3 [default = true];</code>
         */
        public boolean hasInherited() {
          return ((bitField0_ & 0x00000004) == 0x00000004);
        }
        /**
         * <code>optional bool inherited = 3 [default = true];</code>
         */
        public boolean getInherited() {
          return inherited_;
        }
  
        public static final int USER_ID_FIELD_NUMBER = 4;
        private int userId_;
        /**
         * <code>optional uint32 user_id = 4;</code>
         */
        public boolean hasUserId() {
          return ((bitField0_ & 0x00000008) == 0x00000008);
        }
        /**
         * <code>optional uint32 user_id = 4;</code>
         */
        public int getUserId() {
          return userId_;
        }
  
        public static final int GROUP_FIELD_NUMBER = 5;
        private volatile java.lang.Object group_;
        /**
         * <code>optional string group = 5;</code>
         */
        public boolean hasGroup() {
          return ((bitField0_ & 0x00000010) == 0x00000010);
        }
        /**
         * <code>optional string group = 5;</code>
         */
        public java.lang.String getGroup() {
          java.lang.Object ref = group_;
          if (ref instanceof java.lang.String) {
            return (java.lang.String) ref;
          } else {
            com.google.protobuf.ByteString bs = 
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              group_ = s;
            }
            return s;
          }
        }
        /**
         * <code>optional string group = 5;</code>
         */
        public com.google.protobuf.ByteString
            getGroupBytes() {
          java.lang.Object ref = group_;
          if (ref instanceof java.lang.String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            group_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
  
        public static final int GRANT_FIELD_NUMBER = 6;
        private int grant_;
        /**
         * <code>optional uint32 grant = 6;</code>
         */
        public boolean hasGrant() {
          return ((bitField0_ & 0x00000020) == 0x00000020);
        }
        /**
         * <code>optional uint32 grant = 6;</code>
         */
        public int getGrant() {
          return grant_;
        }
  
        public static final int DENY_FIELD_NUMBER = 7;
        private int deny_;
        /**
         * <code>optional uint32 deny = 7;</code>
         */
        public boolean hasDeny() {
          return ((bitField0_ & 0x00000040) == 0x00000040);
        }
        /**
         * <code>optional uint32 deny = 7;</code>
         */
        public int getDeny() {
          return deny_;
        }
  
        private byte memoizedIsInitialized = -1;
        public final boolean isInitialized() {
          byte isInitialized = memoizedIsInitialized;
          if (isInitialized == 1) return true;
          if (isInitialized == 0) return false;
  
          memoizedIsInitialized = 1;
          return true;
        }
  
        public void writeTo(com.google.protobuf.CodedOutputStream output)
                            throws java.io.IOException {
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            output.writeBool(1, applyHere_);
          }
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            output.writeBool(2, applySubs_);
          }
          if (((bitField0_ & 0x00000004) == 0x00000004)) {
            output.writeBool(3, inherited_);
          }
          if (((bitField0_ & 0x00000008) == 0x00000008)) {
            output.writeUInt32(4, userId_);
          }
          if (((bitField0_ & 0x00000010) == 0x00000010)) {
            com.google.protobuf.GeneratedMessageV3.writeString(output, 5, group_);
          }
          if (((bitField0_ & 0x00000020) == 0x00000020)) {
            output.writeUInt32(6, grant_);
          }
          if (((bitField0_ & 0x00000040) == 0x00000040)) {
            output.writeUInt32(7, deny_);
          }
          unknownFields.writeTo(output);
        }
  
        public int getSerializedSize() {
          int size = memoizedSize;
          if (size != -1) return size;
  
          size = 0;
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            size += com.google.protobuf.CodedOutputStream
              .computeBoolSize(1, applyHere_);
          }
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            size += com.google.protobuf.CodedOutputStream
              .computeBoolSize(2, applySubs_);
          }
          if (((bitField0_ & 0x00000004) == 0x00000004)) {
            size += com.google.protobuf.CodedOutputStream
              .computeBoolSize(3, inherited_);
          }
          if (((bitField0_ & 0x00000008) == 0x00000008)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(4, userId_);
          }
          if (((bitField0_ & 0x00000010) == 0x00000010)) {
            size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, group_);
          }
          if (((bitField0_ & 0x00000020) == 0x00000020)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(6, grant_);
          }
          if (((bitField0_ & 0x00000040) == 0x00000040)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(7, deny_);
          }
          size += unknownFields.getSerializedSize();
          memoizedSize = size;
          return size;
        }
  
        private static final long serialVersionUID = 0L;
        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
          if (obj == this) {
           return true;
          }
          if (!(obj instanceof com.morlunk.jumble.protobuf.Mumble.ACL.ChanACL)) {
            return super.equals(obj);
          }
          com.morlunk.jumble.protobuf.Mumble.ACL.ChanACL other = (com.morlunk.jumble.protobuf.Mumble.ACL.ChanACL) obj;
  
          boolean result = true;
          result = result && (hasApplyHere() == other.hasApplyHere());
          if (hasApplyHere()) {
            result = result && (getApplyHere()
                == other.getApplyHere());
          }
          result = result && (hasApplySubs() == other.hasApplySubs());
          if (hasApplySubs()) {
            result = result && (getApplySubs()
                == other.getApplySubs());
          }
          result = result && (hasInherited() == other.hasInherited());
          if (hasInherited()) {
            result = result && (getInherited()
                == other.getInherited());
          }
          result = result && (hasUserId() == other.hasUserId());
          if (hasUserId()) {
            result = result && (getUserId()
                == other.getUserId());
          }
          result = result && (hasGroup() == other.hasGroup());
          if (hasGroup()) {
            result = result && getGroup()
                .equals(other.getGroup());
          }
          result = result && (hasGrant() == other.hasGrant());
          if (hasGrant()) {
            result = result && (getGrant()
                == other.getGrant());
          }
          result = result && (hasDeny() == other.hasDeny());
          if (hasDeny()) {
            result = result && (getDeny()
                == other.getDeny());
          }
          result = result && unknownFields.equals(other.unknownFields);
          return result;
        }
  
        @java.lang.Override
        public int hashCode() {
          if (memoizedHashCode != 0) {
            return memoizedHashCode;
          }
          int hash = 41;
          hash = (19 * hash) + getDescriptorForType().hashCode();
          if (hasApplyHere()) {
            hash = (37 * hash) + APPLY_HERE_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
                getApplyHere());
          }
          if (hasApplySubs()) {
            hash = (37 * hash) + APPLY_SUBS_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
                getApplySubs());
          }
          if (hasInherited()) {
            hash = (37 * hash) + INHERITED_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
                getInherited());
          }
          if (hasUserId()) {
            hash = (37 * hash) + USER_ID_FIELD_NUMBER;
            hash = (53 * hash) + getUserId();
          }
          if (hasGroup()) {
            hash = (37 * hash) + GROUP_FIELD_NUMBER;
            hash = (53 * hash) + getGroup().hashCode();
          }
          if (hasGrant()) {
            hash = (37 * hash) + GRANT_FIELD_NUMBER;
            hash = (53 * hash) + getGrant();
          }
          if (hasDeny()) {
            hash = (37 * hash) + DENY_FIELD_NUMBER;
            hash = (53 * hash) + getDeny();
          }
          hash = (29 * hash) + unknownFields.hashCode();
          memoizedHashCode = hash;
          return hash;
        }
  
        public static com.morlunk.jumble.protobuf.Mumble.ACL.ChanACL parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static com.morlunk.jumble.protobuf.Mumble.ACL.ChanACL parseFrom(
            com.google.protobuf.ByteString data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.morlunk.jumble.protobuf.Mumble.ACL.ChanACL parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static com.morlunk.jumble.protobuf.Mumble.ACL.ChanACL parseFrom(
            byte[] data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.morlunk.jumble.protobuf.Mumble.ACL.ChanACL parseFrom(java.io.InputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input);
        }
        public static com.morlunk.jumble.protobuf.Mumble.ACL.ChanACL parseFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.morlunk.jumble.protobuf.Mumble.ACL.ChanACL parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseDelimitedWithIOException(PARSER, input);
        }
        public static com.morlunk.jumble.protobuf.Mumble.ACL.ChanACL parseDelimitedFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.morlunk.jumble.protobuf.Mumble.ACL.ChanACL parseFrom(
            com.google.protobuf.CodedInputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input);
        }
        public static com.morlunk.jumble.protobuf.Mumble.ACL.ChanACL parseFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input, extensionRegistry);
        }
  
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder() {
          return DEFAULT_INSTANCE.toBuilder();
        }
        public static Builder newBuilder(com.morlunk.jumble.protobuf.Mumble.ACL.ChanACL prototype) {
          return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }
        public Builder toBuilder() {
          return this == DEFAULT_INSTANCE
              ? new Builder() : new Builder().mergeFrom(this);
        }
  
        @java.lang.Override
        protected Builder newBuilderForType(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          Builder builder = new Builder(parent);
          return builder;
        }
        /**
         * Protobuf type {@code MumbleProto.ACL.ChanACL}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
            // @@protoc_insertion_point(builder_implements:MumbleProto.ACL.ChanACL)
            com.morlunk.jumble.protobuf.Mumble.ACL.ChanACLOrBuilder {
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_ACL_ChanACL_descriptor;
          }
  
          protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_ACL_ChanACL_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    com.morlunk.jumble.protobuf.Mumble.ACL.ChanACL.class, com.morlunk.jumble.protobuf.Mumble.ACL.ChanACL.Builder.class);
          }
  
          // Construct using com.morlunk.jumble.protobuf.Mumble.ACL.ChanACL.newBuilder()
          private Builder() {
            maybeForceBuilderInitialization();
          }
  
          private Builder(
              com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            super(parent);
            maybeForceBuilderInitialization();
          }
          private void maybeForceBuilderInitialization() {
            if (com.google.protobuf.GeneratedMessageV3
                    .alwaysUseFieldBuilders) {
            }
          }
          public Builder clear() {
            super.clear();
            applyHere_ = true;
            bitField0_ = (bitField0_ & ~0x00000001);
            applySubs_ = true;
            bitField0_ = (bitField0_ & ~0x00000002);
            inherited_ = true;
            bitField0_ = (bitField0_ & ~0x00000004);
            userId_ = 0;
            bitField0_ = (bitField0_ & ~0x00000008);
            group_ = "";
            bitField0_ = (bitField0_ & ~0x00000010);
            grant_ = 0;
            bitField0_ = (bitField0_ & ~0x00000020);
            deny_ = 0;
            bitField0_ = (bitField0_ & ~0x00000040);
            return this;
          }
  
          public com.google.protobuf.Descriptors.Descriptor
              getDescriptorForType() {
            return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_ACL_ChanACL_descriptor;
          }
  
          public com.morlunk.jumble.protobuf.Mumble.ACL.ChanACL getDefaultInstanceForType() {
            return com.morlunk.jumble.protobuf.Mumble.ACL.ChanACL.getDefaultInstance();
          }
  
          public com.morlunk.jumble.protobuf.Mumble.ACL.ChanACL build() {
            com.morlunk.jumble.protobuf.Mumble.ACL.ChanACL result = buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(result);
            }
            return result;
          }
  
          public com.morlunk.jumble.protobuf.Mumble.ACL.ChanACL buildPartial() {
            com.morlunk.jumble.protobuf.Mumble.ACL.ChanACL result = new com.morlunk.jumble.protobuf.Mumble.ACL.ChanACL(this);
            int from_bitField0_ = bitField0_;
            int to_bitField0_ = 0;
            if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
              to_bitField0_ |= 0x00000001;
            }
            result.applyHere_ = applyHere_;
            if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
              to_bitField0_ |= 0x00000002;
            }
            result.applySubs_ = applySubs_;
            if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
              to_bitField0_ |= 0x00000004;
            }
            result.inherited_ = inherited_;
            if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
              to_bitField0_ |= 0x00000008;
            }
            result.userId_ = userId_;
            if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
              to_bitField0_ |= 0x00000010;
            }
            result.group_ = group_;
            if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
              to_bitField0_ |= 0x00000020;
            }
            result.grant_ = grant_;
            if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
              to_bitField0_ |= 0x00000040;
            }
            result.deny_ = deny_;
            result.bitField0_ = to_bitField0_;
            onBuilt();
            return result;
          }
  
          public Builder clone() {
            return (Builder) super.clone();
          }
          public Builder setField(
              com.google.protobuf.Descriptors.FieldDescriptor field,
              Object value) {
            return (Builder) super.setField(field, value);
          }
          public Builder clearField(
              com.google.protobuf.Descriptors.FieldDescriptor field) {
            return (Builder) super.clearField(field);
          }
          public Builder clearOneof(
              com.google.protobuf.Descriptors.OneofDescriptor oneof) {
            return (Builder) super.clearOneof(oneof);
          }
          public Builder setRepeatedField(
              com.google.protobuf.Descriptors.FieldDescriptor field,
              int index, Object value) {
            return (Builder) super.setRepeatedField(field, index, value);
          }
          public Builder addRepeatedField(
              com.google.protobuf.Descriptors.FieldDescriptor field,
              Object value) {
            return (Builder) super.addRepeatedField(field, value);
          }
          public Builder mergeFrom(com.google.protobuf.Message other) {
            if (other instanceof com.morlunk.jumble.protobuf.Mumble.ACL.ChanACL) {
              return mergeFrom((com.morlunk.jumble.protobuf.Mumble.ACL.ChanACL)other);
            } else {
              super.mergeFrom(other);
              return this;
            }
          }
  
          public Builder mergeFrom(com.morlunk.jumble.protobuf.Mumble.ACL.ChanACL other) {
            if (other == com.morlunk.jumble.protobuf.Mumble.ACL.ChanACL.getDefaultInstance()) return this;
            if (other.hasApplyHere()) {
              setApplyHere(other.getApplyHere());
            }
            if (other.hasApplySubs()) {
              setApplySubs(other.getApplySubs());
            }
            if (other.hasInherited()) {
              setInherited(other.getInherited());
            }
            if (other.hasUserId()) {
              setUserId(other.getUserId());
            }
            if (other.hasGroup()) {
              bitField0_ |= 0x00000010;
              group_ = other.group_;
              onChanged();
            }
            if (other.hasGrant()) {
              setGrant(other.getGrant());
            }
            if (other.hasDeny()) {
              setDeny(other.getDeny());
            }
            this.mergeUnknownFields(other.unknownFields);
            onChanged();
            return this;
          }
  
          public final boolean isInitialized() {
            return true;
          }
  
          public Builder mergeFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            com.morlunk.jumble.protobuf.Mumble.ACL.ChanACL parsedMessage = null;
            try {
              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              parsedMessage = (com.morlunk.jumble.protobuf.Mumble.ACL.ChanACL) e.getUnfinishedMessage();
              throw e.unwrapIOException();
            } finally {
              if (parsedMessage != null) {
                mergeFrom(parsedMessage);
              }
            }
            return this;
          }
          private int bitField0_;
  
          private boolean applyHere_ = true;
          /**
           * <code>optional bool apply_here = 1 [default = true];</code>
           */
          public boolean hasApplyHere() {
            return ((bitField0_ & 0x00000001) == 0x00000001);
          }
          /**
           * <code>optional bool apply_here = 1 [default = true];</code>
           */
          public boolean getApplyHere() {
            return applyHere_;
          }
          /**
           * <code>optional bool apply_here = 1 [default = true];</code>
           */
          public Builder setApplyHere(boolean value) {
            bitField0_ |= 0x00000001;
            applyHere_ = value;
            onChanged();
            return this;
          }
          /**
           * <code>optional bool apply_here = 1 [default = true];</code>
           */
          public Builder clearApplyHere() {
            bitField0_ = (bitField0_ & ~0x00000001);
            applyHere_ = true;
            onChanged();
            return this;
          }
  
          private boolean applySubs_ = true;
          /**
           * <code>optional bool apply_subs = 2 [default = true];</code>
           */
          public boolean hasApplySubs() {
            return ((bitField0_ & 0x00000002) == 0x00000002);
          }
          /**
           * <code>optional bool apply_subs = 2 [default = true];</code>
           */
          public boolean getApplySubs() {
            return applySubs_;
          }
          /**
           * <code>optional bool apply_subs = 2 [default = true];</code>
           */
          public Builder setApplySubs(boolean value) {
            bitField0_ |= 0x00000002;
            applySubs_ = value;
            onChanged();
            return this;
          }
          /**
           * <code>optional bool apply_subs = 2 [default = true];</code>
           */
          public Builder clearApplySubs() {
            bitField0_ = (bitField0_ & ~0x00000002);
            applySubs_ = true;
            onChanged();
            return this;
          }
  
          private boolean inherited_ = true;
          /**
           * <code>optional bool inherited = 3 [default = true];</code>
           */
          public boolean hasInherited() {
            return ((bitField0_ & 0x00000004) == 0x00000004);
          }
          /**
           * <code>optional bool inherited = 3 [default = true];</code>
           */
          public boolean getInherited() {
            return inherited_;
          }
          /**
           * <code>optional bool inherited = 3 [default = true];</code>
           */
          public Builder setInherited(boolean value) {
            bitField0_ |= 0x00000004;
            inherited_ = value;
            onChanged();
            return this;
          }
          /**
           * <code>optional bool inherited = 3 [default = true];</code>
           */
          public Builder clearInherited() {
            bitField0_ = (bitField0_ & ~0x00000004);
            inherited_ = true;
            onChanged();
            return this;
          }
  
          private int userId_ ;
          /**
           * <code>optional uint32 user_id = 4;</code>
           */
          public boolean hasUserId() {
            return ((bitField0_ & 0x00000008) == 0x00000008);
          }
          /**
           * <code>optional uint32 user_id = 4;</code>
           */
          public int getUserId() {
            return userId_;
          }
          /**
           * <code>optional uint32 user_id = 4;</code>
           */
          public Builder setUserId(int value) {
            bitField0_ |= 0x00000008;
            userId_ = value;
            onChanged();
            return this;
          }
          /**
           * <code>optional uint32 user_id = 4;</code>
           */
          public Builder clearUserId() {
            bitField0_ = (bitField0_ & ~0x00000008);
            userId_ = 0;
            onChanged();
            return this;
          }
  
          private java.lang.Object group_ = "";
          /**
           * <code>optional string group = 5;</code>
           */
          public boolean hasGroup() {
            return ((bitField0_ & 0x00000010) == 0x00000010);
          }
          /**
           * <code>optional string group = 5;</code>
           */
          public java.lang.String getGroup() {
            java.lang.Object ref = group_;
            if (!(ref instanceof java.lang.String)) {
              com.google.protobuf.ByteString bs =
                  (com.google.protobuf.ByteString) ref;
              java.lang.String s = bs.toStringUtf8();
              if (bs.isValidUtf8()) {
                group_ = s;
              }
              return s;
            } else {
              return (java.lang.String) ref;
            }
          }
          /**
           * <code>optional string group = 5;</code>
           */
          public com.google.protobuf.ByteString
              getGroupBytes() {
            java.lang.Object ref = group_;
            if (ref instanceof String) {
              com.google.protobuf.ByteString b = 
                  com.google.protobuf.ByteString.copyFromUtf8(
                      (java.lang.String) ref);
              group_ = b;
              return b;
            } else {
              return (com.google.protobuf.ByteString) ref;
            }
          }
          /**
           * <code>optional string group = 5;</code>
           */
          public Builder setGroup(
              java.lang.String value) {
            if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000010;
            group_ = value;
            onChanged();
            return this;
          }
          /**
           * <code>optional string group = 5;</code>
           */
          public Builder clearGroup() {
            bitField0_ = (bitField0_ & ~0x00000010);
            group_ = getDefaultInstance().getGroup();
            onChanged();
            return this;
          }
          /**
           * <code>optional string group = 5;</code>
           */
          public Builder setGroupBytes(
              com.google.protobuf.ByteString value) {
            if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000010;
            group_ = value;
            onChanged();
            return this;
          }
  
          private int grant_ ;
          /**
           * <code>optional uint32 grant = 6;</code>
           */
          public boolean hasGrant() {
            return ((bitField0_ & 0x00000020) == 0x00000020);
          }
          /**
           * <code>optional uint32 grant = 6;</code>
           */
          public int getGrant() {
            return grant_;
          }
          /**
           * <code>optional uint32 grant = 6;</code>
           */
          public Builder setGrant(int value) {
            bitField0_ |= 0x00000020;
            grant_ = value;
            onChanged();
            return this;
          }
          /**
           * <code>optional uint32 grant = 6;</code>
           */
          public Builder clearGrant() {
            bitField0_ = (bitField0_ & ~0x00000020);
            grant_ = 0;
            onChanged();
            return this;
          }
  
          private int deny_ ;
          /**
           * <code>optional uint32 deny = 7;</code>
           */
          public boolean hasDeny() {
            return ((bitField0_ & 0x00000040) == 0x00000040);
          }
          /**
           * <code>optional uint32 deny = 7;</code>
           */
          public int getDeny() {
            return deny_;
          }
          /**
           * <code>optional uint32 deny = 7;</code>
           */
          public Builder setDeny(int value) {
            bitField0_ |= 0x00000040;
            deny_ = value;
            onChanged();
            return this;
          }
          /**
           * <code>optional uint32 deny = 7;</code>
           */
          public Builder clearDeny() {
            bitField0_ = (bitField0_ & ~0x00000040);
            deny_ = 0;
            onChanged();
            return this;
          }
          public final Builder setUnknownFields(
              final com.google.protobuf.UnknownFieldSet unknownFields) {
            return super.setUnknownFields(unknownFields);
          }
  
          public final Builder mergeUnknownFields(
              final com.google.protobuf.UnknownFieldSet unknownFields) {
            return super.mergeUnknownFields(unknownFields);
          }
  
  
          // @@protoc_insertion_point(builder_scope:MumbleProto.ACL.ChanACL)
        }
  
        // @@protoc_insertion_point(class_scope:MumbleProto.ACL.ChanACL)
        private static final com.morlunk.jumble.protobuf.Mumble.ACL.ChanACL DEFAULT_INSTANCE;
        static {
          DEFAULT_INSTANCE = new com.morlunk.jumble.protobuf.Mumble.ACL.ChanACL();
        }
  
        public static com.morlunk.jumble.protobuf.Mumble.ACL.ChanACL getDefaultInstance() {
          return DEFAULT_INSTANCE;
        }
  
        @java.lang.Deprecated public static final com.google.protobuf.Parser<ChanACL>
            PARSER = new com.google.protobuf.AbstractParser<ChanACL>() {
          public ChanACL parsePartialFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
              return new ChanACL(input, extensionRegistry);
          }
        };
  
        public static com.google.protobuf.Parser<ChanACL> parser() {
          return PARSER;
        }
  
        @java.lang.Override
        public com.google.protobuf.Parser<ChanACL> getParserForType() {
          return PARSER;
        }
  
        public com.morlunk.jumble.protobuf.Mumble.ACL.ChanACL getDefaultInstanceForType() {
          return DEFAULT_INSTANCE;
        }
  
      }
  
      private int bitField0_;
      public static final int CHANNEL_ID_FIELD_NUMBER = 1;
      private int channelId_;
      /**
       * <code>required uint32 channel_id = 1;</code>
       */
      public boolean hasChannelId() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required uint32 channel_id = 1;</code>
       */
      public int getChannelId() {
        return channelId_;
      }
  
      public static final int INHERIT_ACLS_FIELD_NUMBER = 2;
      private boolean inheritAcls_;
      /**
       * <code>optional bool inherit_acls = 2 [default = true];</code>
       */
      public boolean hasInheritAcls() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional bool inherit_acls = 2 [default = true];</code>
       */
      public boolean getInheritAcls() {
        return inheritAcls_;
      }
  
      public static final int GROUPS_FIELD_NUMBER = 3;
      private java.util.List<com.morlunk.jumble.protobuf.Mumble.ACL.ChanGroup> groups_;
      /**
       * <code>repeated .MumbleProto.ACL.ChanGroup groups = 3;</code>
       */
      public java.util.List<com.morlunk.jumble.protobuf.Mumble.ACL.ChanGroup> getGroupsList() {
        return groups_;
      }
      /**
       * <code>repeated .MumbleProto.ACL.ChanGroup groups = 3;</code>
       */
      public java.util.List<? extends com.morlunk.jumble.protobuf.Mumble.ACL.ChanGroupOrBuilder> 
          getGroupsOrBuilderList() {
        return groups_;
      }
      /**
       * <code>repeated .MumbleProto.ACL.ChanGroup groups = 3;</code>
       */
      public int getGroupsCount() {
        return groups_.size();
      }
      /**
       * <code>repeated .MumbleProto.ACL.ChanGroup groups = 3;</code>
       */
      public com.morlunk.jumble.protobuf.Mumble.ACL.ChanGroup getGroups(int index) {
        return groups_.get(index);
      }
      /**
       * <code>repeated .MumbleProto.ACL.ChanGroup groups = 3;</code>
       */
      public com.morlunk.jumble.protobuf.Mumble.ACL.ChanGroupOrBuilder getGroupsOrBuilder(
          int index) {
        return groups_.get(index);
      }
  
      public static final int ACLS_FIELD_NUMBER = 4;
      private java.util.List<com.morlunk.jumble.protobuf.Mumble.ACL.ChanACL> acls_;
      /**
       * <code>repeated .MumbleProto.ACL.ChanACL acls = 4;</code>
       */
      public java.util.List<com.morlunk.jumble.protobuf.Mumble.ACL.ChanACL> getAclsList() {
        return acls_;
      }
      /**
       * <code>repeated .MumbleProto.ACL.ChanACL acls = 4;</code>
       */
      public java.util.List<? extends com.morlunk.jumble.protobuf.Mumble.ACL.ChanACLOrBuilder> 
          getAclsOrBuilderList() {
        return acls_;
      }
      /**
       * <code>repeated .MumbleProto.ACL.ChanACL acls = 4;</code>
       */
      public int getAclsCount() {
        return acls_.size();
      }
      /**
       * <code>repeated .MumbleProto.ACL.ChanACL acls = 4;</code>
       */
      public com.morlunk.jumble.protobuf.Mumble.ACL.ChanACL getAcls(int index) {
        return acls_.get(index);
      }
      /**
       * <code>repeated .MumbleProto.ACL.ChanACL acls = 4;</code>
       */
      public com.morlunk.jumble.protobuf.Mumble.ACL.ChanACLOrBuilder getAclsOrBuilder(
          int index) {
        return acls_.get(index);
      }
  
      public static final int QUERY_FIELD_NUMBER = 5;
      private boolean query_;
      /**
       * <code>optional bool query = 5 [default = false];</code>
       */
      public boolean hasQuery() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>optional bool query = 5 [default = false];</code>
       */
      public boolean getQuery() {
        return query_;
      }
  
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        if (!hasChannelId()) {
          memoizedIsInitialized = 0;
          return false;
        }
        for (int i = 0; i < getGroupsCount(); i++) {
          if (!getGroups(i).isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        memoizedIsInitialized = 1;
        return true;
      }
  
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeUInt32(1, channelId_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          output.writeBool(2, inheritAcls_);
        }
        for (int i = 0; i < groups_.size(); i++) {
          output.writeMessage(3, groups_.get(i));
        }
        for (int i = 0; i < acls_.size(); i++) {
          output.writeMessage(4, acls_.get(i));
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          output.writeBool(5, query_);
        }
        unknownFields.writeTo(output);
      }
  
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(1, channelId_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBoolSize(2, inheritAcls_);
        }
        for (int i = 0; i < groups_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(3, groups_.get(i));
        }
        for (int i = 0; i < acls_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(4, acls_.get(i));
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBoolSize(5, query_);
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }
  
      private static final long serialVersionUID = 0L;
      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.morlunk.jumble.protobuf.Mumble.ACL)) {
          return super.equals(obj);
        }
        com.morlunk.jumble.protobuf.Mumble.ACL other = (com.morlunk.jumble.protobuf.Mumble.ACL) obj;
  
        boolean result = true;
        result = result && (hasChannelId() == other.hasChannelId());
        if (hasChannelId()) {
          result = result && (getChannelId()
              == other.getChannelId());
        }
        result = result && (hasInheritAcls() == other.hasInheritAcls());
        if (hasInheritAcls()) {
          result = result && (getInheritAcls()
              == other.getInheritAcls());
        }
        result = result && getGroupsList()
            .equals(other.getGroupsList());
        result = result && getAclsList()
            .equals(other.getAclsList());
        result = result && (hasQuery() == other.hasQuery());
        if (hasQuery()) {
          result = result && (getQuery()
              == other.getQuery());
        }
        result = result && unknownFields.equals(other.unknownFields);
        return result;
      }
  
      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptorForType().hashCode();
        if (hasChannelId()) {
          hash = (37 * hash) + CHANNEL_ID_FIELD_NUMBER;
          hash = (53 * hash) + getChannelId();
        }
        if (hasInheritAcls()) {
          hash = (37 * hash) + INHERIT_ACLS_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
              getInheritAcls());
        }
        if (getGroupsCount() > 0) {
          hash = (37 * hash) + GROUPS_FIELD_NUMBER;
          hash = (53 * hash) + getGroupsList().hashCode();
        }
        if (getAclsCount() > 0) {
          hash = (37 * hash) + ACLS_FIELD_NUMBER;
          hash = (53 * hash) + getAclsList().hashCode();
        }
        if (hasQuery()) {
          hash = (37 * hash) + QUERY_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
              getQuery());
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static com.morlunk.jumble.protobuf.Mumble.ACL parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.morlunk.jumble.protobuf.Mumble.ACL parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.ACL parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.morlunk.jumble.protobuf.Mumble.ACL parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.ACL parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.morlunk.jumble.protobuf.Mumble.ACL parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.ACL parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.morlunk.jumble.protobuf.Mumble.ACL parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.ACL parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.morlunk.jumble.protobuf.Mumble.ACL parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
  
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(com.morlunk.jumble.protobuf.Mumble.ACL prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }
  
      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code MumbleProto.ACL}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:MumbleProto.ACL)
          com.morlunk.jumble.protobuf.Mumble.ACLOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_ACL_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_ACL_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.morlunk.jumble.protobuf.Mumble.ACL.class, com.morlunk.jumble.protobuf.Mumble.ACL.Builder.class);
        }
  
        // Construct using com.morlunk.jumble.protobuf.Mumble.ACL.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
  
        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
            getGroupsFieldBuilder();
            getAclsFieldBuilder();
          }
        }
        public Builder clear() {
          super.clear();
          channelId_ = 0;
          bitField0_ = (bitField0_ & ~0x00000001);
          inheritAcls_ = true;
          bitField0_ = (bitField0_ & ~0x00000002);
          if (groupsBuilder_ == null) {
            groups_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000004);
          } else {
            groupsBuilder_.clear();
          }
          if (aclsBuilder_ == null) {
            acls_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000008);
          } else {
            aclsBuilder_.clear();
          }
          query_ = false;
          bitField0_ = (bitField0_ & ~0x00000010);
          return this;
        }
  
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_ACL_descriptor;
        }
  
        public com.morlunk.jumble.protobuf.Mumble.ACL getDefaultInstanceForType() {
          return com.morlunk.jumble.protobuf.Mumble.ACL.getDefaultInstance();
        }
  
        public com.morlunk.jumble.protobuf.Mumble.ACL build() {
          com.morlunk.jumble.protobuf.Mumble.ACL result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        public com.morlunk.jumble.protobuf.Mumble.ACL buildPartial() {
          com.morlunk.jumble.protobuf.Mumble.ACL result = new com.morlunk.jumble.protobuf.Mumble.ACL(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.channelId_ = channelId_;
          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
            to_bitField0_ |= 0x00000002;
          }
          result.inheritAcls_ = inheritAcls_;
          if (groupsBuilder_ == null) {
            if (((bitField0_ & 0x00000004) == 0x00000004)) {
              groups_ = java.util.Collections.unmodifiableList(groups_);
              bitField0_ = (bitField0_ & ~0x00000004);
            }
            result.groups_ = groups_;
          } else {
            result.groups_ = groupsBuilder_.build();
          }
          if (aclsBuilder_ == null) {
            if (((bitField0_ & 0x00000008) == 0x00000008)) {
              acls_ = java.util.Collections.unmodifiableList(acls_);
              bitField0_ = (bitField0_ & ~0x00000008);
            }
            result.acls_ = acls_;
          } else {
            result.acls_ = aclsBuilder_.build();
          }
          if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
            to_bitField0_ |= 0x00000004;
          }
          result.query_ = query_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
  
        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.setField(field, value);
        }
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return (Builder) super.clearField(field);
        }
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return (Builder) super.clearOneof(oneof);
        }
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.morlunk.jumble.protobuf.Mumble.ACL) {
            return mergeFrom((com.morlunk.jumble.protobuf.Mumble.ACL)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(com.morlunk.jumble.protobuf.Mumble.ACL other) {
          if (other == com.morlunk.jumble.protobuf.Mumble.ACL.getDefaultInstance()) return this;
          if (other.hasChannelId()) {
            setChannelId(other.getChannelId());
          }
          if (other.hasInheritAcls()) {
            setInheritAcls(other.getInheritAcls());
          }
          if (groupsBuilder_ == null) {
            if (!other.groups_.isEmpty()) {
              if (groups_.isEmpty()) {
                groups_ = other.groups_;
                bitField0_ = (bitField0_ & ~0x00000004);
              } else {
                ensureGroupsIsMutable();
                groups_.addAll(other.groups_);
              }
              onChanged();
            }
          } else {
            if (!other.groups_.isEmpty()) {
              if (groupsBuilder_.isEmpty()) {
                groupsBuilder_.dispose();
                groupsBuilder_ = null;
                groups_ = other.groups_;
                bitField0_ = (bitField0_ & ~0x00000004);
                groupsBuilder_ = 
                  com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                     getGroupsFieldBuilder() : null;
              } else {
                groupsBuilder_.addAllMessages(other.groups_);
              }
            }
          }
          if (aclsBuilder_ == null) {
            if (!other.acls_.isEmpty()) {
              if (acls_.isEmpty()) {
                acls_ = other.acls_;
                bitField0_ = (bitField0_ & ~0x00000008);
              } else {
                ensureAclsIsMutable();
                acls_.addAll(other.acls_);
              }
              onChanged();
            }
          } else {
            if (!other.acls_.isEmpty()) {
              if (aclsBuilder_.isEmpty()) {
                aclsBuilder_.dispose();
                aclsBuilder_ = null;
                acls_ = other.acls_;
                bitField0_ = (bitField0_ & ~0x00000008);
                aclsBuilder_ = 
                  com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                     getAclsFieldBuilder() : null;
              } else {
                aclsBuilder_.addAllMessages(other.acls_);
              }
            }
          }
          if (other.hasQuery()) {
            setQuery(other.getQuery());
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }
  
        public final boolean isInitialized() {
          if (!hasChannelId()) {
            return false;
          }
          for (int i = 0; i < getGroupsCount(); i++) {
            if (!getGroups(i).isInitialized()) {
              return false;
            }
          }
          return true;
        }
  
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.morlunk.jumble.protobuf.Mumble.ACL parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (com.morlunk.jumble.protobuf.Mumble.ACL) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;
  
        private int channelId_ ;
        /**
         * <code>required uint32 channel_id = 1;</code>
         */
        public boolean hasChannelId() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <code>required uint32 channel_id = 1;</code>
         */
        public int getChannelId() {
          return channelId_;
        }
        /**
         * <code>required uint32 channel_id = 1;</code>
         */
        public Builder setChannelId(int value) {
          bitField0_ |= 0x00000001;
          channelId_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>required uint32 channel_id = 1;</code>
         */
        public Builder clearChannelId() {
          bitField0_ = (bitField0_ & ~0x00000001);
          channelId_ = 0;
          onChanged();
          return this;
        }
  
        private boolean inheritAcls_ = true;
        /**
         * <code>optional bool inherit_acls = 2 [default = true];</code>
         */
        public boolean hasInheritAcls() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * <code>optional bool inherit_acls = 2 [default = true];</code>
         */
        public boolean getInheritAcls() {
          return inheritAcls_;
        }
        /**
         * <code>optional bool inherit_acls = 2 [default = true];</code>
         */
        public Builder setInheritAcls(boolean value) {
          bitField0_ |= 0x00000002;
          inheritAcls_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional bool inherit_acls = 2 [default = true];</code>
         */
        public Builder clearInheritAcls() {
          bitField0_ = (bitField0_ & ~0x00000002);
          inheritAcls_ = true;
          onChanged();
          return this;
        }
  
        private java.util.List<com.morlunk.jumble.protobuf.Mumble.ACL.ChanGroup> groups_ =
          java.util.Collections.emptyList();
        private void ensureGroupsIsMutable() {
          if (!((bitField0_ & 0x00000004) == 0x00000004)) {
            groups_ = new java.util.ArrayList<com.morlunk.jumble.protobuf.Mumble.ACL.ChanGroup>(groups_);
            bitField0_ |= 0x00000004;
           }
        }
  
        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.morlunk.jumble.protobuf.Mumble.ACL.ChanGroup, com.morlunk.jumble.protobuf.Mumble.ACL.ChanGroup.Builder, com.morlunk.jumble.protobuf.Mumble.ACL.ChanGroupOrBuilder> groupsBuilder_;
  
        /**
         * <code>repeated .MumbleProto.ACL.ChanGroup groups = 3;</code>
         */
        public java.util.List<com.morlunk.jumble.protobuf.Mumble.ACL.ChanGroup> getGroupsList() {
          if (groupsBuilder_ == null) {
            return java.util.Collections.unmodifiableList(groups_);
          } else {
            return groupsBuilder_.getMessageList();
          }
        }
        /**
         * <code>repeated .MumbleProto.ACL.ChanGroup groups = 3;</code>
         */
        public int getGroupsCount() {
          if (groupsBuilder_ == null) {
            return groups_.size();
          } else {
            return groupsBuilder_.getCount();
          }
        }
        /**
         * <code>repeated .MumbleProto.ACL.ChanGroup groups = 3;</code>
         */
        public com.morlunk.jumble.protobuf.Mumble.ACL.ChanGroup getGroups(int index) {
          if (groupsBuilder_ == null) {
            return groups_.get(index);
          } else {
            return groupsBuilder_.getMessage(index);
          }
        }
        /**
         * <code>repeated .MumbleProto.ACL.ChanGroup groups = 3;</code>
         */
        public Builder setGroups(
            int index, com.morlunk.jumble.protobuf.Mumble.ACL.ChanGroup value) {
          if (groupsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureGroupsIsMutable();
            groups_.set(index, value);
            onChanged();
          } else {
            groupsBuilder_.setMessage(index, value);
          }
          return this;
        }
        /**
         * <code>repeated .MumbleProto.ACL.ChanGroup groups = 3;</code>
         */
        public Builder setGroups(
            int index, com.morlunk.jumble.protobuf.Mumble.ACL.ChanGroup.Builder builderForValue) {
          if (groupsBuilder_ == null) {
            ensureGroupsIsMutable();
            groups_.set(index, builderForValue.build());
            onChanged();
          } else {
            groupsBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .MumbleProto.ACL.ChanGroup groups = 3;</code>
         */
        public Builder addGroups(com.morlunk.jumble.protobuf.Mumble.ACL.ChanGroup value) {
          if (groupsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureGroupsIsMutable();
            groups_.add(value);
            onChanged();
          } else {
            groupsBuilder_.addMessage(value);
          }
          return this;
        }
        /**
         * <code>repeated .MumbleProto.ACL.ChanGroup groups = 3;</code>
         */
        public Builder addGroups(
            int index, com.morlunk.jumble.protobuf.Mumble.ACL.ChanGroup value) {
          if (groupsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureGroupsIsMutable();
            groups_.add(index, value);
            onChanged();
          } else {
            groupsBuilder_.addMessage(index, value);
          }
          return this;
        }
        /**
         * <code>repeated .MumbleProto.ACL.ChanGroup groups = 3;</code>
         */
        public Builder addGroups(
            com.morlunk.jumble.protobuf.Mumble.ACL.ChanGroup.Builder builderForValue) {
          if (groupsBuilder_ == null) {
            ensureGroupsIsMutable();
            groups_.add(builderForValue.build());
            onChanged();
          } else {
            groupsBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .MumbleProto.ACL.ChanGroup groups = 3;</code>
         */
        public Builder addGroups(
            int index, com.morlunk.jumble.protobuf.Mumble.ACL.ChanGroup.Builder builderForValue) {
          if (groupsBuilder_ == null) {
            ensureGroupsIsMutable();
            groups_.add(index, builderForValue.build());
            onChanged();
          } else {
            groupsBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .MumbleProto.ACL.ChanGroup groups = 3;</code>
         */
        public Builder addAllGroups(
            java.lang.Iterable<? extends com.morlunk.jumble.protobuf.Mumble.ACL.ChanGroup> values) {
          if (groupsBuilder_ == null) {
            ensureGroupsIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, groups_);
            onChanged();
          } else {
            groupsBuilder_.addAllMessages(values);
          }
          return this;
        }
        /**
         * <code>repeated .MumbleProto.ACL.ChanGroup groups = 3;</code>
         */
        public Builder clearGroups() {
          if (groupsBuilder_ == null) {
            groups_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000004);
            onChanged();
          } else {
            groupsBuilder_.clear();
          }
          return this;
        }
        /**
         * <code>repeated .MumbleProto.ACL.ChanGroup groups = 3;</code>
         */
        public Builder removeGroups(int index) {
          if (groupsBuilder_ == null) {
            ensureGroupsIsMutable();
            groups_.remove(index);
            onChanged();
          } else {
            groupsBuilder_.remove(index);
          }
          return this;
        }
        /**
         * <code>repeated .MumbleProto.ACL.ChanGroup groups = 3;</code>
         */
        public com.morlunk.jumble.protobuf.Mumble.ACL.ChanGroup.Builder getGroupsBuilder(
            int index) {
          return getGroupsFieldBuilder().getBuilder(index);
        }
        /**
         * <code>repeated .MumbleProto.ACL.ChanGroup groups = 3;</code>
         */
        public com.morlunk.jumble.protobuf.Mumble.ACL.ChanGroupOrBuilder getGroupsOrBuilder(
            int index) {
          if (groupsBuilder_ == null) {
            return groups_.get(index);  } else {
            return groupsBuilder_.getMessageOrBuilder(index);
          }
        }
        /**
         * <code>repeated .MumbleProto.ACL.ChanGroup groups = 3;</code>
         */
        public java.util.List<? extends com.morlunk.jumble.protobuf.Mumble.ACL.ChanGroupOrBuilder> 
             getGroupsOrBuilderList() {
          if (groupsBuilder_ != null) {
            return groupsBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(groups_);
          }
        }
        /**
         * <code>repeated .MumbleProto.ACL.ChanGroup groups = 3;</code>
         */
        public com.morlunk.jumble.protobuf.Mumble.ACL.ChanGroup.Builder addGroupsBuilder() {
          return getGroupsFieldBuilder().addBuilder(
              com.morlunk.jumble.protobuf.Mumble.ACL.ChanGroup.getDefaultInstance());
        }
        /**
         * <code>repeated .MumbleProto.ACL.ChanGroup groups = 3;</code>
         */
        public com.morlunk.jumble.protobuf.Mumble.ACL.ChanGroup.Builder addGroupsBuilder(
            int index) {
          return getGroupsFieldBuilder().addBuilder(
              index, com.morlunk.jumble.protobuf.Mumble.ACL.ChanGroup.getDefaultInstance());
        }
        /**
         * <code>repeated .MumbleProto.ACL.ChanGroup groups = 3;</code>
         */
        public java.util.List<com.morlunk.jumble.protobuf.Mumble.ACL.ChanGroup.Builder> 
             getGroupsBuilderList() {
          return getGroupsFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.morlunk.jumble.protobuf.Mumble.ACL.ChanGroup, com.morlunk.jumble.protobuf.Mumble.ACL.ChanGroup.Builder, com.morlunk.jumble.protobuf.Mumble.ACL.ChanGroupOrBuilder> 
            getGroupsFieldBuilder() {
          if (groupsBuilder_ == null) {
            groupsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
                com.morlunk.jumble.protobuf.Mumble.ACL.ChanGroup, com.morlunk.jumble.protobuf.Mumble.ACL.ChanGroup.Builder, com.morlunk.jumble.protobuf.Mumble.ACL.ChanGroupOrBuilder>(
                    groups_,
                    ((bitField0_ & 0x00000004) == 0x00000004),
                    getParentForChildren(),
                    isClean());
            groups_ = null;
          }
          return groupsBuilder_;
        }
  
        private java.util.List<com.morlunk.jumble.protobuf.Mumble.ACL.ChanACL> acls_ =
          java.util.Collections.emptyList();
        private void ensureAclsIsMutable() {
          if (!((bitField0_ & 0x00000008) == 0x00000008)) {
            acls_ = new java.util.ArrayList<com.morlunk.jumble.protobuf.Mumble.ACL.ChanACL>(acls_);
            bitField0_ |= 0x00000008;
           }
        }
  
        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.morlunk.jumble.protobuf.Mumble.ACL.ChanACL, com.morlunk.jumble.protobuf.Mumble.ACL.ChanACL.Builder, com.morlunk.jumble.protobuf.Mumble.ACL.ChanACLOrBuilder> aclsBuilder_;
  
        /**
         * <code>repeated .MumbleProto.ACL.ChanACL acls = 4;</code>
         */
        public java.util.List<com.morlunk.jumble.protobuf.Mumble.ACL.ChanACL> getAclsList() {
          if (aclsBuilder_ == null) {
            return java.util.Collections.unmodifiableList(acls_);
          } else {
            return aclsBuilder_.getMessageList();
          }
        }
        /**
         * <code>repeated .MumbleProto.ACL.ChanACL acls = 4;</code>
         */
        public int getAclsCount() {
          if (aclsBuilder_ == null) {
            return acls_.size();
          } else {
            return aclsBuilder_.getCount();
          }
        }
        /**
         * <code>repeated .MumbleProto.ACL.ChanACL acls = 4;</code>
         */
        public com.morlunk.jumble.protobuf.Mumble.ACL.ChanACL getAcls(int index) {
          if (aclsBuilder_ == null) {
            return acls_.get(index);
          } else {
            return aclsBuilder_.getMessage(index);
          }
        }
        /**
         * <code>repeated .MumbleProto.ACL.ChanACL acls = 4;</code>
         */
        public Builder setAcls(
            int index, com.morlunk.jumble.protobuf.Mumble.ACL.ChanACL value) {
          if (aclsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureAclsIsMutable();
            acls_.set(index, value);
            onChanged();
          } else {
            aclsBuilder_.setMessage(index, value);
          }
          return this;
        }
        /**
         * <code>repeated .MumbleProto.ACL.ChanACL acls = 4;</code>
         */
        public Builder setAcls(
            int index, com.morlunk.jumble.protobuf.Mumble.ACL.ChanACL.Builder builderForValue) {
          if (aclsBuilder_ == null) {
            ensureAclsIsMutable();
            acls_.set(index, builderForValue.build());
            onChanged();
          } else {
            aclsBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .MumbleProto.ACL.ChanACL acls = 4;</code>
         */
        public Builder addAcls(com.morlunk.jumble.protobuf.Mumble.ACL.ChanACL value) {
          if (aclsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureAclsIsMutable();
            acls_.add(value);
            onChanged();
          } else {
            aclsBuilder_.addMessage(value);
          }
          return this;
        }
        /**
         * <code>repeated .MumbleProto.ACL.ChanACL acls = 4;</code>
         */
        public Builder addAcls(
            int index, com.morlunk.jumble.protobuf.Mumble.ACL.ChanACL value) {
          if (aclsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureAclsIsMutable();
            acls_.add(index, value);
            onChanged();
          } else {
            aclsBuilder_.addMessage(index, value);
          }
          return this;
        }
        /**
         * <code>repeated .MumbleProto.ACL.ChanACL acls = 4;</code>
         */
        public Builder addAcls(
            com.morlunk.jumble.protobuf.Mumble.ACL.ChanACL.Builder builderForValue) {
          if (aclsBuilder_ == null) {
            ensureAclsIsMutable();
            acls_.add(builderForValue.build());
            onChanged();
          } else {
            aclsBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .MumbleProto.ACL.ChanACL acls = 4;</code>
         */
        public Builder addAcls(
            int index, com.morlunk.jumble.protobuf.Mumble.ACL.ChanACL.Builder builderForValue) {
          if (aclsBuilder_ == null) {
            ensureAclsIsMutable();
            acls_.add(index, builderForValue.build());
            onChanged();
          } else {
            aclsBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .MumbleProto.ACL.ChanACL acls = 4;</code>
         */
        public Builder addAllAcls(
            java.lang.Iterable<? extends com.morlunk.jumble.protobuf.Mumble.ACL.ChanACL> values) {
          if (aclsBuilder_ == null) {
            ensureAclsIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, acls_);
            onChanged();
          } else {
            aclsBuilder_.addAllMessages(values);
          }
          return this;
        }
        /**
         * <code>repeated .MumbleProto.ACL.ChanACL acls = 4;</code>
         */
        public Builder clearAcls() {
          if (aclsBuilder_ == null) {
            acls_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000008);
            onChanged();
          } else {
            aclsBuilder_.clear();
          }
          return this;
        }
        /**
         * <code>repeated .MumbleProto.ACL.ChanACL acls = 4;</code>
         */
        public Builder removeAcls(int index) {
          if (aclsBuilder_ == null) {
            ensureAclsIsMutable();
            acls_.remove(index);
            onChanged();
          } else {
            aclsBuilder_.remove(index);
          }
          return this;
        }
        /**
         * <code>repeated .MumbleProto.ACL.ChanACL acls = 4;</code>
         */
        public com.morlunk.jumble.protobuf.Mumble.ACL.ChanACL.Builder getAclsBuilder(
            int index) {
          return getAclsFieldBuilder().getBuilder(index);
        }
        /**
         * <code>repeated .MumbleProto.ACL.ChanACL acls = 4;</code>
         */
        public com.morlunk.jumble.protobuf.Mumble.ACL.ChanACLOrBuilder getAclsOrBuilder(
            int index) {
          if (aclsBuilder_ == null) {
            return acls_.get(index);  } else {
            return aclsBuilder_.getMessageOrBuilder(index);
          }
        }
        /**
         * <code>repeated .MumbleProto.ACL.ChanACL acls = 4;</code>
         */
        public java.util.List<? extends com.morlunk.jumble.protobuf.Mumble.ACL.ChanACLOrBuilder> 
             getAclsOrBuilderList() {
          if (aclsBuilder_ != null) {
            return aclsBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(acls_);
          }
        }
        /**
         * <code>repeated .MumbleProto.ACL.ChanACL acls = 4;</code>
         */
        public com.morlunk.jumble.protobuf.Mumble.ACL.ChanACL.Builder addAclsBuilder() {
          return getAclsFieldBuilder().addBuilder(
              com.morlunk.jumble.protobuf.Mumble.ACL.ChanACL.getDefaultInstance());
        }
        /**
         * <code>repeated .MumbleProto.ACL.ChanACL acls = 4;</code>
         */
        public com.morlunk.jumble.protobuf.Mumble.ACL.ChanACL.Builder addAclsBuilder(
            int index) {
          return getAclsFieldBuilder().addBuilder(
              index, com.morlunk.jumble.protobuf.Mumble.ACL.ChanACL.getDefaultInstance());
        }
        /**
         * <code>repeated .MumbleProto.ACL.ChanACL acls = 4;</code>
         */
        public java.util.List<com.morlunk.jumble.protobuf.Mumble.ACL.ChanACL.Builder> 
             getAclsBuilderList() {
          return getAclsFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.morlunk.jumble.protobuf.Mumble.ACL.ChanACL, com.morlunk.jumble.protobuf.Mumble.ACL.ChanACL.Builder, com.morlunk.jumble.protobuf.Mumble.ACL.ChanACLOrBuilder> 
            getAclsFieldBuilder() {
          if (aclsBuilder_ == null) {
            aclsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
                com.morlunk.jumble.protobuf.Mumble.ACL.ChanACL, com.morlunk.jumble.protobuf.Mumble.ACL.ChanACL.Builder, com.morlunk.jumble.protobuf.Mumble.ACL.ChanACLOrBuilder>(
                    acls_,
                    ((bitField0_ & 0x00000008) == 0x00000008),
                    getParentForChildren(),
                    isClean());
            acls_ = null;
          }
          return aclsBuilder_;
        }
  
        private boolean query_ ;
        /**
         * <code>optional bool query = 5 [default = false];</code>
         */
        public boolean hasQuery() {
          return ((bitField0_ & 0x00000010) == 0x00000010);
        }
        /**
         * <code>optional bool query = 5 [default = false];</code>
         */
        public boolean getQuery() {
          return query_;
        }
        /**
         * <code>optional bool query = 5 [default = false];</code>
         */
        public Builder setQuery(boolean value) {
          bitField0_ |= 0x00000010;
          query_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional bool query = 5 [default = false];</code>
         */
        public Builder clearQuery() {
          bitField0_ = (bitField0_ & ~0x00000010);
          query_ = false;
          onChanged();
          return this;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }
  
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:MumbleProto.ACL)
      }
  
      // @@protoc_insertion_point(class_scope:MumbleProto.ACL)
      private static final com.morlunk.jumble.protobuf.Mumble.ACL DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.morlunk.jumble.protobuf.Mumble.ACL();
      }
  
      public static com.morlunk.jumble.protobuf.Mumble.ACL getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      @java.lang.Deprecated public static final com.google.protobuf.Parser<ACL>
          PARSER = new com.google.protobuf.AbstractParser<ACL>() {
        public ACL parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return new ACL(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<ACL> parser() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.google.protobuf.Parser<ACL> getParserForType() {
        return PARSER;
      }
  
      public com.morlunk.jumble.protobuf.Mumble.ACL getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface QueryUsersOrBuilder extends
        // @@protoc_insertion_point(interface_extends:MumbleProto.QueryUsers)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <code>repeated uint32 ids = 1;</code>
       */
      java.util.List<java.lang.Integer> getIdsList();
      /**
       * <code>repeated uint32 ids = 1;</code>
       */
      int getIdsCount();
      /**
       * <code>repeated uint32 ids = 1;</code>
       */
      int getIds(int index);
  
      /**
       * <code>repeated string names = 2;</code>
       */
      java.util.List<java.lang.String>
          getNamesList();
      /**
       * <code>repeated string names = 2;</code>
       */
      int getNamesCount();
      /**
       * <code>repeated string names = 2;</code>
       */
      java.lang.String getNames(int index);
      /**
       * <code>repeated string names = 2;</code>
       */
      com.google.protobuf.ByteString
          getNamesBytes(int index);
    }
    /**
     * Protobuf type {@code MumbleProto.QueryUsers}
     */
    public  static final class QueryUsers extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:MumbleProto.QueryUsers)
        QueryUsersOrBuilder {
      // Use QueryUsers.newBuilder() to construct.
      private QueryUsers(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private QueryUsers() {
        ids_ = java.util.Collections.emptyList();
        names_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      }
  
      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private QueryUsers(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        int mutable_bitField0_ = 0;
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder();
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              default: {
                if (!parseUnknownField(input, unknownFields,
                                       extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 8: {
                if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                  ids_ = new java.util.ArrayList<java.lang.Integer>();
                  mutable_bitField0_ |= 0x00000001;
                }
                ids_.add(input.readUInt32());
                break;
              }
              case 10: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                if (!((mutable_bitField0_ & 0x00000001) == 0x00000001) && input.getBytesUntilLimit() > 0) {
                  ids_ = new java.util.ArrayList<java.lang.Integer>();
                  mutable_bitField0_ |= 0x00000001;
                }
                while (input.getBytesUntilLimit() > 0) {
                  ids_.add(input.readUInt32());
                }
                input.popLimit(limit);
                break;
              }
              case 18: {
                com.google.protobuf.ByteString bs = input.readBytes();
                if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                  names_ = new com.google.protobuf.LazyStringArrayList();
                  mutable_bitField0_ |= 0x00000002;
                }
                names_.add(bs);
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
            ids_ = java.util.Collections.unmodifiableList(ids_);
          }
          if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
            names_ = names_.getUnmodifiableView();
          }
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_QueryUsers_descriptor;
      }
  
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_QueryUsers_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.morlunk.jumble.protobuf.Mumble.QueryUsers.class, com.morlunk.jumble.protobuf.Mumble.QueryUsers.Builder.class);
      }
  
      public static final int IDS_FIELD_NUMBER = 1;
      private java.util.List<java.lang.Integer> ids_;
      /**
       * <code>repeated uint32 ids = 1;</code>
       */
      public java.util.List<java.lang.Integer>
          getIdsList() {
        return ids_;
      }
      /**
       * <code>repeated uint32 ids = 1;</code>
       */
      public int getIdsCount() {
        return ids_.size();
      }
      /**
       * <code>repeated uint32 ids = 1;</code>
       */
      public int getIds(int index) {
        return ids_.get(index);
      }
  
      public static final int NAMES_FIELD_NUMBER = 2;
      private com.google.protobuf.LazyStringList names_;
      /**
       * <code>repeated string names = 2;</code>
       */
      public com.google.protobuf.ProtocolStringList
          getNamesList() {
        return names_;
      }
      /**
       * <code>repeated string names = 2;</code>
       */
      public int getNamesCount() {
        return names_.size();
      }
      /**
       * <code>repeated string names = 2;</code>
       */
      public java.lang.String getNames(int index) {
        return names_.get(index);
      }
      /**
       * <code>repeated string names = 2;</code>
       */
      public com.google.protobuf.ByteString
          getNamesBytes(int index) {
        return names_.getByteString(index);
      }
  
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        memoizedIsInitialized = 1;
        return true;
      }
  
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        for (int i = 0; i < ids_.size(); i++) {
          output.writeUInt32(1, ids_.get(i));
        }
        for (int i = 0; i < names_.size(); i++) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 2, names_.getRaw(i));
        }
        unknownFields.writeTo(output);
      }
  
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        {
          int dataSize = 0;
          for (int i = 0; i < ids_.size(); i++) {
            dataSize += com.google.protobuf.CodedOutputStream
              .computeUInt32SizeNoTag(ids_.get(i));
          }
          size += dataSize;
          size += 1 * getIdsList().size();
        }
        {
          int dataSize = 0;
          for (int i = 0; i < names_.size(); i++) {
            dataSize += computeStringSizeNoTag(names_.getRaw(i));
          }
          size += dataSize;
          size += 1 * getNamesList().size();
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }
  
      private static final long serialVersionUID = 0L;
      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.morlunk.jumble.protobuf.Mumble.QueryUsers)) {
          return super.equals(obj);
        }
        com.morlunk.jumble.protobuf.Mumble.QueryUsers other = (com.morlunk.jumble.protobuf.Mumble.QueryUsers) obj;
  
        boolean result = true;
        result = result && getIdsList()
            .equals(other.getIdsList());
        result = result && getNamesList()
            .equals(other.getNamesList());
        result = result && unknownFields.equals(other.unknownFields);
        return result;
      }
  
      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptorForType().hashCode();
        if (getIdsCount() > 0) {
          hash = (37 * hash) + IDS_FIELD_NUMBER;
          hash = (53 * hash) + getIdsList().hashCode();
        }
        if (getNamesCount() > 0) {
          hash = (37 * hash) + NAMES_FIELD_NUMBER;
          hash = (53 * hash) + getNamesList().hashCode();
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static com.morlunk.jumble.protobuf.Mumble.QueryUsers parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.morlunk.jumble.protobuf.Mumble.QueryUsers parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.QueryUsers parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.morlunk.jumble.protobuf.Mumble.QueryUsers parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.QueryUsers parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.morlunk.jumble.protobuf.Mumble.QueryUsers parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.QueryUsers parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.morlunk.jumble.protobuf.Mumble.QueryUsers parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.QueryUsers parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.morlunk.jumble.protobuf.Mumble.QueryUsers parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
  
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(com.morlunk.jumble.protobuf.Mumble.QueryUsers prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }
  
      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code MumbleProto.QueryUsers}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:MumbleProto.QueryUsers)
          com.morlunk.jumble.protobuf.Mumble.QueryUsersOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_QueryUsers_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_QueryUsers_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.morlunk.jumble.protobuf.Mumble.QueryUsers.class, com.morlunk.jumble.protobuf.Mumble.QueryUsers.Builder.class);
        }
  
        // Construct using com.morlunk.jumble.protobuf.Mumble.QueryUsers.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
  
        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
          }
        }
        public Builder clear() {
          super.clear();
          ids_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          names_ = com.google.protobuf.LazyStringArrayList.EMPTY;
          bitField0_ = (bitField0_ & ~0x00000002);
          return this;
        }
  
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_QueryUsers_descriptor;
        }
  
        public com.morlunk.jumble.protobuf.Mumble.QueryUsers getDefaultInstanceForType() {
          return com.morlunk.jumble.protobuf.Mumble.QueryUsers.getDefaultInstance();
        }
  
        public com.morlunk.jumble.protobuf.Mumble.QueryUsers build() {
          com.morlunk.jumble.protobuf.Mumble.QueryUsers result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        public com.morlunk.jumble.protobuf.Mumble.QueryUsers buildPartial() {
          com.morlunk.jumble.protobuf.Mumble.QueryUsers result = new com.morlunk.jumble.protobuf.Mumble.QueryUsers(this);
          int from_bitField0_ = bitField0_;
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            ids_ = java.util.Collections.unmodifiableList(ids_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.ids_ = ids_;
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            names_ = names_.getUnmodifiableView();
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.names_ = names_;
          onBuilt();
          return result;
        }
  
        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.setField(field, value);
        }
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return (Builder) super.clearField(field);
        }
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return (Builder) super.clearOneof(oneof);
        }
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.morlunk.jumble.protobuf.Mumble.QueryUsers) {
            return mergeFrom((com.morlunk.jumble.protobuf.Mumble.QueryUsers)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(com.morlunk.jumble.protobuf.Mumble.QueryUsers other) {
          if (other == com.morlunk.jumble.protobuf.Mumble.QueryUsers.getDefaultInstance()) return this;
          if (!other.ids_.isEmpty()) {
            if (ids_.isEmpty()) {
              ids_ = other.ids_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureIdsIsMutable();
              ids_.addAll(other.ids_);
            }
            onChanged();
          }
          if (!other.names_.isEmpty()) {
            if (names_.isEmpty()) {
              names_ = other.names_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureNamesIsMutable();
              names_.addAll(other.names_);
            }
            onChanged();
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }
  
        public final boolean isInitialized() {
          return true;
        }
  
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.morlunk.jumble.protobuf.Mumble.QueryUsers parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (com.morlunk.jumble.protobuf.Mumble.QueryUsers) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;
  
        private java.util.List<java.lang.Integer> ids_ = java.util.Collections.emptyList();
        private void ensureIdsIsMutable() {
          if (!((bitField0_ & 0x00000001) == 0x00000001)) {
            ids_ = new java.util.ArrayList<java.lang.Integer>(ids_);
            bitField0_ |= 0x00000001;
           }
        }
        /**
         * <code>repeated uint32 ids = 1;</code>
         */
        public java.util.List<java.lang.Integer>
            getIdsList() {
          return java.util.Collections.unmodifiableList(ids_);
        }
        /**
         * <code>repeated uint32 ids = 1;</code>
         */
        public int getIdsCount() {
          return ids_.size();
        }
        /**
         * <code>repeated uint32 ids = 1;</code>
         */
        public int getIds(int index) {
          return ids_.get(index);
        }
        /**
         * <code>repeated uint32 ids = 1;</code>
         */
        public Builder setIds(
            int index, int value) {
          ensureIdsIsMutable();
          ids_.set(index, value);
          onChanged();
          return this;
        }
        /**
         * <code>repeated uint32 ids = 1;</code>
         */
        public Builder addIds(int value) {
          ensureIdsIsMutable();
          ids_.add(value);
          onChanged();
          return this;
        }
        /**
         * <code>repeated uint32 ids = 1;</code>
         */
        public Builder addAllIds(
            java.lang.Iterable<? extends java.lang.Integer> values) {
          ensureIdsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, ids_);
          onChanged();
          return this;
        }
        /**
         * <code>repeated uint32 ids = 1;</code>
         */
        public Builder clearIds() {
          ids_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
          return this;
        }
  
        private com.google.protobuf.LazyStringList names_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        private void ensureNamesIsMutable() {
          if (!((bitField0_ & 0x00000002) == 0x00000002)) {
            names_ = new com.google.protobuf.LazyStringArrayList(names_);
            bitField0_ |= 0x00000002;
           }
        }
        /**
         * <code>repeated string names = 2;</code>
         */
        public com.google.protobuf.ProtocolStringList
            getNamesList() {
          return names_.getUnmodifiableView();
        }
        /**
         * <code>repeated string names = 2;</code>
         */
        public int getNamesCount() {
          return names_.size();
        }
        /**
         * <code>repeated string names = 2;</code>
         */
        public java.lang.String getNames(int index) {
          return names_.get(index);
        }
        /**
         * <code>repeated string names = 2;</code>
         */
        public com.google.protobuf.ByteString
            getNamesBytes(int index) {
          return names_.getByteString(index);
        }
        /**
         * <code>repeated string names = 2;</code>
         */
        public Builder setNames(
            int index, java.lang.String value) {
          if (value == null) {
      throw new NullPointerException();
    }
    ensureNamesIsMutable();
          names_.set(index, value);
          onChanged();
          return this;
        }
        /**
         * <code>repeated string names = 2;</code>
         */
        public Builder addNames(
            java.lang.String value) {
          if (value == null) {
      throw new NullPointerException();
    }
    ensureNamesIsMutable();
          names_.add(value);
          onChanged();
          return this;
        }
        /**
         * <code>repeated string names = 2;</code>
         */
        public Builder addAllNames(
            java.lang.Iterable<java.lang.String> values) {
          ensureNamesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, names_);
          onChanged();
          return this;
        }
        /**
         * <code>repeated string names = 2;</code>
         */
        public Builder clearNames() {
          names_ = com.google.protobuf.LazyStringArrayList.EMPTY;
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
          return this;
        }
        /**
         * <code>repeated string names = 2;</code>
         */
        public Builder addNamesBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
      throw new NullPointerException();
    }
    ensureNamesIsMutable();
          names_.add(value);
          onChanged();
          return this;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }
  
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:MumbleProto.QueryUsers)
      }
  
      // @@protoc_insertion_point(class_scope:MumbleProto.QueryUsers)
      private static final com.morlunk.jumble.protobuf.Mumble.QueryUsers DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.morlunk.jumble.protobuf.Mumble.QueryUsers();
      }
  
      public static com.morlunk.jumble.protobuf.Mumble.QueryUsers getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      @java.lang.Deprecated public static final com.google.protobuf.Parser<QueryUsers>
          PARSER = new com.google.protobuf.AbstractParser<QueryUsers>() {
        public QueryUsers parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return new QueryUsers(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<QueryUsers> parser() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.google.protobuf.Parser<QueryUsers> getParserForType() {
        return PARSER;
      }
  
      public com.morlunk.jumble.protobuf.Mumble.QueryUsers getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface CryptSetupOrBuilder extends
        // @@protoc_insertion_point(interface_extends:MumbleProto.CryptSetup)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <code>optional bytes key = 1;</code>
       */
      boolean hasKey();
      /**
       * <code>optional bytes key = 1;</code>
       */
      com.google.protobuf.ByteString getKey();
  
      /**
       * <code>optional bytes client_nonce = 2;</code>
       */
      boolean hasClientNonce();
      /**
       * <code>optional bytes client_nonce = 2;</code>
       */
      com.google.protobuf.ByteString getClientNonce();
  
      /**
       * <code>optional bytes server_nonce = 3;</code>
       */
      boolean hasServerNonce();
      /**
       * <code>optional bytes server_nonce = 3;</code>
       */
      com.google.protobuf.ByteString getServerNonce();
    }
    /**
     * Protobuf type {@code MumbleProto.CryptSetup}
     */
    public  static final class CryptSetup extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:MumbleProto.CryptSetup)
        CryptSetupOrBuilder {
      // Use CryptSetup.newBuilder() to construct.
      private CryptSetup(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private CryptSetup() {
        key_ = com.google.protobuf.ByteString.EMPTY;
        clientNonce_ = com.google.protobuf.ByteString.EMPTY;
        serverNonce_ = com.google.protobuf.ByteString.EMPTY;
      }
  
      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private CryptSetup(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        int mutable_bitField0_ = 0;
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder();
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              default: {
                if (!parseUnknownField(input, unknownFields,
                                       extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 10: {
                bitField0_ |= 0x00000001;
                key_ = input.readBytes();
                break;
              }
              case 18: {
                bitField0_ |= 0x00000002;
                clientNonce_ = input.readBytes();
                break;
              }
              case 26: {
                bitField0_ |= 0x00000004;
                serverNonce_ = input.readBytes();
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_CryptSetup_descriptor;
      }
  
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_CryptSetup_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.morlunk.jumble.protobuf.Mumble.CryptSetup.class, com.morlunk.jumble.protobuf.Mumble.CryptSetup.Builder.class);
      }
  
      private int bitField0_;
      public static final int KEY_FIELD_NUMBER = 1;
      private com.google.protobuf.ByteString key_;
      /**
       * <code>optional bytes key = 1;</code>
       */
      public boolean hasKey() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>optional bytes key = 1;</code>
       */
      public com.google.protobuf.ByteString getKey() {
        return key_;
      }
  
      public static final int CLIENT_NONCE_FIELD_NUMBER = 2;
      private com.google.protobuf.ByteString clientNonce_;
      /**
       * <code>optional bytes client_nonce = 2;</code>
       */
      public boolean hasClientNonce() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional bytes client_nonce = 2;</code>
       */
      public com.google.protobuf.ByteString getClientNonce() {
        return clientNonce_;
      }
  
      public static final int SERVER_NONCE_FIELD_NUMBER = 3;
      private com.google.protobuf.ByteString serverNonce_;
      /**
       * <code>optional bytes server_nonce = 3;</code>
       */
      public boolean hasServerNonce() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>optional bytes server_nonce = 3;</code>
       */
      public com.google.protobuf.ByteString getServerNonce() {
        return serverNonce_;
      }
  
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        memoizedIsInitialized = 1;
        return true;
      }
  
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeBytes(1, key_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          output.writeBytes(2, clientNonce_);
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          output.writeBytes(3, serverNonce_);
        }
        unknownFields.writeTo(output);
      }
  
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(1, key_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(2, clientNonce_);
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(3, serverNonce_);
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }
  
      private static final long serialVersionUID = 0L;
      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.morlunk.jumble.protobuf.Mumble.CryptSetup)) {
          return super.equals(obj);
        }
        com.morlunk.jumble.protobuf.Mumble.CryptSetup other = (com.morlunk.jumble.protobuf.Mumble.CryptSetup) obj;
  
        boolean result = true;
        result = result && (hasKey() == other.hasKey());
        if (hasKey()) {
          result = result && getKey()
              .equals(other.getKey());
        }
        result = result && (hasClientNonce() == other.hasClientNonce());
        if (hasClientNonce()) {
          result = result && getClientNonce()
              .equals(other.getClientNonce());
        }
        result = result && (hasServerNonce() == other.hasServerNonce());
        if (hasServerNonce()) {
          result = result && getServerNonce()
              .equals(other.getServerNonce());
        }
        result = result && unknownFields.equals(other.unknownFields);
        return result;
      }
  
      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptorForType().hashCode();
        if (hasKey()) {
          hash = (37 * hash) + KEY_FIELD_NUMBER;
          hash = (53 * hash) + getKey().hashCode();
        }
        if (hasClientNonce()) {
          hash = (37 * hash) + CLIENT_NONCE_FIELD_NUMBER;
          hash = (53 * hash) + getClientNonce().hashCode();
        }
        if (hasServerNonce()) {
          hash = (37 * hash) + SERVER_NONCE_FIELD_NUMBER;
          hash = (53 * hash) + getServerNonce().hashCode();
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static com.morlunk.jumble.protobuf.Mumble.CryptSetup parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.morlunk.jumble.protobuf.Mumble.CryptSetup parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.CryptSetup parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.morlunk.jumble.protobuf.Mumble.CryptSetup parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.CryptSetup parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.morlunk.jumble.protobuf.Mumble.CryptSetup parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.CryptSetup parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.morlunk.jumble.protobuf.Mumble.CryptSetup parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.CryptSetup parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.morlunk.jumble.protobuf.Mumble.CryptSetup parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
  
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(com.morlunk.jumble.protobuf.Mumble.CryptSetup prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }
  
      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code MumbleProto.CryptSetup}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:MumbleProto.CryptSetup)
          com.morlunk.jumble.protobuf.Mumble.CryptSetupOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_CryptSetup_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_CryptSetup_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.morlunk.jumble.protobuf.Mumble.CryptSetup.class, com.morlunk.jumble.protobuf.Mumble.CryptSetup.Builder.class);
        }
  
        // Construct using com.morlunk.jumble.protobuf.Mumble.CryptSetup.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
  
        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
          }
        }
        public Builder clear() {
          super.clear();
          key_ = com.google.protobuf.ByteString.EMPTY;
          bitField0_ = (bitField0_ & ~0x00000001);
          clientNonce_ = com.google.protobuf.ByteString.EMPTY;
          bitField0_ = (bitField0_ & ~0x00000002);
          serverNonce_ = com.google.protobuf.ByteString.EMPTY;
          bitField0_ = (bitField0_ & ~0x00000004);
          return this;
        }
  
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_CryptSetup_descriptor;
        }
  
        public com.morlunk.jumble.protobuf.Mumble.CryptSetup getDefaultInstanceForType() {
          return com.morlunk.jumble.protobuf.Mumble.CryptSetup.getDefaultInstance();
        }
  
        public com.morlunk.jumble.protobuf.Mumble.CryptSetup build() {
          com.morlunk.jumble.protobuf.Mumble.CryptSetup result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        public com.morlunk.jumble.protobuf.Mumble.CryptSetup buildPartial() {
          com.morlunk.jumble.protobuf.Mumble.CryptSetup result = new com.morlunk.jumble.protobuf.Mumble.CryptSetup(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.key_ = key_;
          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
            to_bitField0_ |= 0x00000002;
          }
          result.clientNonce_ = clientNonce_;
          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
            to_bitField0_ |= 0x00000004;
          }
          result.serverNonce_ = serverNonce_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
  
        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.setField(field, value);
        }
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return (Builder) super.clearField(field);
        }
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return (Builder) super.clearOneof(oneof);
        }
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.morlunk.jumble.protobuf.Mumble.CryptSetup) {
            return mergeFrom((com.morlunk.jumble.protobuf.Mumble.CryptSetup)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(com.morlunk.jumble.protobuf.Mumble.CryptSetup other) {
          if (other == com.morlunk.jumble.protobuf.Mumble.CryptSetup.getDefaultInstance()) return this;
          if (other.hasKey()) {
            setKey(other.getKey());
          }
          if (other.hasClientNonce()) {
            setClientNonce(other.getClientNonce());
          }
          if (other.hasServerNonce()) {
            setServerNonce(other.getServerNonce());
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }
  
        public final boolean isInitialized() {
          return true;
        }
  
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.morlunk.jumble.protobuf.Mumble.CryptSetup parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (com.morlunk.jumble.protobuf.Mumble.CryptSetup) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;
  
        private com.google.protobuf.ByteString key_ = com.google.protobuf.ByteString.EMPTY;
        /**
         * <code>optional bytes key = 1;</code>
         */
        public boolean hasKey() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <code>optional bytes key = 1;</code>
         */
        public com.google.protobuf.ByteString getKey() {
          return key_;
        }
        /**
         * <code>optional bytes key = 1;</code>
         */
        public Builder setKey(com.google.protobuf.ByteString value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000001;
          key_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional bytes key = 1;</code>
         */
        public Builder clearKey() {
          bitField0_ = (bitField0_ & ~0x00000001);
          key_ = getDefaultInstance().getKey();
          onChanged();
          return this;
        }
  
        private com.google.protobuf.ByteString clientNonce_ = com.google.protobuf.ByteString.EMPTY;
        /**
         * <code>optional bytes client_nonce = 2;</code>
         */
        public boolean hasClientNonce() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * <code>optional bytes client_nonce = 2;</code>
         */
        public com.google.protobuf.ByteString getClientNonce() {
          return clientNonce_;
        }
        /**
         * <code>optional bytes client_nonce = 2;</code>
         */
        public Builder setClientNonce(com.google.protobuf.ByteString value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000002;
          clientNonce_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional bytes client_nonce = 2;</code>
         */
        public Builder clearClientNonce() {
          bitField0_ = (bitField0_ & ~0x00000002);
          clientNonce_ = getDefaultInstance().getClientNonce();
          onChanged();
          return this;
        }
  
        private com.google.protobuf.ByteString serverNonce_ = com.google.protobuf.ByteString.EMPTY;
        /**
         * <code>optional bytes server_nonce = 3;</code>
         */
        public boolean hasServerNonce() {
          return ((bitField0_ & 0x00000004) == 0x00000004);
        }
        /**
         * <code>optional bytes server_nonce = 3;</code>
         */
        public com.google.protobuf.ByteString getServerNonce() {
          return serverNonce_;
        }
        /**
         * <code>optional bytes server_nonce = 3;</code>
         */
        public Builder setServerNonce(com.google.protobuf.ByteString value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000004;
          serverNonce_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional bytes server_nonce = 3;</code>
         */
        public Builder clearServerNonce() {
          bitField0_ = (bitField0_ & ~0x00000004);
          serverNonce_ = getDefaultInstance().getServerNonce();
          onChanged();
          return this;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }
  
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:MumbleProto.CryptSetup)
      }
  
      // @@protoc_insertion_point(class_scope:MumbleProto.CryptSetup)
      private static final com.morlunk.jumble.protobuf.Mumble.CryptSetup DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.morlunk.jumble.protobuf.Mumble.CryptSetup();
      }
  
      public static com.morlunk.jumble.protobuf.Mumble.CryptSetup getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      @java.lang.Deprecated public static final com.google.protobuf.Parser<CryptSetup>
          PARSER = new com.google.protobuf.AbstractParser<CryptSetup>() {
        public CryptSetup parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return new CryptSetup(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<CryptSetup> parser() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.google.protobuf.Parser<CryptSetup> getParserForType() {
        return PARSER;
      }
  
      public com.morlunk.jumble.protobuf.Mumble.CryptSetup getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface ContextActionModifyOrBuilder extends
        // @@protoc_insertion_point(interface_extends:MumbleProto.ContextActionModify)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <code>required string action = 1;</code>
       */
      boolean hasAction();
      /**
       * <code>required string action = 1;</code>
       */
      java.lang.String getAction();
      /**
       * <code>required string action = 1;</code>
       */
      com.google.protobuf.ByteString
          getActionBytes();
  
      /**
       * <code>optional string text = 2;</code>
       */
      boolean hasText();
      /**
       * <code>optional string text = 2;</code>
       */
      java.lang.String getText();
      /**
       * <code>optional string text = 2;</code>
       */
      com.google.protobuf.ByteString
          getTextBytes();
  
      /**
       * <code>optional uint32 context = 3;</code>
       */
      boolean hasContext();
      /**
       * <code>optional uint32 context = 3;</code>
       */
      int getContext();
  
      /**
       * <code>optional .MumbleProto.ContextActionModify.Operation operation = 4;</code>
       */
      boolean hasOperation();
      /**
       * <code>optional .MumbleProto.ContextActionModify.Operation operation = 4;</code>
       */
      com.morlunk.jumble.protobuf.Mumble.ContextActionModify.Operation getOperation();
    }
    /**
     * Protobuf type {@code MumbleProto.ContextActionModify}
     */
    public  static final class ContextActionModify extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:MumbleProto.ContextActionModify)
        ContextActionModifyOrBuilder {
      // Use ContextActionModify.newBuilder() to construct.
      private ContextActionModify(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private ContextActionModify() {
        action_ = "";
        text_ = "";
        context_ = 0;
        operation_ = 0;
      }
  
      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private ContextActionModify(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        int mutable_bitField0_ = 0;
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder();
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              default: {
                if (!parseUnknownField(input, unknownFields,
                                       extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 10: {
                com.google.protobuf.ByteString bs = input.readBytes();
                bitField0_ |= 0x00000001;
                action_ = bs;
                break;
              }
              case 18: {
                com.google.protobuf.ByteString bs = input.readBytes();
                bitField0_ |= 0x00000002;
                text_ = bs;
                break;
              }
              case 24: {
                bitField0_ |= 0x00000004;
                context_ = input.readUInt32();
                break;
              }
              case 32: {
                int rawValue = input.readEnum();
                com.morlunk.jumble.protobuf.Mumble.ContextActionModify.Operation value = com.morlunk.jumble.protobuf.Mumble.ContextActionModify.Operation.valueOf(rawValue);
                if (value == null) {
                  unknownFields.mergeVarintField(4, rawValue);
                } else {
                  bitField0_ |= 0x00000008;
                  operation_ = rawValue;
                }
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_ContextActionModify_descriptor;
      }
  
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_ContextActionModify_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.morlunk.jumble.protobuf.Mumble.ContextActionModify.class, com.morlunk.jumble.protobuf.Mumble.ContextActionModify.Builder.class);
      }
  
      /**
       * Protobuf enum {@code MumbleProto.ContextActionModify.Context}
       */
      public enum Context
          implements com.google.protobuf.ProtocolMessageEnum {
        /**
         * <code>Server = 1;</code>
         */
        Server(1),
        /**
         * <code>Channel = 2;</code>
         */
        Channel(2),
        /**
         * <code>User = 4;</code>
         */
        User(4),
        ;
  
        /**
         * <code>Server = 1;</code>
         */
        public static final int Server_VALUE = 1;
        /**
         * <code>Channel = 2;</code>
         */
        public static final int Channel_VALUE = 2;
        /**
         * <code>User = 4;</code>
         */
        public static final int User_VALUE = 4;
  
  
        public final int getNumber() {
          return value;
        }
  
        /**
         * @deprecated Use {@link #forNumber(int)} instead.
         */
        @java.lang.Deprecated
        public static Context valueOf(int value) {
          return forNumber(value);
        }
  
        public static Context forNumber(int value) {
          switch (value) {
            case 1: return Server;
            case 2: return Channel;
            case 4: return User;
            default: return null;
          }
        }
  
        public static com.google.protobuf.Internal.EnumLiteMap<Context>
            internalGetValueMap() {
          return internalValueMap;
        }
        private static final com.google.protobuf.Internal.EnumLiteMap<
            Context> internalValueMap =
              new com.google.protobuf.Internal.EnumLiteMap<Context>() {
                public Context findValueByNumber(int number) {
                  return Context.forNumber(number);
                }
              };
  
        public final com.google.protobuf.Descriptors.EnumValueDescriptor
            getValueDescriptor() {
          return getDescriptor().getValues().get(ordinal());
        }
        public final com.google.protobuf.Descriptors.EnumDescriptor
            getDescriptorForType() {
          return getDescriptor();
        }
        public static final com.google.protobuf.Descriptors.EnumDescriptor
            getDescriptor() {
          return com.morlunk.jumble.protobuf.Mumble.ContextActionModify.getDescriptor().getEnumTypes().get(0);
        }
  
        private static final Context[] VALUES = values();
  
        public static Context valueOf(
            com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
          if (desc.getType() != getDescriptor()) {
            throw new java.lang.IllegalArgumentException(
              "EnumValueDescriptor is not for this type.");
          }
          return VALUES[desc.getIndex()];
        }
  
        private final int value;
  
        private Context(int value) {
          this.value = value;
        }
  
        // @@protoc_insertion_point(enum_scope:MumbleProto.ContextActionModify.Context)
      }
  
      /**
       * Protobuf enum {@code MumbleProto.ContextActionModify.Operation}
       */
      public enum Operation
          implements com.google.protobuf.ProtocolMessageEnum {
        /**
         * <code>Add = 0;</code>
         */
        Add(0),
        /**
         * <code>Remove = 1;</code>
         */
        Remove(1),
        ;
  
        /**
         * <code>Add = 0;</code>
         */
        public static final int Add_VALUE = 0;
        /**
         * <code>Remove = 1;</code>
         */
        public static final int Remove_VALUE = 1;
  
  
        public final int getNumber() {
          return value;
        }
  
        /**
         * @deprecated Use {@link #forNumber(int)} instead.
         */
        @java.lang.Deprecated
        public static Operation valueOf(int value) {
          return forNumber(value);
        }
  
        public static Operation forNumber(int value) {
          switch (value) {
            case 0: return Add;
            case 1: return Remove;
            default: return null;
          }
        }
  
        public static com.google.protobuf.Internal.EnumLiteMap<Operation>
            internalGetValueMap() {
          return internalValueMap;
        }
        private static final com.google.protobuf.Internal.EnumLiteMap<
            Operation> internalValueMap =
              new com.google.protobuf.Internal.EnumLiteMap<Operation>() {
                public Operation findValueByNumber(int number) {
                  return Operation.forNumber(number);
                }
              };
  
        public final com.google.protobuf.Descriptors.EnumValueDescriptor
            getValueDescriptor() {
          return getDescriptor().getValues().get(ordinal());
        }
        public final com.google.protobuf.Descriptors.EnumDescriptor
            getDescriptorForType() {
          return getDescriptor();
        }
        public static final com.google.protobuf.Descriptors.EnumDescriptor
            getDescriptor() {
          return com.morlunk.jumble.protobuf.Mumble.ContextActionModify.getDescriptor().getEnumTypes().get(1);
        }
  
        private static final Operation[] VALUES = values();
  
        public static Operation valueOf(
            com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
          if (desc.getType() != getDescriptor()) {
            throw new java.lang.IllegalArgumentException(
              "EnumValueDescriptor is not for this type.");
          }
          return VALUES[desc.getIndex()];
        }
  
        private final int value;
  
        private Operation(int value) {
          this.value = value;
        }
  
        // @@protoc_insertion_point(enum_scope:MumbleProto.ContextActionModify.Operation)
      }
  
      private int bitField0_;
      public static final int ACTION_FIELD_NUMBER = 1;
      private volatile java.lang.Object action_;
      /**
       * <code>required string action = 1;</code>
       */
      public boolean hasAction() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required string action = 1;</code>
       */
      public java.lang.String getAction() {
        java.lang.Object ref = action_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            action_ = s;
          }
          return s;
        }
      }
      /**
       * <code>required string action = 1;</code>
       */
      public com.google.protobuf.ByteString
          getActionBytes() {
        java.lang.Object ref = action_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          action_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
  
      public static final int TEXT_FIELD_NUMBER = 2;
      private volatile java.lang.Object text_;
      /**
       * <code>optional string text = 2;</code>
       */
      public boolean hasText() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional string text = 2;</code>
       */
      public java.lang.String getText() {
        java.lang.Object ref = text_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            text_ = s;
          }
          return s;
        }
      }
      /**
       * <code>optional string text = 2;</code>
       */
      public com.google.protobuf.ByteString
          getTextBytes() {
        java.lang.Object ref = text_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          text_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
  
      public static final int CONTEXT_FIELD_NUMBER = 3;
      private int context_;
      /**
       * <code>optional uint32 context = 3;</code>
       */
      public boolean hasContext() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>optional uint32 context = 3;</code>
       */
      public int getContext() {
        return context_;
      }
  
      public static final int OPERATION_FIELD_NUMBER = 4;
      private int operation_;
      /**
       * <code>optional .MumbleProto.ContextActionModify.Operation operation = 4;</code>
       */
      public boolean hasOperation() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>optional .MumbleProto.ContextActionModify.Operation operation = 4;</code>
       */
      public com.morlunk.jumble.protobuf.Mumble.ContextActionModify.Operation getOperation() {
        com.morlunk.jumble.protobuf.Mumble.ContextActionModify.Operation result = com.morlunk.jumble.protobuf.Mumble.ContextActionModify.Operation.valueOf(operation_);
        return result == null ? com.morlunk.jumble.protobuf.Mumble.ContextActionModify.Operation.Add : result;
      }
  
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        if (!hasAction()) {
          memoizedIsInitialized = 0;
          return false;
        }
        memoizedIsInitialized = 1;
        return true;
      }
  
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 1, action_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 2, text_);
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          output.writeUInt32(3, context_);
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          output.writeEnum(4, operation_);
        }
        unknownFields.writeTo(output);
      }
  
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, action_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, text_);
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(3, context_);
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(4, operation_);
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }
  
      private static final long serialVersionUID = 0L;
      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.morlunk.jumble.protobuf.Mumble.ContextActionModify)) {
          return super.equals(obj);
        }
        com.morlunk.jumble.protobuf.Mumble.ContextActionModify other = (com.morlunk.jumble.protobuf.Mumble.ContextActionModify) obj;
  
        boolean result = true;
        result = result && (hasAction() == other.hasAction());
        if (hasAction()) {
          result = result && getAction()
              .equals(other.getAction());
        }
        result = result && (hasText() == other.hasText());
        if (hasText()) {
          result = result && getText()
              .equals(other.getText());
        }
        result = result && (hasContext() == other.hasContext());
        if (hasContext()) {
          result = result && (getContext()
              == other.getContext());
        }
        result = result && (hasOperation() == other.hasOperation());
        if (hasOperation()) {
          result = result && operation_ == other.operation_;
        }
        result = result && unknownFields.equals(other.unknownFields);
        return result;
      }
  
      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptorForType().hashCode();
        if (hasAction()) {
          hash = (37 * hash) + ACTION_FIELD_NUMBER;
          hash = (53 * hash) + getAction().hashCode();
        }
        if (hasText()) {
          hash = (37 * hash) + TEXT_FIELD_NUMBER;
          hash = (53 * hash) + getText().hashCode();
        }
        if (hasContext()) {
          hash = (37 * hash) + CONTEXT_FIELD_NUMBER;
          hash = (53 * hash) + getContext();
        }
        if (hasOperation()) {
          hash = (37 * hash) + OPERATION_FIELD_NUMBER;
          hash = (53 * hash) + operation_;
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static com.morlunk.jumble.protobuf.Mumble.ContextActionModify parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.morlunk.jumble.protobuf.Mumble.ContextActionModify parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.ContextActionModify parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.morlunk.jumble.protobuf.Mumble.ContextActionModify parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.ContextActionModify parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.morlunk.jumble.protobuf.Mumble.ContextActionModify parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.ContextActionModify parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.morlunk.jumble.protobuf.Mumble.ContextActionModify parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.ContextActionModify parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.morlunk.jumble.protobuf.Mumble.ContextActionModify parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
  
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(com.morlunk.jumble.protobuf.Mumble.ContextActionModify prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }
  
      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code MumbleProto.ContextActionModify}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:MumbleProto.ContextActionModify)
          com.morlunk.jumble.protobuf.Mumble.ContextActionModifyOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_ContextActionModify_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_ContextActionModify_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.morlunk.jumble.protobuf.Mumble.ContextActionModify.class, com.morlunk.jumble.protobuf.Mumble.ContextActionModify.Builder.class);
        }
  
        // Construct using com.morlunk.jumble.protobuf.Mumble.ContextActionModify.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
  
        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
          }
        }
        public Builder clear() {
          super.clear();
          action_ = "";
          bitField0_ = (bitField0_ & ~0x00000001);
          text_ = "";
          bitField0_ = (bitField0_ & ~0x00000002);
          context_ = 0;
          bitField0_ = (bitField0_ & ~0x00000004);
          operation_ = 0;
          bitField0_ = (bitField0_ & ~0x00000008);
          return this;
        }
  
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_ContextActionModify_descriptor;
        }
  
        public com.morlunk.jumble.protobuf.Mumble.ContextActionModify getDefaultInstanceForType() {
          return com.morlunk.jumble.protobuf.Mumble.ContextActionModify.getDefaultInstance();
        }
  
        public com.morlunk.jumble.protobuf.Mumble.ContextActionModify build() {
          com.morlunk.jumble.protobuf.Mumble.ContextActionModify result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        public com.morlunk.jumble.protobuf.Mumble.ContextActionModify buildPartial() {
          com.morlunk.jumble.protobuf.Mumble.ContextActionModify result = new com.morlunk.jumble.protobuf.Mumble.ContextActionModify(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.action_ = action_;
          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
            to_bitField0_ |= 0x00000002;
          }
          result.text_ = text_;
          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
            to_bitField0_ |= 0x00000004;
          }
          result.context_ = context_;
          if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
            to_bitField0_ |= 0x00000008;
          }
          result.operation_ = operation_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
  
        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.setField(field, value);
        }
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return (Builder) super.clearField(field);
        }
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return (Builder) super.clearOneof(oneof);
        }
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.morlunk.jumble.protobuf.Mumble.ContextActionModify) {
            return mergeFrom((com.morlunk.jumble.protobuf.Mumble.ContextActionModify)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(com.morlunk.jumble.protobuf.Mumble.ContextActionModify other) {
          if (other == com.morlunk.jumble.protobuf.Mumble.ContextActionModify.getDefaultInstance()) return this;
          if (other.hasAction()) {
            bitField0_ |= 0x00000001;
            action_ = other.action_;
            onChanged();
          }
          if (other.hasText()) {
            bitField0_ |= 0x00000002;
            text_ = other.text_;
            onChanged();
          }
          if (other.hasContext()) {
            setContext(other.getContext());
          }
          if (other.hasOperation()) {
            setOperation(other.getOperation());
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }
  
        public final boolean isInitialized() {
          if (!hasAction()) {
            return false;
          }
          return true;
        }
  
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.morlunk.jumble.protobuf.Mumble.ContextActionModify parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (com.morlunk.jumble.protobuf.Mumble.ContextActionModify) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;
  
        private java.lang.Object action_ = "";
        /**
         * <code>required string action = 1;</code>
         */
        public boolean hasAction() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <code>required string action = 1;</code>
         */
        public java.lang.String getAction() {
          java.lang.Object ref = action_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              action_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>required string action = 1;</code>
         */
        public com.google.protobuf.ByteString
            getActionBytes() {
          java.lang.Object ref = action_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            action_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>required string action = 1;</code>
         */
        public Builder setAction(
            java.lang.String value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000001;
          action_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>required string action = 1;</code>
         */
        public Builder clearAction() {
          bitField0_ = (bitField0_ & ~0x00000001);
          action_ = getDefaultInstance().getAction();
          onChanged();
          return this;
        }
        /**
         * <code>required string action = 1;</code>
         */
        public Builder setActionBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000001;
          action_ = value;
          onChanged();
          return this;
        }
  
        private java.lang.Object text_ = "";
        /**
         * <code>optional string text = 2;</code>
         */
        public boolean hasText() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * <code>optional string text = 2;</code>
         */
        public java.lang.String getText() {
          java.lang.Object ref = text_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              text_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>optional string text = 2;</code>
         */
        public com.google.protobuf.ByteString
            getTextBytes() {
          java.lang.Object ref = text_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            text_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>optional string text = 2;</code>
         */
        public Builder setText(
            java.lang.String value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000002;
          text_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional string text = 2;</code>
         */
        public Builder clearText() {
          bitField0_ = (bitField0_ & ~0x00000002);
          text_ = getDefaultInstance().getText();
          onChanged();
          return this;
        }
        /**
         * <code>optional string text = 2;</code>
         */
        public Builder setTextBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000002;
          text_ = value;
          onChanged();
          return this;
        }
  
        private int context_ ;
        /**
         * <code>optional uint32 context = 3;</code>
         */
        public boolean hasContext() {
          return ((bitField0_ & 0x00000004) == 0x00000004);
        }
        /**
         * <code>optional uint32 context = 3;</code>
         */
        public int getContext() {
          return context_;
        }
        /**
         * <code>optional uint32 context = 3;</code>
         */
        public Builder setContext(int value) {
          bitField0_ |= 0x00000004;
          context_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional uint32 context = 3;</code>
         */
        public Builder clearContext() {
          bitField0_ = (bitField0_ & ~0x00000004);
          context_ = 0;
          onChanged();
          return this;
        }
  
        private int operation_ = 0;
        /**
         * <code>optional .MumbleProto.ContextActionModify.Operation operation = 4;</code>
         */
        public boolean hasOperation() {
          return ((bitField0_ & 0x00000008) == 0x00000008);
        }
        /**
         * <code>optional .MumbleProto.ContextActionModify.Operation operation = 4;</code>
         */
        public com.morlunk.jumble.protobuf.Mumble.ContextActionModify.Operation getOperation() {
          com.morlunk.jumble.protobuf.Mumble.ContextActionModify.Operation result = com.morlunk.jumble.protobuf.Mumble.ContextActionModify.Operation.valueOf(operation_);
          return result == null ? com.morlunk.jumble.protobuf.Mumble.ContextActionModify.Operation.Add : result;
        }
        /**
         * <code>optional .MumbleProto.ContextActionModify.Operation operation = 4;</code>
         */
        public Builder setOperation(com.morlunk.jumble.protobuf.Mumble.ContextActionModify.Operation value) {
          if (value == null) {
            throw new NullPointerException();
          }
          bitField0_ |= 0x00000008;
          operation_ = value.getNumber();
          onChanged();
          return this;
        }
        /**
         * <code>optional .MumbleProto.ContextActionModify.Operation operation = 4;</code>
         */
        public Builder clearOperation() {
          bitField0_ = (bitField0_ & ~0x00000008);
          operation_ = 0;
          onChanged();
          return this;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }
  
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:MumbleProto.ContextActionModify)
      }
  
      // @@protoc_insertion_point(class_scope:MumbleProto.ContextActionModify)
      private static final com.morlunk.jumble.protobuf.Mumble.ContextActionModify DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.morlunk.jumble.protobuf.Mumble.ContextActionModify();
      }
  
      public static com.morlunk.jumble.protobuf.Mumble.ContextActionModify getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      @java.lang.Deprecated public static final com.google.protobuf.Parser<ContextActionModify>
          PARSER = new com.google.protobuf.AbstractParser<ContextActionModify>() {
        public ContextActionModify parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return new ContextActionModify(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<ContextActionModify> parser() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.google.protobuf.Parser<ContextActionModify> getParserForType() {
        return PARSER;
      }
  
      public com.morlunk.jumble.protobuf.Mumble.ContextActionModify getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface ContextActionOrBuilder extends
        // @@protoc_insertion_point(interface_extends:MumbleProto.ContextAction)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <code>optional uint32 session = 1;</code>
       */
      boolean hasSession();
      /**
       * <code>optional uint32 session = 1;</code>
       */
      int getSession();
  
      /**
       * <code>optional uint32 channel_id = 2;</code>
       */
      boolean hasChannelId();
      /**
       * <code>optional uint32 channel_id = 2;</code>
       */
      int getChannelId();
  
      /**
       * <code>required string action = 3;</code>
       */
      boolean hasAction();
      /**
       * <code>required string action = 3;</code>
       */
      java.lang.String getAction();
      /**
       * <code>required string action = 3;</code>
       */
      com.google.protobuf.ByteString
          getActionBytes();
    }
    /**
     * Protobuf type {@code MumbleProto.ContextAction}
     */
    public  static final class ContextAction extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:MumbleProto.ContextAction)
        ContextActionOrBuilder {
      // Use ContextAction.newBuilder() to construct.
      private ContextAction(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private ContextAction() {
        session_ = 0;
        channelId_ = 0;
        action_ = "";
      }
  
      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private ContextAction(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        int mutable_bitField0_ = 0;
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder();
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              default: {
                if (!parseUnknownField(input, unknownFields,
                                       extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 8: {
                bitField0_ |= 0x00000001;
                session_ = input.readUInt32();
                break;
              }
              case 16: {
                bitField0_ |= 0x00000002;
                channelId_ = input.readUInt32();
                break;
              }
              case 26: {
                com.google.protobuf.ByteString bs = input.readBytes();
                bitField0_ |= 0x00000004;
                action_ = bs;
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_ContextAction_descriptor;
      }
  
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_ContextAction_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.morlunk.jumble.protobuf.Mumble.ContextAction.class, com.morlunk.jumble.protobuf.Mumble.ContextAction.Builder.class);
      }
  
      private int bitField0_;
      public static final int SESSION_FIELD_NUMBER = 1;
      private int session_;
      /**
       * <code>optional uint32 session = 1;</code>
       */
      public boolean hasSession() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>optional uint32 session = 1;</code>
       */
      public int getSession() {
        return session_;
      }
  
      public static final int CHANNEL_ID_FIELD_NUMBER = 2;
      private int channelId_;
      /**
       * <code>optional uint32 channel_id = 2;</code>
       */
      public boolean hasChannelId() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional uint32 channel_id = 2;</code>
       */
      public int getChannelId() {
        return channelId_;
      }
  
      public static final int ACTION_FIELD_NUMBER = 3;
      private volatile java.lang.Object action_;
      /**
       * <code>required string action = 3;</code>
       */
      public boolean hasAction() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>required string action = 3;</code>
       */
      public java.lang.String getAction() {
        java.lang.Object ref = action_;
        if (ref instanceof java.lang.String) {
          return (java.lang.String) ref;
        } else {
          com.google.protobuf.ByteString bs = 
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (bs.isValidUtf8()) {
            action_ = s;
          }
          return s;
        }
      }
      /**
       * <code>required string action = 3;</code>
       */
      public com.google.protobuf.ByteString
          getActionBytes() {
        java.lang.Object ref = action_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          action_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
  
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        if (!hasAction()) {
          memoizedIsInitialized = 0;
          return false;
        }
        memoizedIsInitialized = 1;
        return true;
      }
  
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeUInt32(1, session_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          output.writeUInt32(2, channelId_);
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 3, action_);
        }
        unknownFields.writeTo(output);
      }
  
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(1, session_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(2, channelId_);
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, action_);
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }
  
      private static final long serialVersionUID = 0L;
      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.morlunk.jumble.protobuf.Mumble.ContextAction)) {
          return super.equals(obj);
        }
        com.morlunk.jumble.protobuf.Mumble.ContextAction other = (com.morlunk.jumble.protobuf.Mumble.ContextAction) obj;
  
        boolean result = true;
        result = result && (hasSession() == other.hasSession());
        if (hasSession()) {
          result = result && (getSession()
              == other.getSession());
        }
        result = result && (hasChannelId() == other.hasChannelId());
        if (hasChannelId()) {
          result = result && (getChannelId()
              == other.getChannelId());
        }
        result = result && (hasAction() == other.hasAction());
        if (hasAction()) {
          result = result && getAction()
              .equals(other.getAction());
        }
        result = result && unknownFields.equals(other.unknownFields);
        return result;
      }
  
      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptorForType().hashCode();
        if (hasSession()) {
          hash = (37 * hash) + SESSION_FIELD_NUMBER;
          hash = (53 * hash) + getSession();
        }
        if (hasChannelId()) {
          hash = (37 * hash) + CHANNEL_ID_FIELD_NUMBER;
          hash = (53 * hash) + getChannelId();
        }
        if (hasAction()) {
          hash = (37 * hash) + ACTION_FIELD_NUMBER;
          hash = (53 * hash) + getAction().hashCode();
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static com.morlunk.jumble.protobuf.Mumble.ContextAction parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.morlunk.jumble.protobuf.Mumble.ContextAction parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.ContextAction parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.morlunk.jumble.protobuf.Mumble.ContextAction parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.ContextAction parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.morlunk.jumble.protobuf.Mumble.ContextAction parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.ContextAction parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.morlunk.jumble.protobuf.Mumble.ContextAction parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.ContextAction parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.morlunk.jumble.protobuf.Mumble.ContextAction parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
  
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(com.morlunk.jumble.protobuf.Mumble.ContextAction prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }
  
      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code MumbleProto.ContextAction}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:MumbleProto.ContextAction)
          com.morlunk.jumble.protobuf.Mumble.ContextActionOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_ContextAction_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_ContextAction_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.morlunk.jumble.protobuf.Mumble.ContextAction.class, com.morlunk.jumble.protobuf.Mumble.ContextAction.Builder.class);
        }
  
        // Construct using com.morlunk.jumble.protobuf.Mumble.ContextAction.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
  
        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
          }
        }
        public Builder clear() {
          super.clear();
          session_ = 0;
          bitField0_ = (bitField0_ & ~0x00000001);
          channelId_ = 0;
          bitField0_ = (bitField0_ & ~0x00000002);
          action_ = "";
          bitField0_ = (bitField0_ & ~0x00000004);
          return this;
        }
  
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_ContextAction_descriptor;
        }
  
        public com.morlunk.jumble.protobuf.Mumble.ContextAction getDefaultInstanceForType() {
          return com.morlunk.jumble.protobuf.Mumble.ContextAction.getDefaultInstance();
        }
  
        public com.morlunk.jumble.protobuf.Mumble.ContextAction build() {
          com.morlunk.jumble.protobuf.Mumble.ContextAction result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        public com.morlunk.jumble.protobuf.Mumble.ContextAction buildPartial() {
          com.morlunk.jumble.protobuf.Mumble.ContextAction result = new com.morlunk.jumble.protobuf.Mumble.ContextAction(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.session_ = session_;
          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
            to_bitField0_ |= 0x00000002;
          }
          result.channelId_ = channelId_;
          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
            to_bitField0_ |= 0x00000004;
          }
          result.action_ = action_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
  
        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.setField(field, value);
        }
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return (Builder) super.clearField(field);
        }
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return (Builder) super.clearOneof(oneof);
        }
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.morlunk.jumble.protobuf.Mumble.ContextAction) {
            return mergeFrom((com.morlunk.jumble.protobuf.Mumble.ContextAction)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(com.morlunk.jumble.protobuf.Mumble.ContextAction other) {
          if (other == com.morlunk.jumble.protobuf.Mumble.ContextAction.getDefaultInstance()) return this;
          if (other.hasSession()) {
            setSession(other.getSession());
          }
          if (other.hasChannelId()) {
            setChannelId(other.getChannelId());
          }
          if (other.hasAction()) {
            bitField0_ |= 0x00000004;
            action_ = other.action_;
            onChanged();
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }
  
        public final boolean isInitialized() {
          if (!hasAction()) {
            return false;
          }
          return true;
        }
  
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.morlunk.jumble.protobuf.Mumble.ContextAction parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (com.morlunk.jumble.protobuf.Mumble.ContextAction) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;
  
        private int session_ ;
        /**
         * <code>optional uint32 session = 1;</code>
         */
        public boolean hasSession() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <code>optional uint32 session = 1;</code>
         */
        public int getSession() {
          return session_;
        }
        /**
         * <code>optional uint32 session = 1;</code>
         */
        public Builder setSession(int value) {
          bitField0_ |= 0x00000001;
          session_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional uint32 session = 1;</code>
         */
        public Builder clearSession() {
          bitField0_ = (bitField0_ & ~0x00000001);
          session_ = 0;
          onChanged();
          return this;
        }
  
        private int channelId_ ;
        /**
         * <code>optional uint32 channel_id = 2;</code>
         */
        public boolean hasChannelId() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * <code>optional uint32 channel_id = 2;</code>
         */
        public int getChannelId() {
          return channelId_;
        }
        /**
         * <code>optional uint32 channel_id = 2;</code>
         */
        public Builder setChannelId(int value) {
          bitField0_ |= 0x00000002;
          channelId_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional uint32 channel_id = 2;</code>
         */
        public Builder clearChannelId() {
          bitField0_ = (bitField0_ & ~0x00000002);
          channelId_ = 0;
          onChanged();
          return this;
        }
  
        private java.lang.Object action_ = "";
        /**
         * <code>required string action = 3;</code>
         */
        public boolean hasAction() {
          return ((bitField0_ & 0x00000004) == 0x00000004);
        }
        /**
         * <code>required string action = 3;</code>
         */
        public java.lang.String getAction() {
          java.lang.Object ref = action_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              action_ = s;
            }
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * <code>required string action = 3;</code>
         */
        public com.google.protobuf.ByteString
            getActionBytes() {
          java.lang.Object ref = action_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            action_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * <code>required string action = 3;</code>
         */
        public Builder setAction(
            java.lang.String value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000004;
          action_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>required string action = 3;</code>
         */
        public Builder clearAction() {
          bitField0_ = (bitField0_ & ~0x00000004);
          action_ = getDefaultInstance().getAction();
          onChanged();
          return this;
        }
        /**
         * <code>required string action = 3;</code>
         */
        public Builder setActionBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000004;
          action_ = value;
          onChanged();
          return this;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }
  
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:MumbleProto.ContextAction)
      }
  
      // @@protoc_insertion_point(class_scope:MumbleProto.ContextAction)
      private static final com.morlunk.jumble.protobuf.Mumble.ContextAction DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.morlunk.jumble.protobuf.Mumble.ContextAction();
      }
  
      public static com.morlunk.jumble.protobuf.Mumble.ContextAction getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      @java.lang.Deprecated public static final com.google.protobuf.Parser<ContextAction>
          PARSER = new com.google.protobuf.AbstractParser<ContextAction>() {
        public ContextAction parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return new ContextAction(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<ContextAction> parser() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.google.protobuf.Parser<ContextAction> getParserForType() {
        return PARSER;
      }
  
      public com.morlunk.jumble.protobuf.Mumble.ContextAction getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface UserListOrBuilder extends
        // @@protoc_insertion_point(interface_extends:MumbleProto.UserList)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <code>repeated .MumbleProto.UserList.User users = 1;</code>
       */
      java.util.List<com.morlunk.jumble.protobuf.Mumble.UserList.User> 
          getUsersList();
      /**
       * <code>repeated .MumbleProto.UserList.User users = 1;</code>
       */
      com.morlunk.jumble.protobuf.Mumble.UserList.User getUsers(int index);
      /**
       * <code>repeated .MumbleProto.UserList.User users = 1;</code>
       */
      int getUsersCount();
      /**
       * <code>repeated .MumbleProto.UserList.User users = 1;</code>
       */
      java.util.List<? extends com.morlunk.jumble.protobuf.Mumble.UserList.UserOrBuilder> 
          getUsersOrBuilderList();
      /**
       * <code>repeated .MumbleProto.UserList.User users = 1;</code>
       */
      com.morlunk.jumble.protobuf.Mumble.UserList.UserOrBuilder getUsersOrBuilder(
          int index);
    }
    /**
     * Protobuf type {@code MumbleProto.UserList}
     */
    public  static final class UserList extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:MumbleProto.UserList)
        UserListOrBuilder {
      // Use UserList.newBuilder() to construct.
      private UserList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private UserList() {
        users_ = java.util.Collections.emptyList();
      }
  
      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private UserList(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        int mutable_bitField0_ = 0;
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder();
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              default: {
                if (!parseUnknownField(input, unknownFields,
                                       extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 10: {
                if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                  users_ = new java.util.ArrayList<com.morlunk.jumble.protobuf.Mumble.UserList.User>();
                  mutable_bitField0_ |= 0x00000001;
                }
                users_.add(
                    input.readMessage(com.morlunk.jumble.protobuf.Mumble.UserList.User.PARSER, extensionRegistry));
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
            users_ = java.util.Collections.unmodifiableList(users_);
          }
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_UserList_descriptor;
      }
  
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_UserList_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.morlunk.jumble.protobuf.Mumble.UserList.class, com.morlunk.jumble.protobuf.Mumble.UserList.Builder.class);
      }
  
      public interface UserOrBuilder extends
          // @@protoc_insertion_point(interface_extends:MumbleProto.UserList.User)
          com.google.protobuf.MessageOrBuilder {
  
        /**
         * <code>required uint32 user_id = 1;</code>
         */
        boolean hasUserId();
        /**
         * <code>required uint32 user_id = 1;</code>
         */
        int getUserId();
  
        /**
         * <code>optional string name = 2;</code>
         */
        boolean hasName();
        /**
         * <code>optional string name = 2;</code>
         */
        java.lang.String getName();
        /**
         * <code>optional string name = 2;</code>
         */
        com.google.protobuf.ByteString
            getNameBytes();
      }
      /**
       * Protobuf type {@code MumbleProto.UserList.User}
       */
      public  static final class User extends
          com.google.protobuf.GeneratedMessageV3 implements
          // @@protoc_insertion_point(message_implements:MumbleProto.UserList.User)
          UserOrBuilder {
        // Use User.newBuilder() to construct.
        private User(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
          super(builder);
        }
        private User() {
          userId_ = 0;
          name_ = "";
        }
  
        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
          return this.unknownFields;
        }
        private User(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          this();
          int mutable_bitField0_ = 0;
          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
              com.google.protobuf.UnknownFieldSet.newBuilder();
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                default: {
                  if (!parseUnknownField(input, unknownFields,
                                         extensionRegistry, tag)) {
                    done = true;
                  }
                  break;
                }
                case 8: {
                  bitField0_ |= 0x00000001;
                  userId_ = input.readUInt32();
                  break;
                }
                case 18: {
                  com.google.protobuf.ByteString bs = input.readBytes();
                  bitField0_ |= 0x00000002;
                  name_ = bs;
                  break;
                }
              }
            }
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(this);
          } catch (java.io.IOException e) {
            throw new com.google.protobuf.InvalidProtocolBufferException(
                e).setUnfinishedMessage(this);
          } finally {
            this.unknownFields = unknownFields.build();
            makeExtensionsImmutable();
          }
        }
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_UserList_User_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_UserList_User_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.morlunk.jumble.protobuf.Mumble.UserList.User.class, com.morlunk.jumble.protobuf.Mumble.UserList.User.Builder.class);
        }
  
        private int bitField0_;
        public static final int USER_ID_FIELD_NUMBER = 1;
        private int userId_;
        /**
         * <code>required uint32 user_id = 1;</code>
         */
        public boolean hasUserId() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <code>required uint32 user_id = 1;</code>
         */
        public int getUserId() {
          return userId_;
        }
  
        public static final int NAME_FIELD_NUMBER = 2;
        private volatile java.lang.Object name_;
        /**
         * <code>optional string name = 2;</code>
         */
        public boolean hasName() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * <code>optional string name = 2;</code>
         */
        public java.lang.String getName() {
          java.lang.Object ref = name_;
          if (ref instanceof java.lang.String) {
            return (java.lang.String) ref;
          } else {
            com.google.protobuf.ByteString bs = 
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              name_ = s;
            }
            return s;
          }
        }
        /**
         * <code>optional string name = 2;</code>
         */
        public com.google.protobuf.ByteString
            getNameBytes() {
          java.lang.Object ref = name_;
          if (ref instanceof java.lang.String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            name_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
  
        private byte memoizedIsInitialized = -1;
        public final boolean isInitialized() {
          byte isInitialized = memoizedIsInitialized;
          if (isInitialized == 1) return true;
          if (isInitialized == 0) return false;
  
          if (!hasUserId()) {
            memoizedIsInitialized = 0;
            return false;
          }
          memoizedIsInitialized = 1;
          return true;
        }
  
        public void writeTo(com.google.protobuf.CodedOutputStream output)
                            throws java.io.IOException {
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            output.writeUInt32(1, userId_);
          }
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_);
          }
          unknownFields.writeTo(output);
        }
  
        public int getSerializedSize() {
          int size = memoizedSize;
          if (size != -1) return size;
  
          size = 0;
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(1, userId_);
          }
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_);
          }
          size += unknownFields.getSerializedSize();
          memoizedSize = size;
          return size;
        }
  
        private static final long serialVersionUID = 0L;
        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
          if (obj == this) {
           return true;
          }
          if (!(obj instanceof com.morlunk.jumble.protobuf.Mumble.UserList.User)) {
            return super.equals(obj);
          }
          com.morlunk.jumble.protobuf.Mumble.UserList.User other = (com.morlunk.jumble.protobuf.Mumble.UserList.User) obj;
  
          boolean result = true;
          result = result && (hasUserId() == other.hasUserId());
          if (hasUserId()) {
            result = result && (getUserId()
                == other.getUserId());
          }
          result = result && (hasName() == other.hasName());
          if (hasName()) {
            result = result && getName()
                .equals(other.getName());
          }
          result = result && unknownFields.equals(other.unknownFields);
          return result;
        }
  
        @java.lang.Override
        public int hashCode() {
          if (memoizedHashCode != 0) {
            return memoizedHashCode;
          }
          int hash = 41;
          hash = (19 * hash) + getDescriptorForType().hashCode();
          if (hasUserId()) {
            hash = (37 * hash) + USER_ID_FIELD_NUMBER;
            hash = (53 * hash) + getUserId();
          }
          if (hasName()) {
            hash = (37 * hash) + NAME_FIELD_NUMBER;
            hash = (53 * hash) + getName().hashCode();
          }
          hash = (29 * hash) + unknownFields.hashCode();
          memoizedHashCode = hash;
          return hash;
        }
  
        public static com.morlunk.jumble.protobuf.Mumble.UserList.User parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static com.morlunk.jumble.protobuf.Mumble.UserList.User parseFrom(
            com.google.protobuf.ByteString data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.morlunk.jumble.protobuf.Mumble.UserList.User parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static com.morlunk.jumble.protobuf.Mumble.UserList.User parseFrom(
            byte[] data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.morlunk.jumble.protobuf.Mumble.UserList.User parseFrom(java.io.InputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input);
        }
        public static com.morlunk.jumble.protobuf.Mumble.UserList.User parseFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.morlunk.jumble.protobuf.Mumble.UserList.User parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseDelimitedWithIOException(PARSER, input);
        }
        public static com.morlunk.jumble.protobuf.Mumble.UserList.User parseDelimitedFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.morlunk.jumble.protobuf.Mumble.UserList.User parseFrom(
            com.google.protobuf.CodedInputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input);
        }
        public static com.morlunk.jumble.protobuf.Mumble.UserList.User parseFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input, extensionRegistry);
        }
  
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder() {
          return DEFAULT_INSTANCE.toBuilder();
        }
        public static Builder newBuilder(com.morlunk.jumble.protobuf.Mumble.UserList.User prototype) {
          return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }
        public Builder toBuilder() {
          return this == DEFAULT_INSTANCE
              ? new Builder() : new Builder().mergeFrom(this);
        }
  
        @java.lang.Override
        protected Builder newBuilderForType(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          Builder builder = new Builder(parent);
          return builder;
        }
        /**
         * Protobuf type {@code MumbleProto.UserList.User}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
            // @@protoc_insertion_point(builder_implements:MumbleProto.UserList.User)
            com.morlunk.jumble.protobuf.Mumble.UserList.UserOrBuilder {
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_UserList_User_descriptor;
          }
  
          protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_UserList_User_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    com.morlunk.jumble.protobuf.Mumble.UserList.User.class, com.morlunk.jumble.protobuf.Mumble.UserList.User.Builder.class);
          }
  
          // Construct using com.morlunk.jumble.protobuf.Mumble.UserList.User.newBuilder()
          private Builder() {
            maybeForceBuilderInitialization();
          }
  
          private Builder(
              com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            super(parent);
            maybeForceBuilderInitialization();
          }
          private void maybeForceBuilderInitialization() {
            if (com.google.protobuf.GeneratedMessageV3
                    .alwaysUseFieldBuilders) {
            }
          }
          public Builder clear() {
            super.clear();
            userId_ = 0;
            bitField0_ = (bitField0_ & ~0x00000001);
            name_ = "";
            bitField0_ = (bitField0_ & ~0x00000002);
            return this;
          }
  
          public com.google.protobuf.Descriptors.Descriptor
              getDescriptorForType() {
            return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_UserList_User_descriptor;
          }
  
          public com.morlunk.jumble.protobuf.Mumble.UserList.User getDefaultInstanceForType() {
            return com.morlunk.jumble.protobuf.Mumble.UserList.User.getDefaultInstance();
          }
  
          public com.morlunk.jumble.protobuf.Mumble.UserList.User build() {
            com.morlunk.jumble.protobuf.Mumble.UserList.User result = buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(result);
            }
            return result;
          }
  
          public com.morlunk.jumble.protobuf.Mumble.UserList.User buildPartial() {
            com.morlunk.jumble.protobuf.Mumble.UserList.User result = new com.morlunk.jumble.protobuf.Mumble.UserList.User(this);
            int from_bitField0_ = bitField0_;
            int to_bitField0_ = 0;
            if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
              to_bitField0_ |= 0x00000001;
            }
            result.userId_ = userId_;
            if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
              to_bitField0_ |= 0x00000002;
            }
            result.name_ = name_;
            result.bitField0_ = to_bitField0_;
            onBuilt();
            return result;
          }
  
          public Builder clone() {
            return (Builder) super.clone();
          }
          public Builder setField(
              com.google.protobuf.Descriptors.FieldDescriptor field,
              Object value) {
            return (Builder) super.setField(field, value);
          }
          public Builder clearField(
              com.google.protobuf.Descriptors.FieldDescriptor field) {
            return (Builder) super.clearField(field);
          }
          public Builder clearOneof(
              com.google.protobuf.Descriptors.OneofDescriptor oneof) {
            return (Builder) super.clearOneof(oneof);
          }
          public Builder setRepeatedField(
              com.google.protobuf.Descriptors.FieldDescriptor field,
              int index, Object value) {
            return (Builder) super.setRepeatedField(field, index, value);
          }
          public Builder addRepeatedField(
              com.google.protobuf.Descriptors.FieldDescriptor field,
              Object value) {
            return (Builder) super.addRepeatedField(field, value);
          }
          public Builder mergeFrom(com.google.protobuf.Message other) {
            if (other instanceof com.morlunk.jumble.protobuf.Mumble.UserList.User) {
              return mergeFrom((com.morlunk.jumble.protobuf.Mumble.UserList.User)other);
            } else {
              super.mergeFrom(other);
              return this;
            }
          }
  
          public Builder mergeFrom(com.morlunk.jumble.protobuf.Mumble.UserList.User other) {
            if (other == com.morlunk.jumble.protobuf.Mumble.UserList.User.getDefaultInstance()) return this;
            if (other.hasUserId()) {
              setUserId(other.getUserId());
            }
            if (other.hasName()) {
              bitField0_ |= 0x00000002;
              name_ = other.name_;
              onChanged();
            }
            this.mergeUnknownFields(other.unknownFields);
            onChanged();
            return this;
          }
  
          public final boolean isInitialized() {
            if (!hasUserId()) {
              return false;
            }
            return true;
          }
  
          public Builder mergeFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            com.morlunk.jumble.protobuf.Mumble.UserList.User parsedMessage = null;
            try {
              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              parsedMessage = (com.morlunk.jumble.protobuf.Mumble.UserList.User) e.getUnfinishedMessage();
              throw e.unwrapIOException();
            } finally {
              if (parsedMessage != null) {
                mergeFrom(parsedMessage);
              }
            }
            return this;
          }
          private int bitField0_;
  
          private int userId_ ;
          /**
           * <code>required uint32 user_id = 1;</code>
           */
          public boolean hasUserId() {
            return ((bitField0_ & 0x00000001) == 0x00000001);
          }
          /**
           * <code>required uint32 user_id = 1;</code>
           */
          public int getUserId() {
            return userId_;
          }
          /**
           * <code>required uint32 user_id = 1;</code>
           */
          public Builder setUserId(int value) {
            bitField0_ |= 0x00000001;
            userId_ = value;
            onChanged();
            return this;
          }
          /**
           * <code>required uint32 user_id = 1;</code>
           */
          public Builder clearUserId() {
            bitField0_ = (bitField0_ & ~0x00000001);
            userId_ = 0;
            onChanged();
            return this;
          }
  
          private java.lang.Object name_ = "";
          /**
           * <code>optional string name = 2;</code>
           */
          public boolean hasName() {
            return ((bitField0_ & 0x00000002) == 0x00000002);
          }
          /**
           * <code>optional string name = 2;</code>
           */
          public java.lang.String getName() {
            java.lang.Object ref = name_;
            if (!(ref instanceof java.lang.String)) {
              com.google.protobuf.ByteString bs =
                  (com.google.protobuf.ByteString) ref;
              java.lang.String s = bs.toStringUtf8();
              if (bs.isValidUtf8()) {
                name_ = s;
              }
              return s;
            } else {
              return (java.lang.String) ref;
            }
          }
          /**
           * <code>optional string name = 2;</code>
           */
          public com.google.protobuf.ByteString
              getNameBytes() {
            java.lang.Object ref = name_;
            if (ref instanceof String) {
              com.google.protobuf.ByteString b = 
                  com.google.protobuf.ByteString.copyFromUtf8(
                      (java.lang.String) ref);
              name_ = b;
              return b;
            } else {
              return (com.google.protobuf.ByteString) ref;
            }
          }
          /**
           * <code>optional string name = 2;</code>
           */
          public Builder setName(
              java.lang.String value) {
            if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000002;
            name_ = value;
            onChanged();
            return this;
          }
          /**
           * <code>optional string name = 2;</code>
           */
          public Builder clearName() {
            bitField0_ = (bitField0_ & ~0x00000002);
            name_ = getDefaultInstance().getName();
            onChanged();
            return this;
          }
          /**
           * <code>optional string name = 2;</code>
           */
          public Builder setNameBytes(
              com.google.protobuf.ByteString value) {
            if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000002;
            name_ = value;
            onChanged();
            return this;
          }
          public final Builder setUnknownFields(
              final com.google.protobuf.UnknownFieldSet unknownFields) {
            return super.setUnknownFields(unknownFields);
          }
  
          public final Builder mergeUnknownFields(
              final com.google.protobuf.UnknownFieldSet unknownFields) {
            return super.mergeUnknownFields(unknownFields);
          }
  
  
          // @@protoc_insertion_point(builder_scope:MumbleProto.UserList.User)
        }
  
        // @@protoc_insertion_point(class_scope:MumbleProto.UserList.User)
        private static final com.morlunk.jumble.protobuf.Mumble.UserList.User DEFAULT_INSTANCE;
        static {
          DEFAULT_INSTANCE = new com.morlunk.jumble.protobuf.Mumble.UserList.User();
        }
  
        public static com.morlunk.jumble.protobuf.Mumble.UserList.User getDefaultInstance() {
          return DEFAULT_INSTANCE;
        }
  
        @java.lang.Deprecated public static final com.google.protobuf.Parser<User>
            PARSER = new com.google.protobuf.AbstractParser<User>() {
          public User parsePartialFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
              return new User(input, extensionRegistry);
          }
        };
  
        public static com.google.protobuf.Parser<User> parser() {
          return PARSER;
        }
  
        @java.lang.Override
        public com.google.protobuf.Parser<User> getParserForType() {
          return PARSER;
        }
  
        public com.morlunk.jumble.protobuf.Mumble.UserList.User getDefaultInstanceForType() {
          return DEFAULT_INSTANCE;
        }
  
      }
  
      public static final int USERS_FIELD_NUMBER = 1;
      private java.util.List<com.morlunk.jumble.protobuf.Mumble.UserList.User> users_;
      /**
       * <code>repeated .MumbleProto.UserList.User users = 1;</code>
       */
      public java.util.List<com.morlunk.jumble.protobuf.Mumble.UserList.User> getUsersList() {
        return users_;
      }
      /**
       * <code>repeated .MumbleProto.UserList.User users = 1;</code>
       */
      public java.util.List<? extends com.morlunk.jumble.protobuf.Mumble.UserList.UserOrBuilder> 
          getUsersOrBuilderList() {
        return users_;
      }
      /**
       * <code>repeated .MumbleProto.UserList.User users = 1;</code>
       */
      public int getUsersCount() {
        return users_.size();
      }
      /**
       * <code>repeated .MumbleProto.UserList.User users = 1;</code>
       */
      public com.morlunk.jumble.protobuf.Mumble.UserList.User getUsers(int index) {
        return users_.get(index);
      }
      /**
       * <code>repeated .MumbleProto.UserList.User users = 1;</code>
       */
      public com.morlunk.jumble.protobuf.Mumble.UserList.UserOrBuilder getUsersOrBuilder(
          int index) {
        return users_.get(index);
      }
  
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        for (int i = 0; i < getUsersCount(); i++) {
          if (!getUsers(i).isInitialized()) {
            memoizedIsInitialized = 0;
            return false;
          }
        }
        memoizedIsInitialized = 1;
        return true;
      }
  
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        for (int i = 0; i < users_.size(); i++) {
          output.writeMessage(1, users_.get(i));
        }
        unknownFields.writeTo(output);
      }
  
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        for (int i = 0; i < users_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(1, users_.get(i));
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }
  
      private static final long serialVersionUID = 0L;
      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.morlunk.jumble.protobuf.Mumble.UserList)) {
          return super.equals(obj);
        }
        com.morlunk.jumble.protobuf.Mumble.UserList other = (com.morlunk.jumble.protobuf.Mumble.UserList) obj;
  
        boolean result = true;
        result = result && getUsersList()
            .equals(other.getUsersList());
        result = result && unknownFields.equals(other.unknownFields);
        return result;
      }
  
      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptorForType().hashCode();
        if (getUsersCount() > 0) {
          hash = (37 * hash) + USERS_FIELD_NUMBER;
          hash = (53 * hash) + getUsersList().hashCode();
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static com.morlunk.jumble.protobuf.Mumble.UserList parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.morlunk.jumble.protobuf.Mumble.UserList parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.UserList parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.morlunk.jumble.protobuf.Mumble.UserList parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.UserList parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.morlunk.jumble.protobuf.Mumble.UserList parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.UserList parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.morlunk.jumble.protobuf.Mumble.UserList parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.UserList parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.morlunk.jumble.protobuf.Mumble.UserList parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
  
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(com.morlunk.jumble.protobuf.Mumble.UserList prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }
  
      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code MumbleProto.UserList}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:MumbleProto.UserList)
          com.morlunk.jumble.protobuf.Mumble.UserListOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_UserList_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_UserList_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.morlunk.jumble.protobuf.Mumble.UserList.class, com.morlunk.jumble.protobuf.Mumble.UserList.Builder.class);
        }
  
        // Construct using com.morlunk.jumble.protobuf.Mumble.UserList.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
  
        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
            getUsersFieldBuilder();
          }
        }
        public Builder clear() {
          super.clear();
          if (usersBuilder_ == null) {
            users_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            usersBuilder_.clear();
          }
          return this;
        }
  
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_UserList_descriptor;
        }
  
        public com.morlunk.jumble.protobuf.Mumble.UserList getDefaultInstanceForType() {
          return com.morlunk.jumble.protobuf.Mumble.UserList.getDefaultInstance();
        }
  
        public com.morlunk.jumble.protobuf.Mumble.UserList build() {
          com.morlunk.jumble.protobuf.Mumble.UserList result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        public com.morlunk.jumble.protobuf.Mumble.UserList buildPartial() {
          com.morlunk.jumble.protobuf.Mumble.UserList result = new com.morlunk.jumble.protobuf.Mumble.UserList(this);
          int from_bitField0_ = bitField0_;
          if (usersBuilder_ == null) {
            if (((bitField0_ & 0x00000001) == 0x00000001)) {
              users_ = java.util.Collections.unmodifiableList(users_);
              bitField0_ = (bitField0_ & ~0x00000001);
            }
            result.users_ = users_;
          } else {
            result.users_ = usersBuilder_.build();
          }
          onBuilt();
          return result;
        }
  
        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.setField(field, value);
        }
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return (Builder) super.clearField(field);
        }
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return (Builder) super.clearOneof(oneof);
        }
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.morlunk.jumble.protobuf.Mumble.UserList) {
            return mergeFrom((com.morlunk.jumble.protobuf.Mumble.UserList)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(com.morlunk.jumble.protobuf.Mumble.UserList other) {
          if (other == com.morlunk.jumble.protobuf.Mumble.UserList.getDefaultInstance()) return this;
          if (usersBuilder_ == null) {
            if (!other.users_.isEmpty()) {
              if (users_.isEmpty()) {
                users_ = other.users_;
                bitField0_ = (bitField0_ & ~0x00000001);
              } else {
                ensureUsersIsMutable();
                users_.addAll(other.users_);
              }
              onChanged();
            }
          } else {
            if (!other.users_.isEmpty()) {
              if (usersBuilder_.isEmpty()) {
                usersBuilder_.dispose();
                usersBuilder_ = null;
                users_ = other.users_;
                bitField0_ = (bitField0_ & ~0x00000001);
                usersBuilder_ = 
                  com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                     getUsersFieldBuilder() : null;
              } else {
                usersBuilder_.addAllMessages(other.users_);
              }
            }
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }
  
        public final boolean isInitialized() {
          for (int i = 0; i < getUsersCount(); i++) {
            if (!getUsers(i).isInitialized()) {
              return false;
            }
          }
          return true;
        }
  
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.morlunk.jumble.protobuf.Mumble.UserList parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (com.morlunk.jumble.protobuf.Mumble.UserList) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;
  
        private java.util.List<com.morlunk.jumble.protobuf.Mumble.UserList.User> users_ =
          java.util.Collections.emptyList();
        private void ensureUsersIsMutable() {
          if (!((bitField0_ & 0x00000001) == 0x00000001)) {
            users_ = new java.util.ArrayList<com.morlunk.jumble.protobuf.Mumble.UserList.User>(users_);
            bitField0_ |= 0x00000001;
           }
        }
  
        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.morlunk.jumble.protobuf.Mumble.UserList.User, com.morlunk.jumble.protobuf.Mumble.UserList.User.Builder, com.morlunk.jumble.protobuf.Mumble.UserList.UserOrBuilder> usersBuilder_;
  
        /**
         * <code>repeated .MumbleProto.UserList.User users = 1;</code>
         */
        public java.util.List<com.morlunk.jumble.protobuf.Mumble.UserList.User> getUsersList() {
          if (usersBuilder_ == null) {
            return java.util.Collections.unmodifiableList(users_);
          } else {
            return usersBuilder_.getMessageList();
          }
        }
        /**
         * <code>repeated .MumbleProto.UserList.User users = 1;</code>
         */
        public int getUsersCount() {
          if (usersBuilder_ == null) {
            return users_.size();
          } else {
            return usersBuilder_.getCount();
          }
        }
        /**
         * <code>repeated .MumbleProto.UserList.User users = 1;</code>
         */
        public com.morlunk.jumble.protobuf.Mumble.UserList.User getUsers(int index) {
          if (usersBuilder_ == null) {
            return users_.get(index);
          } else {
            return usersBuilder_.getMessage(index);
          }
        }
        /**
         * <code>repeated .MumbleProto.UserList.User users = 1;</code>
         */
        public Builder setUsers(
            int index, com.morlunk.jumble.protobuf.Mumble.UserList.User value) {
          if (usersBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureUsersIsMutable();
            users_.set(index, value);
            onChanged();
          } else {
            usersBuilder_.setMessage(index, value);
          }
          return this;
        }
        /**
         * <code>repeated .MumbleProto.UserList.User users = 1;</code>
         */
        public Builder setUsers(
            int index, com.morlunk.jumble.protobuf.Mumble.UserList.User.Builder builderForValue) {
          if (usersBuilder_ == null) {
            ensureUsersIsMutable();
            users_.set(index, builderForValue.build());
            onChanged();
          } else {
            usersBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .MumbleProto.UserList.User users = 1;</code>
         */
        public Builder addUsers(com.morlunk.jumble.protobuf.Mumble.UserList.User value) {
          if (usersBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureUsersIsMutable();
            users_.add(value);
            onChanged();
          } else {
            usersBuilder_.addMessage(value);
          }
          return this;
        }
        /**
         * <code>repeated .MumbleProto.UserList.User users = 1;</code>
         */
        public Builder addUsers(
            int index, com.morlunk.jumble.protobuf.Mumble.UserList.User value) {
          if (usersBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureUsersIsMutable();
            users_.add(index, value);
            onChanged();
          } else {
            usersBuilder_.addMessage(index, value);
          }
          return this;
        }
        /**
         * <code>repeated .MumbleProto.UserList.User users = 1;</code>
         */
        public Builder addUsers(
            com.morlunk.jumble.protobuf.Mumble.UserList.User.Builder builderForValue) {
          if (usersBuilder_ == null) {
            ensureUsersIsMutable();
            users_.add(builderForValue.build());
            onChanged();
          } else {
            usersBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .MumbleProto.UserList.User users = 1;</code>
         */
        public Builder addUsers(
            int index, com.morlunk.jumble.protobuf.Mumble.UserList.User.Builder builderForValue) {
          if (usersBuilder_ == null) {
            ensureUsersIsMutable();
            users_.add(index, builderForValue.build());
            onChanged();
          } else {
            usersBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .MumbleProto.UserList.User users = 1;</code>
         */
        public Builder addAllUsers(
            java.lang.Iterable<? extends com.morlunk.jumble.protobuf.Mumble.UserList.User> values) {
          if (usersBuilder_ == null) {
            ensureUsersIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, users_);
            onChanged();
          } else {
            usersBuilder_.addAllMessages(values);
          }
          return this;
        }
        /**
         * <code>repeated .MumbleProto.UserList.User users = 1;</code>
         */
        public Builder clearUsers() {
          if (usersBuilder_ == null) {
            users_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000001);
            onChanged();
          } else {
            usersBuilder_.clear();
          }
          return this;
        }
        /**
         * <code>repeated .MumbleProto.UserList.User users = 1;</code>
         */
        public Builder removeUsers(int index) {
          if (usersBuilder_ == null) {
            ensureUsersIsMutable();
            users_.remove(index);
            onChanged();
          } else {
            usersBuilder_.remove(index);
          }
          return this;
        }
        /**
         * <code>repeated .MumbleProto.UserList.User users = 1;</code>
         */
        public com.morlunk.jumble.protobuf.Mumble.UserList.User.Builder getUsersBuilder(
            int index) {
          return getUsersFieldBuilder().getBuilder(index);
        }
        /**
         * <code>repeated .MumbleProto.UserList.User users = 1;</code>
         */
        public com.morlunk.jumble.protobuf.Mumble.UserList.UserOrBuilder getUsersOrBuilder(
            int index) {
          if (usersBuilder_ == null) {
            return users_.get(index);  } else {
            return usersBuilder_.getMessageOrBuilder(index);
          }
        }
        /**
         * <code>repeated .MumbleProto.UserList.User users = 1;</code>
         */
        public java.util.List<? extends com.morlunk.jumble.protobuf.Mumble.UserList.UserOrBuilder> 
             getUsersOrBuilderList() {
          if (usersBuilder_ != null) {
            return usersBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(users_);
          }
        }
        /**
         * <code>repeated .MumbleProto.UserList.User users = 1;</code>
         */
        public com.morlunk.jumble.protobuf.Mumble.UserList.User.Builder addUsersBuilder() {
          return getUsersFieldBuilder().addBuilder(
              com.morlunk.jumble.protobuf.Mumble.UserList.User.getDefaultInstance());
        }
        /**
         * <code>repeated .MumbleProto.UserList.User users = 1;</code>
         */
        public com.morlunk.jumble.protobuf.Mumble.UserList.User.Builder addUsersBuilder(
            int index) {
          return getUsersFieldBuilder().addBuilder(
              index, com.morlunk.jumble.protobuf.Mumble.UserList.User.getDefaultInstance());
        }
        /**
         * <code>repeated .MumbleProto.UserList.User users = 1;</code>
         */
        public java.util.List<com.morlunk.jumble.protobuf.Mumble.UserList.User.Builder> 
             getUsersBuilderList() {
          return getUsersFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.morlunk.jumble.protobuf.Mumble.UserList.User, com.morlunk.jumble.protobuf.Mumble.UserList.User.Builder, com.morlunk.jumble.protobuf.Mumble.UserList.UserOrBuilder> 
            getUsersFieldBuilder() {
          if (usersBuilder_ == null) {
            usersBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
                com.morlunk.jumble.protobuf.Mumble.UserList.User, com.morlunk.jumble.protobuf.Mumble.UserList.User.Builder, com.morlunk.jumble.protobuf.Mumble.UserList.UserOrBuilder>(
                    users_,
                    ((bitField0_ & 0x00000001) == 0x00000001),
                    getParentForChildren(),
                    isClean());
            users_ = null;
          }
          return usersBuilder_;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }
  
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:MumbleProto.UserList)
      }
  
      // @@protoc_insertion_point(class_scope:MumbleProto.UserList)
      private static final com.morlunk.jumble.protobuf.Mumble.UserList DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.morlunk.jumble.protobuf.Mumble.UserList();
      }
  
      public static com.morlunk.jumble.protobuf.Mumble.UserList getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      @java.lang.Deprecated public static final com.google.protobuf.Parser<UserList>
          PARSER = new com.google.protobuf.AbstractParser<UserList>() {
        public UserList parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return new UserList(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<UserList> parser() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.google.protobuf.Parser<UserList> getParserForType() {
        return PARSER;
      }
  
      public com.morlunk.jumble.protobuf.Mumble.UserList getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface VoiceTargetOrBuilder extends
        // @@protoc_insertion_point(interface_extends:MumbleProto.VoiceTarget)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <code>optional uint32 id = 1;</code>
       */
      boolean hasId();
      /**
       * <code>optional uint32 id = 1;</code>
       */
      int getId();
  
      /**
       * <code>repeated .MumbleProto.VoiceTarget.Target targets = 2;</code>
       */
      java.util.List<com.morlunk.jumble.protobuf.Mumble.VoiceTarget.Target> 
          getTargetsList();
      /**
       * <code>repeated .MumbleProto.VoiceTarget.Target targets = 2;</code>
       */
      com.morlunk.jumble.protobuf.Mumble.VoiceTarget.Target getTargets(int index);
      /**
       * <code>repeated .MumbleProto.VoiceTarget.Target targets = 2;</code>
       */
      int getTargetsCount();
      /**
       * <code>repeated .MumbleProto.VoiceTarget.Target targets = 2;</code>
       */
      java.util.List<? extends com.morlunk.jumble.protobuf.Mumble.VoiceTarget.TargetOrBuilder> 
          getTargetsOrBuilderList();
      /**
       * <code>repeated .MumbleProto.VoiceTarget.Target targets = 2;</code>
       */
      com.morlunk.jumble.protobuf.Mumble.VoiceTarget.TargetOrBuilder getTargetsOrBuilder(
          int index);
    }
    /**
     * Protobuf type {@code MumbleProto.VoiceTarget}
     */
    public  static final class VoiceTarget extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:MumbleProto.VoiceTarget)
        VoiceTargetOrBuilder {
      // Use VoiceTarget.newBuilder() to construct.
      private VoiceTarget(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private VoiceTarget() {
        id_ = 0;
        targets_ = java.util.Collections.emptyList();
      }
  
      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private VoiceTarget(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        int mutable_bitField0_ = 0;
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder();
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              default: {
                if (!parseUnknownField(input, unknownFields,
                                       extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 8: {
                bitField0_ |= 0x00000001;
                id_ = input.readUInt32();
                break;
              }
              case 18: {
                if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                  targets_ = new java.util.ArrayList<com.morlunk.jumble.protobuf.Mumble.VoiceTarget.Target>();
                  mutable_bitField0_ |= 0x00000002;
                }
                targets_.add(
                    input.readMessage(com.morlunk.jumble.protobuf.Mumble.VoiceTarget.Target.PARSER, extensionRegistry));
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
            targets_ = java.util.Collections.unmodifiableList(targets_);
          }
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_VoiceTarget_descriptor;
      }
  
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_VoiceTarget_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.morlunk.jumble.protobuf.Mumble.VoiceTarget.class, com.morlunk.jumble.protobuf.Mumble.VoiceTarget.Builder.class);
      }
  
      public interface TargetOrBuilder extends
          // @@protoc_insertion_point(interface_extends:MumbleProto.VoiceTarget.Target)
          com.google.protobuf.MessageOrBuilder {
  
        /**
         * <code>repeated uint32 session = 1;</code>
         */
        java.util.List<java.lang.Integer> getSessionList();
        /**
         * <code>repeated uint32 session = 1;</code>
         */
        int getSessionCount();
        /**
         * <code>repeated uint32 session = 1;</code>
         */
        int getSession(int index);
  
        /**
         * <code>optional uint32 channel_id = 2;</code>
         */
        boolean hasChannelId();
        /**
         * <code>optional uint32 channel_id = 2;</code>
         */
        int getChannelId();
  
        /**
         * <code>optional string group = 3;</code>
         */
        boolean hasGroup();
        /**
         * <code>optional string group = 3;</code>
         */
        java.lang.String getGroup();
        /**
         * <code>optional string group = 3;</code>
         */
        com.google.protobuf.ByteString
            getGroupBytes();
  
        /**
         * <code>optional bool links = 4 [default = false];</code>
         */
        boolean hasLinks();
        /**
         * <code>optional bool links = 4 [default = false];</code>
         */
        boolean getLinks();
  
        /**
         * <code>optional bool children = 5 [default = false];</code>
         */
        boolean hasChildren();
        /**
         * <code>optional bool children = 5 [default = false];</code>
         */
        boolean getChildren();
      }
      /**
       * Protobuf type {@code MumbleProto.VoiceTarget.Target}
       */
      public  static final class Target extends
          com.google.protobuf.GeneratedMessageV3 implements
          // @@protoc_insertion_point(message_implements:MumbleProto.VoiceTarget.Target)
          TargetOrBuilder {
        // Use Target.newBuilder() to construct.
        private Target(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
          super(builder);
        }
        private Target() {
          session_ = java.util.Collections.emptyList();
          channelId_ = 0;
          group_ = "";
          links_ = false;
          children_ = false;
        }
  
        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
          return this.unknownFields;
        }
        private Target(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          this();
          int mutable_bitField0_ = 0;
          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
              com.google.protobuf.UnknownFieldSet.newBuilder();
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                default: {
                  if (!parseUnknownField(input, unknownFields,
                                         extensionRegistry, tag)) {
                    done = true;
                  }
                  break;
                }
                case 8: {
                  if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                    session_ = new java.util.ArrayList<java.lang.Integer>();
                    mutable_bitField0_ |= 0x00000001;
                  }
                  session_.add(input.readUInt32());
                  break;
                }
                case 10: {
                  int length = input.readRawVarint32();
                  int limit = input.pushLimit(length);
                  if (!((mutable_bitField0_ & 0x00000001) == 0x00000001) && input.getBytesUntilLimit() > 0) {
                    session_ = new java.util.ArrayList<java.lang.Integer>();
                    mutable_bitField0_ |= 0x00000001;
                  }
                  while (input.getBytesUntilLimit() > 0) {
                    session_.add(input.readUInt32());
                  }
                  input.popLimit(limit);
                  break;
                }
                case 16: {
                  bitField0_ |= 0x00000001;
                  channelId_ = input.readUInt32();
                  break;
                }
                case 26: {
                  com.google.protobuf.ByteString bs = input.readBytes();
                  bitField0_ |= 0x00000002;
                  group_ = bs;
                  break;
                }
                case 32: {
                  bitField0_ |= 0x00000004;
                  links_ = input.readBool();
                  break;
                }
                case 40: {
                  bitField0_ |= 0x00000008;
                  children_ = input.readBool();
                  break;
                }
              }
            }
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(this);
          } catch (java.io.IOException e) {
            throw new com.google.protobuf.InvalidProtocolBufferException(
                e).setUnfinishedMessage(this);
          } finally {
            if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
              session_ = java.util.Collections.unmodifiableList(session_);
            }
            this.unknownFields = unknownFields.build();
            makeExtensionsImmutable();
          }
        }
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_VoiceTarget_Target_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_VoiceTarget_Target_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.morlunk.jumble.protobuf.Mumble.VoiceTarget.Target.class, com.morlunk.jumble.protobuf.Mumble.VoiceTarget.Target.Builder.class);
        }
  
        private int bitField0_;
        public static final int SESSION_FIELD_NUMBER = 1;
        private java.util.List<java.lang.Integer> session_;
        /**
         * <code>repeated uint32 session = 1;</code>
         */
        public java.util.List<java.lang.Integer>
            getSessionList() {
          return session_;
        }
        /**
         * <code>repeated uint32 session = 1;</code>
         */
        public int getSessionCount() {
          return session_.size();
        }
        /**
         * <code>repeated uint32 session = 1;</code>
         */
        public int getSession(int index) {
          return session_.get(index);
        }
  
        public static final int CHANNEL_ID_FIELD_NUMBER = 2;
        private int channelId_;
        /**
         * <code>optional uint32 channel_id = 2;</code>
         */
        public boolean hasChannelId() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <code>optional uint32 channel_id = 2;</code>
         */
        public int getChannelId() {
          return channelId_;
        }
  
        public static final int GROUP_FIELD_NUMBER = 3;
        private volatile java.lang.Object group_;
        /**
         * <code>optional string group = 3;</code>
         */
        public boolean hasGroup() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * <code>optional string group = 3;</code>
         */
        public java.lang.String getGroup() {
          java.lang.Object ref = group_;
          if (ref instanceof java.lang.String) {
            return (java.lang.String) ref;
          } else {
            com.google.protobuf.ByteString bs = 
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            if (bs.isValidUtf8()) {
              group_ = s;
            }
            return s;
          }
        }
        /**
         * <code>optional string group = 3;</code>
         */
        public com.google.protobuf.ByteString
            getGroupBytes() {
          java.lang.Object ref = group_;
          if (ref instanceof java.lang.String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            group_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
  
        public static final int LINKS_FIELD_NUMBER = 4;
        private boolean links_;
        /**
         * <code>optional bool links = 4 [default = false];</code>
         */
        public boolean hasLinks() {
          return ((bitField0_ & 0x00000004) == 0x00000004);
        }
        /**
         * <code>optional bool links = 4 [default = false];</code>
         */
        public boolean getLinks() {
          return links_;
        }
  
        public static final int CHILDREN_FIELD_NUMBER = 5;
        private boolean children_;
        /**
         * <code>optional bool children = 5 [default = false];</code>
         */
        public boolean hasChildren() {
          return ((bitField0_ & 0x00000008) == 0x00000008);
        }
        /**
         * <code>optional bool children = 5 [default = false];</code>
         */
        public boolean getChildren() {
          return children_;
        }
  
        private byte memoizedIsInitialized = -1;
        public final boolean isInitialized() {
          byte isInitialized = memoizedIsInitialized;
          if (isInitialized == 1) return true;
          if (isInitialized == 0) return false;
  
          memoizedIsInitialized = 1;
          return true;
        }
  
        public void writeTo(com.google.protobuf.CodedOutputStream output)
                            throws java.io.IOException {
          for (int i = 0; i < session_.size(); i++) {
            output.writeUInt32(1, session_.get(i));
          }
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            output.writeUInt32(2, channelId_);
          }
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            com.google.protobuf.GeneratedMessageV3.writeString(output, 3, group_);
          }
          if (((bitField0_ & 0x00000004) == 0x00000004)) {
            output.writeBool(4, links_);
          }
          if (((bitField0_ & 0x00000008) == 0x00000008)) {
            output.writeBool(5, children_);
          }
          unknownFields.writeTo(output);
        }
  
        public int getSerializedSize() {
          int size = memoizedSize;
          if (size != -1) return size;
  
          size = 0;
          {
            int dataSize = 0;
            for (int i = 0; i < session_.size(); i++) {
              dataSize += com.google.protobuf.CodedOutputStream
                .computeUInt32SizeNoTag(session_.get(i));
            }
            size += dataSize;
            size += 1 * getSessionList().size();
          }
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(2, channelId_);
          }
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, group_);
          }
          if (((bitField0_ & 0x00000004) == 0x00000004)) {
            size += com.google.protobuf.CodedOutputStream
              .computeBoolSize(4, links_);
          }
          if (((bitField0_ & 0x00000008) == 0x00000008)) {
            size += com.google.protobuf.CodedOutputStream
              .computeBoolSize(5, children_);
          }
          size += unknownFields.getSerializedSize();
          memoizedSize = size;
          return size;
        }
  
        private static final long serialVersionUID = 0L;
        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
          if (obj == this) {
           return true;
          }
          if (!(obj instanceof com.morlunk.jumble.protobuf.Mumble.VoiceTarget.Target)) {
            return super.equals(obj);
          }
          com.morlunk.jumble.protobuf.Mumble.VoiceTarget.Target other = (com.morlunk.jumble.protobuf.Mumble.VoiceTarget.Target) obj;
  
          boolean result = true;
          result = result && getSessionList()
              .equals(other.getSessionList());
          result = result && (hasChannelId() == other.hasChannelId());
          if (hasChannelId()) {
            result = result && (getChannelId()
                == other.getChannelId());
          }
          result = result && (hasGroup() == other.hasGroup());
          if (hasGroup()) {
            result = result && getGroup()
                .equals(other.getGroup());
          }
          result = result && (hasLinks() == other.hasLinks());
          if (hasLinks()) {
            result = result && (getLinks()
                == other.getLinks());
          }
          result = result && (hasChildren() == other.hasChildren());
          if (hasChildren()) {
            result = result && (getChildren()
                == other.getChildren());
          }
          result = result && unknownFields.equals(other.unknownFields);
          return result;
        }
  
        @java.lang.Override
        public int hashCode() {
          if (memoizedHashCode != 0) {
            return memoizedHashCode;
          }
          int hash = 41;
          hash = (19 * hash) + getDescriptorForType().hashCode();
          if (getSessionCount() > 0) {
            hash = (37 * hash) + SESSION_FIELD_NUMBER;
            hash = (53 * hash) + getSessionList().hashCode();
          }
          if (hasChannelId()) {
            hash = (37 * hash) + CHANNEL_ID_FIELD_NUMBER;
            hash = (53 * hash) + getChannelId();
          }
          if (hasGroup()) {
            hash = (37 * hash) + GROUP_FIELD_NUMBER;
            hash = (53 * hash) + getGroup().hashCode();
          }
          if (hasLinks()) {
            hash = (37 * hash) + LINKS_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
                getLinks());
          }
          if (hasChildren()) {
            hash = (37 * hash) + CHILDREN_FIELD_NUMBER;
            hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
                getChildren());
          }
          hash = (29 * hash) + unknownFields.hashCode();
          memoizedHashCode = hash;
          return hash;
        }
  
        public static com.morlunk.jumble.protobuf.Mumble.VoiceTarget.Target parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static com.morlunk.jumble.protobuf.Mumble.VoiceTarget.Target parseFrom(
            com.google.protobuf.ByteString data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.morlunk.jumble.protobuf.Mumble.VoiceTarget.Target parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static com.morlunk.jumble.protobuf.Mumble.VoiceTarget.Target parseFrom(
            byte[] data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.morlunk.jumble.protobuf.Mumble.VoiceTarget.Target parseFrom(java.io.InputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input);
        }
        public static com.morlunk.jumble.protobuf.Mumble.VoiceTarget.Target parseFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.morlunk.jumble.protobuf.Mumble.VoiceTarget.Target parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseDelimitedWithIOException(PARSER, input);
        }
        public static com.morlunk.jumble.protobuf.Mumble.VoiceTarget.Target parseDelimitedFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.morlunk.jumble.protobuf.Mumble.VoiceTarget.Target parseFrom(
            com.google.protobuf.CodedInputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input);
        }
        public static com.morlunk.jumble.protobuf.Mumble.VoiceTarget.Target parseFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input, extensionRegistry);
        }
  
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder() {
          return DEFAULT_INSTANCE.toBuilder();
        }
        public static Builder newBuilder(com.morlunk.jumble.protobuf.Mumble.VoiceTarget.Target prototype) {
          return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }
        public Builder toBuilder() {
          return this == DEFAULT_INSTANCE
              ? new Builder() : new Builder().mergeFrom(this);
        }
  
        @java.lang.Override
        protected Builder newBuilderForType(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          Builder builder = new Builder(parent);
          return builder;
        }
        /**
         * Protobuf type {@code MumbleProto.VoiceTarget.Target}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
            // @@protoc_insertion_point(builder_implements:MumbleProto.VoiceTarget.Target)
            com.morlunk.jumble.protobuf.Mumble.VoiceTarget.TargetOrBuilder {
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_VoiceTarget_Target_descriptor;
          }
  
          protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_VoiceTarget_Target_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    com.morlunk.jumble.protobuf.Mumble.VoiceTarget.Target.class, com.morlunk.jumble.protobuf.Mumble.VoiceTarget.Target.Builder.class);
          }
  
          // Construct using com.morlunk.jumble.protobuf.Mumble.VoiceTarget.Target.newBuilder()
          private Builder() {
            maybeForceBuilderInitialization();
          }
  
          private Builder(
              com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            super(parent);
            maybeForceBuilderInitialization();
          }
          private void maybeForceBuilderInitialization() {
            if (com.google.protobuf.GeneratedMessageV3
                    .alwaysUseFieldBuilders) {
            }
          }
          public Builder clear() {
            super.clear();
            session_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000001);
            channelId_ = 0;
            bitField0_ = (bitField0_ & ~0x00000002);
            group_ = "";
            bitField0_ = (bitField0_ & ~0x00000004);
            links_ = false;
            bitField0_ = (bitField0_ & ~0x00000008);
            children_ = false;
            bitField0_ = (bitField0_ & ~0x00000010);
            return this;
          }
  
          public com.google.protobuf.Descriptors.Descriptor
              getDescriptorForType() {
            return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_VoiceTarget_Target_descriptor;
          }
  
          public com.morlunk.jumble.protobuf.Mumble.VoiceTarget.Target getDefaultInstanceForType() {
            return com.morlunk.jumble.protobuf.Mumble.VoiceTarget.Target.getDefaultInstance();
          }
  
          public com.morlunk.jumble.protobuf.Mumble.VoiceTarget.Target build() {
            com.morlunk.jumble.protobuf.Mumble.VoiceTarget.Target result = buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(result);
            }
            return result;
          }
  
          public com.morlunk.jumble.protobuf.Mumble.VoiceTarget.Target buildPartial() {
            com.morlunk.jumble.protobuf.Mumble.VoiceTarget.Target result = new com.morlunk.jumble.protobuf.Mumble.VoiceTarget.Target(this);
            int from_bitField0_ = bitField0_;
            int to_bitField0_ = 0;
            if (((bitField0_ & 0x00000001) == 0x00000001)) {
              session_ = java.util.Collections.unmodifiableList(session_);
              bitField0_ = (bitField0_ & ~0x00000001);
            }
            result.session_ = session_;
            if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
              to_bitField0_ |= 0x00000001;
            }
            result.channelId_ = channelId_;
            if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
              to_bitField0_ |= 0x00000002;
            }
            result.group_ = group_;
            if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
              to_bitField0_ |= 0x00000004;
            }
            result.links_ = links_;
            if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
              to_bitField0_ |= 0x00000008;
            }
            result.children_ = children_;
            result.bitField0_ = to_bitField0_;
            onBuilt();
            return result;
          }
  
          public Builder clone() {
            return (Builder) super.clone();
          }
          public Builder setField(
              com.google.protobuf.Descriptors.FieldDescriptor field,
              Object value) {
            return (Builder) super.setField(field, value);
          }
          public Builder clearField(
              com.google.protobuf.Descriptors.FieldDescriptor field) {
            return (Builder) super.clearField(field);
          }
          public Builder clearOneof(
              com.google.protobuf.Descriptors.OneofDescriptor oneof) {
            return (Builder) super.clearOneof(oneof);
          }
          public Builder setRepeatedField(
              com.google.protobuf.Descriptors.FieldDescriptor field,
              int index, Object value) {
            return (Builder) super.setRepeatedField(field, index, value);
          }
          public Builder addRepeatedField(
              com.google.protobuf.Descriptors.FieldDescriptor field,
              Object value) {
            return (Builder) super.addRepeatedField(field, value);
          }
          public Builder mergeFrom(com.google.protobuf.Message other) {
            if (other instanceof com.morlunk.jumble.protobuf.Mumble.VoiceTarget.Target) {
              return mergeFrom((com.morlunk.jumble.protobuf.Mumble.VoiceTarget.Target)other);
            } else {
              super.mergeFrom(other);
              return this;
            }
          }
  
          public Builder mergeFrom(com.morlunk.jumble.protobuf.Mumble.VoiceTarget.Target other) {
            if (other == com.morlunk.jumble.protobuf.Mumble.VoiceTarget.Target.getDefaultInstance()) return this;
            if (!other.session_.isEmpty()) {
              if (session_.isEmpty()) {
                session_ = other.session_;
                bitField0_ = (bitField0_ & ~0x00000001);
              } else {
                ensureSessionIsMutable();
                session_.addAll(other.session_);
              }
              onChanged();
            }
            if (other.hasChannelId()) {
              setChannelId(other.getChannelId());
            }
            if (other.hasGroup()) {
              bitField0_ |= 0x00000004;
              group_ = other.group_;
              onChanged();
            }
            if (other.hasLinks()) {
              setLinks(other.getLinks());
            }
            if (other.hasChildren()) {
              setChildren(other.getChildren());
            }
            this.mergeUnknownFields(other.unknownFields);
            onChanged();
            return this;
          }
  
          public final boolean isInitialized() {
            return true;
          }
  
          public Builder mergeFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            com.morlunk.jumble.protobuf.Mumble.VoiceTarget.Target parsedMessage = null;
            try {
              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              parsedMessage = (com.morlunk.jumble.protobuf.Mumble.VoiceTarget.Target) e.getUnfinishedMessage();
              throw e.unwrapIOException();
            } finally {
              if (parsedMessage != null) {
                mergeFrom(parsedMessage);
              }
            }
            return this;
          }
          private int bitField0_;
  
          private java.util.List<java.lang.Integer> session_ = java.util.Collections.emptyList();
          private void ensureSessionIsMutable() {
            if (!((bitField0_ & 0x00000001) == 0x00000001)) {
              session_ = new java.util.ArrayList<java.lang.Integer>(session_);
              bitField0_ |= 0x00000001;
             }
          }
          /**
           * <code>repeated uint32 session = 1;</code>
           */
          public java.util.List<java.lang.Integer>
              getSessionList() {
            return java.util.Collections.unmodifiableList(session_);
          }
          /**
           * <code>repeated uint32 session = 1;</code>
           */
          public int getSessionCount() {
            return session_.size();
          }
          /**
           * <code>repeated uint32 session = 1;</code>
           */
          public int getSession(int index) {
            return session_.get(index);
          }
          /**
           * <code>repeated uint32 session = 1;</code>
           */
          public Builder setSession(
              int index, int value) {
            ensureSessionIsMutable();
            session_.set(index, value);
            onChanged();
            return this;
          }
          /**
           * <code>repeated uint32 session = 1;</code>
           */
          public Builder addSession(int value) {
            ensureSessionIsMutable();
            session_.add(value);
            onChanged();
            return this;
          }
          /**
           * <code>repeated uint32 session = 1;</code>
           */
          public Builder addAllSession(
              java.lang.Iterable<? extends java.lang.Integer> values) {
            ensureSessionIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, session_);
            onChanged();
            return this;
          }
          /**
           * <code>repeated uint32 session = 1;</code>
           */
          public Builder clearSession() {
            session_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000001);
            onChanged();
            return this;
          }
  
          private int channelId_ ;
          /**
           * <code>optional uint32 channel_id = 2;</code>
           */
          public boolean hasChannelId() {
            return ((bitField0_ & 0x00000002) == 0x00000002);
          }
          /**
           * <code>optional uint32 channel_id = 2;</code>
           */
          public int getChannelId() {
            return channelId_;
          }
          /**
           * <code>optional uint32 channel_id = 2;</code>
           */
          public Builder setChannelId(int value) {
            bitField0_ |= 0x00000002;
            channelId_ = value;
            onChanged();
            return this;
          }
          /**
           * <code>optional uint32 channel_id = 2;</code>
           */
          public Builder clearChannelId() {
            bitField0_ = (bitField0_ & ~0x00000002);
            channelId_ = 0;
            onChanged();
            return this;
          }
  
          private java.lang.Object group_ = "";
          /**
           * <code>optional string group = 3;</code>
           */
          public boolean hasGroup() {
            return ((bitField0_ & 0x00000004) == 0x00000004);
          }
          /**
           * <code>optional string group = 3;</code>
           */
          public java.lang.String getGroup() {
            java.lang.Object ref = group_;
            if (!(ref instanceof java.lang.String)) {
              com.google.protobuf.ByteString bs =
                  (com.google.protobuf.ByteString) ref;
              java.lang.String s = bs.toStringUtf8();
              if (bs.isValidUtf8()) {
                group_ = s;
              }
              return s;
            } else {
              return (java.lang.String) ref;
            }
          }
          /**
           * <code>optional string group = 3;</code>
           */
          public com.google.protobuf.ByteString
              getGroupBytes() {
            java.lang.Object ref = group_;
            if (ref instanceof String) {
              com.google.protobuf.ByteString b = 
                  com.google.protobuf.ByteString.copyFromUtf8(
                      (java.lang.String) ref);
              group_ = b;
              return b;
            } else {
              return (com.google.protobuf.ByteString) ref;
            }
          }
          /**
           * <code>optional string group = 3;</code>
           */
          public Builder setGroup(
              java.lang.String value) {
            if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000004;
            group_ = value;
            onChanged();
            return this;
          }
          /**
           * <code>optional string group = 3;</code>
           */
          public Builder clearGroup() {
            bitField0_ = (bitField0_ & ~0x00000004);
            group_ = getDefaultInstance().getGroup();
            onChanged();
            return this;
          }
          /**
           * <code>optional string group = 3;</code>
           */
          public Builder setGroupBytes(
              com.google.protobuf.ByteString value) {
            if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00000004;
            group_ = value;
            onChanged();
            return this;
          }
  
          private boolean links_ ;
          /**
           * <code>optional bool links = 4 [default = false];</code>
           */
          public boolean hasLinks() {
            return ((bitField0_ & 0x00000008) == 0x00000008);
          }
          /**
           * <code>optional bool links = 4 [default = false];</code>
           */
          public boolean getLinks() {
            return links_;
          }
          /**
           * <code>optional bool links = 4 [default = false];</code>
           */
          public Builder setLinks(boolean value) {
            bitField0_ |= 0x00000008;
            links_ = value;
            onChanged();
            return this;
          }
          /**
           * <code>optional bool links = 4 [default = false];</code>
           */
          public Builder clearLinks() {
            bitField0_ = (bitField0_ & ~0x00000008);
            links_ = false;
            onChanged();
            return this;
          }
  
          private boolean children_ ;
          /**
           * <code>optional bool children = 5 [default = false];</code>
           */
          public boolean hasChildren() {
            return ((bitField0_ & 0x00000010) == 0x00000010);
          }
          /**
           * <code>optional bool children = 5 [default = false];</code>
           */
          public boolean getChildren() {
            return children_;
          }
          /**
           * <code>optional bool children = 5 [default = false];</code>
           */
          public Builder setChildren(boolean value) {
            bitField0_ |= 0x00000010;
            children_ = value;
            onChanged();
            return this;
          }
          /**
           * <code>optional bool children = 5 [default = false];</code>
           */
          public Builder clearChildren() {
            bitField0_ = (bitField0_ & ~0x00000010);
            children_ = false;
            onChanged();
            return this;
          }
          public final Builder setUnknownFields(
              final com.google.protobuf.UnknownFieldSet unknownFields) {
            return super.setUnknownFields(unknownFields);
          }
  
          public final Builder mergeUnknownFields(
              final com.google.protobuf.UnknownFieldSet unknownFields) {
            return super.mergeUnknownFields(unknownFields);
          }
  
  
          // @@protoc_insertion_point(builder_scope:MumbleProto.VoiceTarget.Target)
        }
  
        // @@protoc_insertion_point(class_scope:MumbleProto.VoiceTarget.Target)
        private static final com.morlunk.jumble.protobuf.Mumble.VoiceTarget.Target DEFAULT_INSTANCE;
        static {
          DEFAULT_INSTANCE = new com.morlunk.jumble.protobuf.Mumble.VoiceTarget.Target();
        }
  
        public static com.morlunk.jumble.protobuf.Mumble.VoiceTarget.Target getDefaultInstance() {
          return DEFAULT_INSTANCE;
        }
  
        @java.lang.Deprecated public static final com.google.protobuf.Parser<Target>
            PARSER = new com.google.protobuf.AbstractParser<Target>() {
          public Target parsePartialFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
              return new Target(input, extensionRegistry);
          }
        };
  
        public static com.google.protobuf.Parser<Target> parser() {
          return PARSER;
        }
  
        @java.lang.Override
        public com.google.protobuf.Parser<Target> getParserForType() {
          return PARSER;
        }
  
        public com.morlunk.jumble.protobuf.Mumble.VoiceTarget.Target getDefaultInstanceForType() {
          return DEFAULT_INSTANCE;
        }
  
      }
  
      private int bitField0_;
      public static final int ID_FIELD_NUMBER = 1;
      private int id_;
      /**
       * <code>optional uint32 id = 1;</code>
       */
      public boolean hasId() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>optional uint32 id = 1;</code>
       */
      public int getId() {
        return id_;
      }
  
      public static final int TARGETS_FIELD_NUMBER = 2;
      private java.util.List<com.morlunk.jumble.protobuf.Mumble.VoiceTarget.Target> targets_;
      /**
       * <code>repeated .MumbleProto.VoiceTarget.Target targets = 2;</code>
       */
      public java.util.List<com.morlunk.jumble.protobuf.Mumble.VoiceTarget.Target> getTargetsList() {
        return targets_;
      }
      /**
       * <code>repeated .MumbleProto.VoiceTarget.Target targets = 2;</code>
       */
      public java.util.List<? extends com.morlunk.jumble.protobuf.Mumble.VoiceTarget.TargetOrBuilder> 
          getTargetsOrBuilderList() {
        return targets_;
      }
      /**
       * <code>repeated .MumbleProto.VoiceTarget.Target targets = 2;</code>
       */
      public int getTargetsCount() {
        return targets_.size();
      }
      /**
       * <code>repeated .MumbleProto.VoiceTarget.Target targets = 2;</code>
       */
      public com.morlunk.jumble.protobuf.Mumble.VoiceTarget.Target getTargets(int index) {
        return targets_.get(index);
      }
      /**
       * <code>repeated .MumbleProto.VoiceTarget.Target targets = 2;</code>
       */
      public com.morlunk.jumble.protobuf.Mumble.VoiceTarget.TargetOrBuilder getTargetsOrBuilder(
          int index) {
        return targets_.get(index);
      }
  
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        memoizedIsInitialized = 1;
        return true;
      }
  
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeUInt32(1, id_);
        }
        for (int i = 0; i < targets_.size(); i++) {
          output.writeMessage(2, targets_.get(i));
        }
        unknownFields.writeTo(output);
      }
  
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(1, id_);
        }
        for (int i = 0; i < targets_.size(); i++) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, targets_.get(i));
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }
  
      private static final long serialVersionUID = 0L;
      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.morlunk.jumble.protobuf.Mumble.VoiceTarget)) {
          return super.equals(obj);
        }
        com.morlunk.jumble.protobuf.Mumble.VoiceTarget other = (com.morlunk.jumble.protobuf.Mumble.VoiceTarget) obj;
  
        boolean result = true;
        result = result && (hasId() == other.hasId());
        if (hasId()) {
          result = result && (getId()
              == other.getId());
        }
        result = result && getTargetsList()
            .equals(other.getTargetsList());
        result = result && unknownFields.equals(other.unknownFields);
        return result;
      }
  
      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptorForType().hashCode();
        if (hasId()) {
          hash = (37 * hash) + ID_FIELD_NUMBER;
          hash = (53 * hash) + getId();
        }
        if (getTargetsCount() > 0) {
          hash = (37 * hash) + TARGETS_FIELD_NUMBER;
          hash = (53 * hash) + getTargetsList().hashCode();
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static com.morlunk.jumble.protobuf.Mumble.VoiceTarget parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.morlunk.jumble.protobuf.Mumble.VoiceTarget parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.VoiceTarget parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.morlunk.jumble.protobuf.Mumble.VoiceTarget parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.VoiceTarget parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.morlunk.jumble.protobuf.Mumble.VoiceTarget parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.VoiceTarget parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.morlunk.jumble.protobuf.Mumble.VoiceTarget parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.VoiceTarget parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.morlunk.jumble.protobuf.Mumble.VoiceTarget parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
  
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(com.morlunk.jumble.protobuf.Mumble.VoiceTarget prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }
  
      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code MumbleProto.VoiceTarget}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:MumbleProto.VoiceTarget)
          com.morlunk.jumble.protobuf.Mumble.VoiceTargetOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_VoiceTarget_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_VoiceTarget_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.morlunk.jumble.protobuf.Mumble.VoiceTarget.class, com.morlunk.jumble.protobuf.Mumble.VoiceTarget.Builder.class);
        }
  
        // Construct using com.morlunk.jumble.protobuf.Mumble.VoiceTarget.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
  
        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
            getTargetsFieldBuilder();
          }
        }
        public Builder clear() {
          super.clear();
          id_ = 0;
          bitField0_ = (bitField0_ & ~0x00000001);
          if (targetsBuilder_ == null) {
            targets_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            targetsBuilder_.clear();
          }
          return this;
        }
  
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_VoiceTarget_descriptor;
        }
  
        public com.morlunk.jumble.protobuf.Mumble.VoiceTarget getDefaultInstanceForType() {
          return com.morlunk.jumble.protobuf.Mumble.VoiceTarget.getDefaultInstance();
        }
  
        public com.morlunk.jumble.protobuf.Mumble.VoiceTarget build() {
          com.morlunk.jumble.protobuf.Mumble.VoiceTarget result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        public com.morlunk.jumble.protobuf.Mumble.VoiceTarget buildPartial() {
          com.morlunk.jumble.protobuf.Mumble.VoiceTarget result = new com.morlunk.jumble.protobuf.Mumble.VoiceTarget(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.id_ = id_;
          if (targetsBuilder_ == null) {
            if (((bitField0_ & 0x00000002) == 0x00000002)) {
              targets_ = java.util.Collections.unmodifiableList(targets_);
              bitField0_ = (bitField0_ & ~0x00000002);
            }
            result.targets_ = targets_;
          } else {
            result.targets_ = targetsBuilder_.build();
          }
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
  
        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.setField(field, value);
        }
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return (Builder) super.clearField(field);
        }
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return (Builder) super.clearOneof(oneof);
        }
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.morlunk.jumble.protobuf.Mumble.VoiceTarget) {
            return mergeFrom((com.morlunk.jumble.protobuf.Mumble.VoiceTarget)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(com.morlunk.jumble.protobuf.Mumble.VoiceTarget other) {
          if (other == com.morlunk.jumble.protobuf.Mumble.VoiceTarget.getDefaultInstance()) return this;
          if (other.hasId()) {
            setId(other.getId());
          }
          if (targetsBuilder_ == null) {
            if (!other.targets_.isEmpty()) {
              if (targets_.isEmpty()) {
                targets_ = other.targets_;
                bitField0_ = (bitField0_ & ~0x00000002);
              } else {
                ensureTargetsIsMutable();
                targets_.addAll(other.targets_);
              }
              onChanged();
            }
          } else {
            if (!other.targets_.isEmpty()) {
              if (targetsBuilder_.isEmpty()) {
                targetsBuilder_.dispose();
                targetsBuilder_ = null;
                targets_ = other.targets_;
                bitField0_ = (bitField0_ & ~0x00000002);
                targetsBuilder_ = 
                  com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                     getTargetsFieldBuilder() : null;
              } else {
                targetsBuilder_.addAllMessages(other.targets_);
              }
            }
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }
  
        public final boolean isInitialized() {
          return true;
        }
  
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.morlunk.jumble.protobuf.Mumble.VoiceTarget parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (com.morlunk.jumble.protobuf.Mumble.VoiceTarget) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;
  
        private int id_ ;
        /**
         * <code>optional uint32 id = 1;</code>
         */
        public boolean hasId() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <code>optional uint32 id = 1;</code>
         */
        public int getId() {
          return id_;
        }
        /**
         * <code>optional uint32 id = 1;</code>
         */
        public Builder setId(int value) {
          bitField0_ |= 0x00000001;
          id_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional uint32 id = 1;</code>
         */
        public Builder clearId() {
          bitField0_ = (bitField0_ & ~0x00000001);
          id_ = 0;
          onChanged();
          return this;
        }
  
        private java.util.List<com.morlunk.jumble.protobuf.Mumble.VoiceTarget.Target> targets_ =
          java.util.Collections.emptyList();
        private void ensureTargetsIsMutable() {
          if (!((bitField0_ & 0x00000002) == 0x00000002)) {
            targets_ = new java.util.ArrayList<com.morlunk.jumble.protobuf.Mumble.VoiceTarget.Target>(targets_);
            bitField0_ |= 0x00000002;
           }
        }
  
        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.morlunk.jumble.protobuf.Mumble.VoiceTarget.Target, com.morlunk.jumble.protobuf.Mumble.VoiceTarget.Target.Builder, com.morlunk.jumble.protobuf.Mumble.VoiceTarget.TargetOrBuilder> targetsBuilder_;
  
        /**
         * <code>repeated .MumbleProto.VoiceTarget.Target targets = 2;</code>
         */
        public java.util.List<com.morlunk.jumble.protobuf.Mumble.VoiceTarget.Target> getTargetsList() {
          if (targetsBuilder_ == null) {
            return java.util.Collections.unmodifiableList(targets_);
          } else {
            return targetsBuilder_.getMessageList();
          }
        }
        /**
         * <code>repeated .MumbleProto.VoiceTarget.Target targets = 2;</code>
         */
        public int getTargetsCount() {
          if (targetsBuilder_ == null) {
            return targets_.size();
          } else {
            return targetsBuilder_.getCount();
          }
        }
        /**
         * <code>repeated .MumbleProto.VoiceTarget.Target targets = 2;</code>
         */
        public com.morlunk.jumble.protobuf.Mumble.VoiceTarget.Target getTargets(int index) {
          if (targetsBuilder_ == null) {
            return targets_.get(index);
          } else {
            return targetsBuilder_.getMessage(index);
          }
        }
        /**
         * <code>repeated .MumbleProto.VoiceTarget.Target targets = 2;</code>
         */
        public Builder setTargets(
            int index, com.morlunk.jumble.protobuf.Mumble.VoiceTarget.Target value) {
          if (targetsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureTargetsIsMutable();
            targets_.set(index, value);
            onChanged();
          } else {
            targetsBuilder_.setMessage(index, value);
          }
          return this;
        }
        /**
         * <code>repeated .MumbleProto.VoiceTarget.Target targets = 2;</code>
         */
        public Builder setTargets(
            int index, com.morlunk.jumble.protobuf.Mumble.VoiceTarget.Target.Builder builderForValue) {
          if (targetsBuilder_ == null) {
            ensureTargetsIsMutable();
            targets_.set(index, builderForValue.build());
            onChanged();
          } else {
            targetsBuilder_.setMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .MumbleProto.VoiceTarget.Target targets = 2;</code>
         */
        public Builder addTargets(com.morlunk.jumble.protobuf.Mumble.VoiceTarget.Target value) {
          if (targetsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureTargetsIsMutable();
            targets_.add(value);
            onChanged();
          } else {
            targetsBuilder_.addMessage(value);
          }
          return this;
        }
        /**
         * <code>repeated .MumbleProto.VoiceTarget.Target targets = 2;</code>
         */
        public Builder addTargets(
            int index, com.morlunk.jumble.protobuf.Mumble.VoiceTarget.Target value) {
          if (targetsBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            ensureTargetsIsMutable();
            targets_.add(index, value);
            onChanged();
          } else {
            targetsBuilder_.addMessage(index, value);
          }
          return this;
        }
        /**
         * <code>repeated .MumbleProto.VoiceTarget.Target targets = 2;</code>
         */
        public Builder addTargets(
            com.morlunk.jumble.protobuf.Mumble.VoiceTarget.Target.Builder builderForValue) {
          if (targetsBuilder_ == null) {
            ensureTargetsIsMutable();
            targets_.add(builderForValue.build());
            onChanged();
          } else {
            targetsBuilder_.addMessage(builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .MumbleProto.VoiceTarget.Target targets = 2;</code>
         */
        public Builder addTargets(
            int index, com.morlunk.jumble.protobuf.Mumble.VoiceTarget.Target.Builder builderForValue) {
          if (targetsBuilder_ == null) {
            ensureTargetsIsMutable();
            targets_.add(index, builderForValue.build());
            onChanged();
          } else {
            targetsBuilder_.addMessage(index, builderForValue.build());
          }
          return this;
        }
        /**
         * <code>repeated .MumbleProto.VoiceTarget.Target targets = 2;</code>
         */
        public Builder addAllTargets(
            java.lang.Iterable<? extends com.morlunk.jumble.protobuf.Mumble.VoiceTarget.Target> values) {
          if (targetsBuilder_ == null) {
            ensureTargetsIsMutable();
            com.google.protobuf.AbstractMessageLite.Builder.addAll(
                values, targets_);
            onChanged();
          } else {
            targetsBuilder_.addAllMessages(values);
          }
          return this;
        }
        /**
         * <code>repeated .MumbleProto.VoiceTarget.Target targets = 2;</code>
         */
        public Builder clearTargets() {
          if (targetsBuilder_ == null) {
            targets_ = java.util.Collections.emptyList();
            bitField0_ = (bitField0_ & ~0x00000002);
            onChanged();
          } else {
            targetsBuilder_.clear();
          }
          return this;
        }
        /**
         * <code>repeated .MumbleProto.VoiceTarget.Target targets = 2;</code>
         */
        public Builder removeTargets(int index) {
          if (targetsBuilder_ == null) {
            ensureTargetsIsMutable();
            targets_.remove(index);
            onChanged();
          } else {
            targetsBuilder_.remove(index);
          }
          return this;
        }
        /**
         * <code>repeated .MumbleProto.VoiceTarget.Target targets = 2;</code>
         */
        public com.morlunk.jumble.protobuf.Mumble.VoiceTarget.Target.Builder getTargetsBuilder(
            int index) {
          return getTargetsFieldBuilder().getBuilder(index);
        }
        /**
         * <code>repeated .MumbleProto.VoiceTarget.Target targets = 2;</code>
         */
        public com.morlunk.jumble.protobuf.Mumble.VoiceTarget.TargetOrBuilder getTargetsOrBuilder(
            int index) {
          if (targetsBuilder_ == null) {
            return targets_.get(index);  } else {
            return targetsBuilder_.getMessageOrBuilder(index);
          }
        }
        /**
         * <code>repeated .MumbleProto.VoiceTarget.Target targets = 2;</code>
         */
        public java.util.List<? extends com.morlunk.jumble.protobuf.Mumble.VoiceTarget.TargetOrBuilder> 
             getTargetsOrBuilderList() {
          if (targetsBuilder_ != null) {
            return targetsBuilder_.getMessageOrBuilderList();
          } else {
            return java.util.Collections.unmodifiableList(targets_);
          }
        }
        /**
         * <code>repeated .MumbleProto.VoiceTarget.Target targets = 2;</code>
         */
        public com.morlunk.jumble.protobuf.Mumble.VoiceTarget.Target.Builder addTargetsBuilder() {
          return getTargetsFieldBuilder().addBuilder(
              com.morlunk.jumble.protobuf.Mumble.VoiceTarget.Target.getDefaultInstance());
        }
        /**
         * <code>repeated .MumbleProto.VoiceTarget.Target targets = 2;</code>
         */
        public com.morlunk.jumble.protobuf.Mumble.VoiceTarget.Target.Builder addTargetsBuilder(
            int index) {
          return getTargetsFieldBuilder().addBuilder(
              index, com.morlunk.jumble.protobuf.Mumble.VoiceTarget.Target.getDefaultInstance());
        }
        /**
         * <code>repeated .MumbleProto.VoiceTarget.Target targets = 2;</code>
         */
        public java.util.List<com.morlunk.jumble.protobuf.Mumble.VoiceTarget.Target.Builder> 
             getTargetsBuilderList() {
          return getTargetsFieldBuilder().getBuilderList();
        }
        private com.google.protobuf.RepeatedFieldBuilderV3<
            com.morlunk.jumble.protobuf.Mumble.VoiceTarget.Target, com.morlunk.jumble.protobuf.Mumble.VoiceTarget.Target.Builder, com.morlunk.jumble.protobuf.Mumble.VoiceTarget.TargetOrBuilder> 
            getTargetsFieldBuilder() {
          if (targetsBuilder_ == null) {
            targetsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
                com.morlunk.jumble.protobuf.Mumble.VoiceTarget.Target, com.morlunk.jumble.protobuf.Mumble.VoiceTarget.Target.Builder, com.morlunk.jumble.protobuf.Mumble.VoiceTarget.TargetOrBuilder>(
                    targets_,
                    ((bitField0_ & 0x00000002) == 0x00000002),
                    getParentForChildren(),
                    isClean());
            targets_ = null;
          }
          return targetsBuilder_;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }
  
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:MumbleProto.VoiceTarget)
      }
  
      // @@protoc_insertion_point(class_scope:MumbleProto.VoiceTarget)
      private static final com.morlunk.jumble.protobuf.Mumble.VoiceTarget DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.morlunk.jumble.protobuf.Mumble.VoiceTarget();
      }
  
      public static com.morlunk.jumble.protobuf.Mumble.VoiceTarget getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      @java.lang.Deprecated public static final com.google.protobuf.Parser<VoiceTarget>
          PARSER = new com.google.protobuf.AbstractParser<VoiceTarget>() {
        public VoiceTarget parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return new VoiceTarget(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<VoiceTarget> parser() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.google.protobuf.Parser<VoiceTarget> getParserForType() {
        return PARSER;
      }
  
      public com.morlunk.jumble.protobuf.Mumble.VoiceTarget getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface PermissionQueryOrBuilder extends
        // @@protoc_insertion_point(interface_extends:MumbleProto.PermissionQuery)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <code>optional uint32 channel_id = 1;</code>
       */
      boolean hasChannelId();
      /**
       * <code>optional uint32 channel_id = 1;</code>
       */
      int getChannelId();
  
      /**
       * <code>optional uint32 permissions = 2;</code>
       */
      boolean hasPermissions();
      /**
       * <code>optional uint32 permissions = 2;</code>
       */
      int getPermissions();
  
      /**
       * <code>optional bool flush = 3 [default = false];</code>
       */
      boolean hasFlush();
      /**
       * <code>optional bool flush = 3 [default = false];</code>
       */
      boolean getFlush();
    }
    /**
     * Protobuf type {@code MumbleProto.PermissionQuery}
     */
    public  static final class PermissionQuery extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:MumbleProto.PermissionQuery)
        PermissionQueryOrBuilder {
      // Use PermissionQuery.newBuilder() to construct.
      private PermissionQuery(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private PermissionQuery() {
        channelId_ = 0;
        permissions_ = 0;
        flush_ = false;
      }
  
      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private PermissionQuery(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        int mutable_bitField0_ = 0;
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder();
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              default: {
                if (!parseUnknownField(input, unknownFields,
                                       extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 8: {
                bitField0_ |= 0x00000001;
                channelId_ = input.readUInt32();
                break;
              }
              case 16: {
                bitField0_ |= 0x00000002;
                permissions_ = input.readUInt32();
                break;
              }
              case 24: {
                bitField0_ |= 0x00000004;
                flush_ = input.readBool();
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_PermissionQuery_descriptor;
      }
  
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_PermissionQuery_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.morlunk.jumble.protobuf.Mumble.PermissionQuery.class, com.morlunk.jumble.protobuf.Mumble.PermissionQuery.Builder.class);
      }
  
      private int bitField0_;
      public static final int CHANNEL_ID_FIELD_NUMBER = 1;
      private int channelId_;
      /**
       * <code>optional uint32 channel_id = 1;</code>
       */
      public boolean hasChannelId() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>optional uint32 channel_id = 1;</code>
       */
      public int getChannelId() {
        return channelId_;
      }
  
      public static final int PERMISSIONS_FIELD_NUMBER = 2;
      private int permissions_;
      /**
       * <code>optional uint32 permissions = 2;</code>
       */
      public boolean hasPermissions() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional uint32 permissions = 2;</code>
       */
      public int getPermissions() {
        return permissions_;
      }
  
      public static final int FLUSH_FIELD_NUMBER = 3;
      private boolean flush_;
      /**
       * <code>optional bool flush = 3 [default = false];</code>
       */
      public boolean hasFlush() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>optional bool flush = 3 [default = false];</code>
       */
      public boolean getFlush() {
        return flush_;
      }
  
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        memoizedIsInitialized = 1;
        return true;
      }
  
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeUInt32(1, channelId_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          output.writeUInt32(2, permissions_);
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          output.writeBool(3, flush_);
        }
        unknownFields.writeTo(output);
      }
  
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(1, channelId_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(2, permissions_);
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBoolSize(3, flush_);
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }
  
      private static final long serialVersionUID = 0L;
      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.morlunk.jumble.protobuf.Mumble.PermissionQuery)) {
          return super.equals(obj);
        }
        com.morlunk.jumble.protobuf.Mumble.PermissionQuery other = (com.morlunk.jumble.protobuf.Mumble.PermissionQuery) obj;
  
        boolean result = true;
        result = result && (hasChannelId() == other.hasChannelId());
        if (hasChannelId()) {
          result = result && (getChannelId()
              == other.getChannelId());
        }
        result = result && (hasPermissions() == other.hasPermissions());
        if (hasPermissions()) {
          result = result && (getPermissions()
              == other.getPermissions());
        }
        result = result && (hasFlush() == other.hasFlush());
        if (hasFlush()) {
          result = result && (getFlush()
              == other.getFlush());
        }
        result = result && unknownFields.equals(other.unknownFields);
        return result;
      }
  
      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptorForType().hashCode();
        if (hasChannelId()) {
          hash = (37 * hash) + CHANNEL_ID_FIELD_NUMBER;
          hash = (53 * hash) + getChannelId();
        }
        if (hasPermissions()) {
          hash = (37 * hash) + PERMISSIONS_FIELD_NUMBER;
          hash = (53 * hash) + getPermissions();
        }
        if (hasFlush()) {
          hash = (37 * hash) + FLUSH_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
              getFlush());
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static com.morlunk.jumble.protobuf.Mumble.PermissionQuery parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.morlunk.jumble.protobuf.Mumble.PermissionQuery parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.PermissionQuery parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.morlunk.jumble.protobuf.Mumble.PermissionQuery parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.PermissionQuery parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.morlunk.jumble.protobuf.Mumble.PermissionQuery parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.PermissionQuery parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.morlunk.jumble.protobuf.Mumble.PermissionQuery parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.PermissionQuery parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.morlunk.jumble.protobuf.Mumble.PermissionQuery parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
  
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(com.morlunk.jumble.protobuf.Mumble.PermissionQuery prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }
  
      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code MumbleProto.PermissionQuery}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:MumbleProto.PermissionQuery)
          com.morlunk.jumble.protobuf.Mumble.PermissionQueryOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_PermissionQuery_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_PermissionQuery_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.morlunk.jumble.protobuf.Mumble.PermissionQuery.class, com.morlunk.jumble.protobuf.Mumble.PermissionQuery.Builder.class);
        }
  
        // Construct using com.morlunk.jumble.protobuf.Mumble.PermissionQuery.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
  
        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
          }
        }
        public Builder clear() {
          super.clear();
          channelId_ = 0;
          bitField0_ = (bitField0_ & ~0x00000001);
          permissions_ = 0;
          bitField0_ = (bitField0_ & ~0x00000002);
          flush_ = false;
          bitField0_ = (bitField0_ & ~0x00000004);
          return this;
        }
  
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_PermissionQuery_descriptor;
        }
  
        public com.morlunk.jumble.protobuf.Mumble.PermissionQuery getDefaultInstanceForType() {
          return com.morlunk.jumble.protobuf.Mumble.PermissionQuery.getDefaultInstance();
        }
  
        public com.morlunk.jumble.protobuf.Mumble.PermissionQuery build() {
          com.morlunk.jumble.protobuf.Mumble.PermissionQuery result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        public com.morlunk.jumble.protobuf.Mumble.PermissionQuery buildPartial() {
          com.morlunk.jumble.protobuf.Mumble.PermissionQuery result = new com.morlunk.jumble.protobuf.Mumble.PermissionQuery(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.channelId_ = channelId_;
          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
            to_bitField0_ |= 0x00000002;
          }
          result.permissions_ = permissions_;
          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
            to_bitField0_ |= 0x00000004;
          }
          result.flush_ = flush_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
  
        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.setField(field, value);
        }
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return (Builder) super.clearField(field);
        }
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return (Builder) super.clearOneof(oneof);
        }
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.morlunk.jumble.protobuf.Mumble.PermissionQuery) {
            return mergeFrom((com.morlunk.jumble.protobuf.Mumble.PermissionQuery)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(com.morlunk.jumble.protobuf.Mumble.PermissionQuery other) {
          if (other == com.morlunk.jumble.protobuf.Mumble.PermissionQuery.getDefaultInstance()) return this;
          if (other.hasChannelId()) {
            setChannelId(other.getChannelId());
          }
          if (other.hasPermissions()) {
            setPermissions(other.getPermissions());
          }
          if (other.hasFlush()) {
            setFlush(other.getFlush());
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }
  
        public final boolean isInitialized() {
          return true;
        }
  
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.morlunk.jumble.protobuf.Mumble.PermissionQuery parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (com.morlunk.jumble.protobuf.Mumble.PermissionQuery) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;
  
        private int channelId_ ;
        /**
         * <code>optional uint32 channel_id = 1;</code>
         */
        public boolean hasChannelId() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <code>optional uint32 channel_id = 1;</code>
         */
        public int getChannelId() {
          return channelId_;
        }
        /**
         * <code>optional uint32 channel_id = 1;</code>
         */
        public Builder setChannelId(int value) {
          bitField0_ |= 0x00000001;
          channelId_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional uint32 channel_id = 1;</code>
         */
        public Builder clearChannelId() {
          bitField0_ = (bitField0_ & ~0x00000001);
          channelId_ = 0;
          onChanged();
          return this;
        }
  
        private int permissions_ ;
        /**
         * <code>optional uint32 permissions = 2;</code>
         */
        public boolean hasPermissions() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * <code>optional uint32 permissions = 2;</code>
         */
        public int getPermissions() {
          return permissions_;
        }
        /**
         * <code>optional uint32 permissions = 2;</code>
         */
        public Builder setPermissions(int value) {
          bitField0_ |= 0x00000002;
          permissions_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional uint32 permissions = 2;</code>
         */
        public Builder clearPermissions() {
          bitField0_ = (bitField0_ & ~0x00000002);
          permissions_ = 0;
          onChanged();
          return this;
        }
  
        private boolean flush_ ;
        /**
         * <code>optional bool flush = 3 [default = false];</code>
         */
        public boolean hasFlush() {
          return ((bitField0_ & 0x00000004) == 0x00000004);
        }
        /**
         * <code>optional bool flush = 3 [default = false];</code>
         */
        public boolean getFlush() {
          return flush_;
        }
        /**
         * <code>optional bool flush = 3 [default = false];</code>
         */
        public Builder setFlush(boolean value) {
          bitField0_ |= 0x00000004;
          flush_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional bool flush = 3 [default = false];</code>
         */
        public Builder clearFlush() {
          bitField0_ = (bitField0_ & ~0x00000004);
          flush_ = false;
          onChanged();
          return this;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }
  
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:MumbleProto.PermissionQuery)
      }
  
      // @@protoc_insertion_point(class_scope:MumbleProto.PermissionQuery)
      private static final com.morlunk.jumble.protobuf.Mumble.PermissionQuery DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.morlunk.jumble.protobuf.Mumble.PermissionQuery();
      }
  
      public static com.morlunk.jumble.protobuf.Mumble.PermissionQuery getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      @java.lang.Deprecated public static final com.google.protobuf.Parser<PermissionQuery>
          PARSER = new com.google.protobuf.AbstractParser<PermissionQuery>() {
        public PermissionQuery parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return new PermissionQuery(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<PermissionQuery> parser() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.google.protobuf.Parser<PermissionQuery> getParserForType() {
        return PARSER;
      }
  
      public com.morlunk.jumble.protobuf.Mumble.PermissionQuery getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface CodecVersionOrBuilder extends
        // @@protoc_insertion_point(interface_extends:MumbleProto.CodecVersion)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <code>required int32 alpha = 1;</code>
       */
      boolean hasAlpha();
      /**
       * <code>required int32 alpha = 1;</code>
       */
      int getAlpha();
  
      /**
       * <code>required int32 beta = 2;</code>
       */
      boolean hasBeta();
      /**
       * <code>required int32 beta = 2;</code>
       */
      int getBeta();
  
      /**
       * <code>required bool prefer_alpha = 3 [default = true];</code>
       */
      boolean hasPreferAlpha();
      /**
       * <code>required bool prefer_alpha = 3 [default = true];</code>
       */
      boolean getPreferAlpha();
  
      /**
       * <code>optional bool opus = 4 [default = false];</code>
       */
      boolean hasOpus();
      /**
       * <code>optional bool opus = 4 [default = false];</code>
       */
      boolean getOpus();
    }
    /**
     * Protobuf type {@code MumbleProto.CodecVersion}
     */
    public  static final class CodecVersion extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:MumbleProto.CodecVersion)
        CodecVersionOrBuilder {
      // Use CodecVersion.newBuilder() to construct.
      private CodecVersion(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private CodecVersion() {
        alpha_ = 0;
        beta_ = 0;
        preferAlpha_ = true;
        opus_ = false;
      }
  
      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private CodecVersion(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        int mutable_bitField0_ = 0;
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder();
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              default: {
                if (!parseUnknownField(input, unknownFields,
                                       extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 8: {
                bitField0_ |= 0x00000001;
                alpha_ = input.readInt32();
                break;
              }
              case 16: {
                bitField0_ |= 0x00000002;
                beta_ = input.readInt32();
                break;
              }
              case 24: {
                bitField0_ |= 0x00000004;
                preferAlpha_ = input.readBool();
                break;
              }
              case 32: {
                bitField0_ |= 0x00000008;
                opus_ = input.readBool();
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_CodecVersion_descriptor;
      }
  
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_CodecVersion_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.morlunk.jumble.protobuf.Mumble.CodecVersion.class, com.morlunk.jumble.protobuf.Mumble.CodecVersion.Builder.class);
      }
  
      private int bitField0_;
      public static final int ALPHA_FIELD_NUMBER = 1;
      private int alpha_;
      /**
       * <code>required int32 alpha = 1;</code>
       */
      public boolean hasAlpha() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>required int32 alpha = 1;</code>
       */
      public int getAlpha() {
        return alpha_;
      }
  
      public static final int BETA_FIELD_NUMBER = 2;
      private int beta_;
      /**
       * <code>required int32 beta = 2;</code>
       */
      public boolean hasBeta() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>required int32 beta = 2;</code>
       */
      public int getBeta() {
        return beta_;
      }
  
      public static final int PREFER_ALPHA_FIELD_NUMBER = 3;
      private boolean preferAlpha_;
      /**
       * <code>required bool prefer_alpha = 3 [default = true];</code>
       */
      public boolean hasPreferAlpha() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>required bool prefer_alpha = 3 [default = true];</code>
       */
      public boolean getPreferAlpha() {
        return preferAlpha_;
      }
  
      public static final int OPUS_FIELD_NUMBER = 4;
      private boolean opus_;
      /**
       * <code>optional bool opus = 4 [default = false];</code>
       */
      public boolean hasOpus() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>optional bool opus = 4 [default = false];</code>
       */
      public boolean getOpus() {
        return opus_;
      }
  
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        if (!hasAlpha()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasBeta()) {
          memoizedIsInitialized = 0;
          return false;
        }
        if (!hasPreferAlpha()) {
          memoizedIsInitialized = 0;
          return false;
        }
        memoizedIsInitialized = 1;
        return true;
      }
  
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeInt32(1, alpha_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          output.writeInt32(2, beta_);
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          output.writeBool(3, preferAlpha_);
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          output.writeBool(4, opus_);
        }
        unknownFields.writeTo(output);
      }
  
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(1, alpha_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.CodedOutputStream
            .computeInt32Size(2, beta_);
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBoolSize(3, preferAlpha_);
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBoolSize(4, opus_);
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }
  
      private static final long serialVersionUID = 0L;
      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.morlunk.jumble.protobuf.Mumble.CodecVersion)) {
          return super.equals(obj);
        }
        com.morlunk.jumble.protobuf.Mumble.CodecVersion other = (com.morlunk.jumble.protobuf.Mumble.CodecVersion) obj;
  
        boolean result = true;
        result = result && (hasAlpha() == other.hasAlpha());
        if (hasAlpha()) {
          result = result && (getAlpha()
              == other.getAlpha());
        }
        result = result && (hasBeta() == other.hasBeta());
        if (hasBeta()) {
          result = result && (getBeta()
              == other.getBeta());
        }
        result = result && (hasPreferAlpha() == other.hasPreferAlpha());
        if (hasPreferAlpha()) {
          result = result && (getPreferAlpha()
              == other.getPreferAlpha());
        }
        result = result && (hasOpus() == other.hasOpus());
        if (hasOpus()) {
          result = result && (getOpus()
              == other.getOpus());
        }
        result = result && unknownFields.equals(other.unknownFields);
        return result;
      }
  
      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptorForType().hashCode();
        if (hasAlpha()) {
          hash = (37 * hash) + ALPHA_FIELD_NUMBER;
          hash = (53 * hash) + getAlpha();
        }
        if (hasBeta()) {
          hash = (37 * hash) + BETA_FIELD_NUMBER;
          hash = (53 * hash) + getBeta();
        }
        if (hasPreferAlpha()) {
          hash = (37 * hash) + PREFER_ALPHA_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
              getPreferAlpha());
        }
        if (hasOpus()) {
          hash = (37 * hash) + OPUS_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
              getOpus());
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static com.morlunk.jumble.protobuf.Mumble.CodecVersion parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.morlunk.jumble.protobuf.Mumble.CodecVersion parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.CodecVersion parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.morlunk.jumble.protobuf.Mumble.CodecVersion parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.CodecVersion parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.morlunk.jumble.protobuf.Mumble.CodecVersion parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.CodecVersion parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.morlunk.jumble.protobuf.Mumble.CodecVersion parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.CodecVersion parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.morlunk.jumble.protobuf.Mumble.CodecVersion parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
  
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(com.morlunk.jumble.protobuf.Mumble.CodecVersion prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }
  
      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code MumbleProto.CodecVersion}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:MumbleProto.CodecVersion)
          com.morlunk.jumble.protobuf.Mumble.CodecVersionOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_CodecVersion_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_CodecVersion_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.morlunk.jumble.protobuf.Mumble.CodecVersion.class, com.morlunk.jumble.protobuf.Mumble.CodecVersion.Builder.class);
        }
  
        // Construct using com.morlunk.jumble.protobuf.Mumble.CodecVersion.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
  
        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
          }
        }
        public Builder clear() {
          super.clear();
          alpha_ = 0;
          bitField0_ = (bitField0_ & ~0x00000001);
          beta_ = 0;
          bitField0_ = (bitField0_ & ~0x00000002);
          preferAlpha_ = true;
          bitField0_ = (bitField0_ & ~0x00000004);
          opus_ = false;
          bitField0_ = (bitField0_ & ~0x00000008);
          return this;
        }
  
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_CodecVersion_descriptor;
        }
  
        public com.morlunk.jumble.protobuf.Mumble.CodecVersion getDefaultInstanceForType() {
          return com.morlunk.jumble.protobuf.Mumble.CodecVersion.getDefaultInstance();
        }
  
        public com.morlunk.jumble.protobuf.Mumble.CodecVersion build() {
          com.morlunk.jumble.protobuf.Mumble.CodecVersion result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        public com.morlunk.jumble.protobuf.Mumble.CodecVersion buildPartial() {
          com.morlunk.jumble.protobuf.Mumble.CodecVersion result = new com.morlunk.jumble.protobuf.Mumble.CodecVersion(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.alpha_ = alpha_;
          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
            to_bitField0_ |= 0x00000002;
          }
          result.beta_ = beta_;
          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
            to_bitField0_ |= 0x00000004;
          }
          result.preferAlpha_ = preferAlpha_;
          if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
            to_bitField0_ |= 0x00000008;
          }
          result.opus_ = opus_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
  
        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.setField(field, value);
        }
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return (Builder) super.clearField(field);
        }
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return (Builder) super.clearOneof(oneof);
        }
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.morlunk.jumble.protobuf.Mumble.CodecVersion) {
            return mergeFrom((com.morlunk.jumble.protobuf.Mumble.CodecVersion)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(com.morlunk.jumble.protobuf.Mumble.CodecVersion other) {
          if (other == com.morlunk.jumble.protobuf.Mumble.CodecVersion.getDefaultInstance()) return this;
          if (other.hasAlpha()) {
            setAlpha(other.getAlpha());
          }
          if (other.hasBeta()) {
            setBeta(other.getBeta());
          }
          if (other.hasPreferAlpha()) {
            setPreferAlpha(other.getPreferAlpha());
          }
          if (other.hasOpus()) {
            setOpus(other.getOpus());
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }
  
        public final boolean isInitialized() {
          if (!hasAlpha()) {
            return false;
          }
          if (!hasBeta()) {
            return false;
          }
          if (!hasPreferAlpha()) {
            return false;
          }
          return true;
        }
  
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.morlunk.jumble.protobuf.Mumble.CodecVersion parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (com.morlunk.jumble.protobuf.Mumble.CodecVersion) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;
  
        private int alpha_ ;
        /**
         * <code>required int32 alpha = 1;</code>
         */
        public boolean hasAlpha() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <code>required int32 alpha = 1;</code>
         */
        public int getAlpha() {
          return alpha_;
        }
        /**
         * <code>required int32 alpha = 1;</code>
         */
        public Builder setAlpha(int value) {
          bitField0_ |= 0x00000001;
          alpha_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>required int32 alpha = 1;</code>
         */
        public Builder clearAlpha() {
          bitField0_ = (bitField0_ & ~0x00000001);
          alpha_ = 0;
          onChanged();
          return this;
        }
  
        private int beta_ ;
        /**
         * <code>required int32 beta = 2;</code>
         */
        public boolean hasBeta() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * <code>required int32 beta = 2;</code>
         */
        public int getBeta() {
          return beta_;
        }
        /**
         * <code>required int32 beta = 2;</code>
         */
        public Builder setBeta(int value) {
          bitField0_ |= 0x00000002;
          beta_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>required int32 beta = 2;</code>
         */
        public Builder clearBeta() {
          bitField0_ = (bitField0_ & ~0x00000002);
          beta_ = 0;
          onChanged();
          return this;
        }
  
        private boolean preferAlpha_ = true;
        /**
         * <code>required bool prefer_alpha = 3 [default = true];</code>
         */
        public boolean hasPreferAlpha() {
          return ((bitField0_ & 0x00000004) == 0x00000004);
        }
        /**
         * <code>required bool prefer_alpha = 3 [default = true];</code>
         */
        public boolean getPreferAlpha() {
          return preferAlpha_;
        }
        /**
         * <code>required bool prefer_alpha = 3 [default = true];</code>
         */
        public Builder setPreferAlpha(boolean value) {
          bitField0_ |= 0x00000004;
          preferAlpha_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>required bool prefer_alpha = 3 [default = true];</code>
         */
        public Builder clearPreferAlpha() {
          bitField0_ = (bitField0_ & ~0x00000004);
          preferAlpha_ = true;
          onChanged();
          return this;
        }
  
        private boolean opus_ ;
        /**
         * <code>optional bool opus = 4 [default = false];</code>
         */
        public boolean hasOpus() {
          return ((bitField0_ & 0x00000008) == 0x00000008);
        }
        /**
         * <code>optional bool opus = 4 [default = false];</code>
         */
        public boolean getOpus() {
          return opus_;
        }
        /**
         * <code>optional bool opus = 4 [default = false];</code>
         */
        public Builder setOpus(boolean value) {
          bitField0_ |= 0x00000008;
          opus_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional bool opus = 4 [default = false];</code>
         */
        public Builder clearOpus() {
          bitField0_ = (bitField0_ & ~0x00000008);
          opus_ = false;
          onChanged();
          return this;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }
  
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:MumbleProto.CodecVersion)
      }
  
      // @@protoc_insertion_point(class_scope:MumbleProto.CodecVersion)
      private static final com.morlunk.jumble.protobuf.Mumble.CodecVersion DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.morlunk.jumble.protobuf.Mumble.CodecVersion();
      }
  
      public static com.morlunk.jumble.protobuf.Mumble.CodecVersion getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      @java.lang.Deprecated public static final com.google.protobuf.Parser<CodecVersion>
          PARSER = new com.google.protobuf.AbstractParser<CodecVersion>() {
        public CodecVersion parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return new CodecVersion(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<CodecVersion> parser() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.google.protobuf.Parser<CodecVersion> getParserForType() {
        return PARSER;
      }
  
      public com.morlunk.jumble.protobuf.Mumble.CodecVersion getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface UserStatsOrBuilder extends
        // @@protoc_insertion_point(interface_extends:MumbleProto.UserStats)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <code>optional uint32 session = 1;</code>
       */
      boolean hasSession();
      /**
       * <code>optional uint32 session = 1;</code>
       */
      int getSession();
  
      /**
       * <code>optional bool stats_only = 2 [default = false];</code>
       */
      boolean hasStatsOnly();
      /**
       * <code>optional bool stats_only = 2 [default = false];</code>
       */
      boolean getStatsOnly();
  
      /**
       * <code>repeated bytes certificates = 3;</code>
       */
      java.util.List<com.google.protobuf.ByteString> getCertificatesList();
      /**
       * <code>repeated bytes certificates = 3;</code>
       */
      int getCertificatesCount();
      /**
       * <code>repeated bytes certificates = 3;</code>
       */
      com.google.protobuf.ByteString getCertificates(int index);
  
      /**
       * <code>optional .MumbleProto.UserStats.Stats from_client = 4;</code>
       */
      boolean hasFromClient();
      /**
       * <code>optional .MumbleProto.UserStats.Stats from_client = 4;</code>
       */
      com.morlunk.jumble.protobuf.Mumble.UserStats.Stats getFromClient();
      /**
       * <code>optional .MumbleProto.UserStats.Stats from_client = 4;</code>
       */
      com.morlunk.jumble.protobuf.Mumble.UserStats.StatsOrBuilder getFromClientOrBuilder();
  
      /**
       * <code>optional .MumbleProto.UserStats.Stats from_server = 5;</code>
       */
      boolean hasFromServer();
      /**
       * <code>optional .MumbleProto.UserStats.Stats from_server = 5;</code>
       */
      com.morlunk.jumble.protobuf.Mumble.UserStats.Stats getFromServer();
      /**
       * <code>optional .MumbleProto.UserStats.Stats from_server = 5;</code>
       */
      com.morlunk.jumble.protobuf.Mumble.UserStats.StatsOrBuilder getFromServerOrBuilder();
  
      /**
       * <code>optional uint32 udp_packets = 6;</code>
       */
      boolean hasUdpPackets();
      /**
       * <code>optional uint32 udp_packets = 6;</code>
       */
      int getUdpPackets();
  
      /**
       * <code>optional uint32 tcp_packets = 7;</code>
       */
      boolean hasTcpPackets();
      /**
       * <code>optional uint32 tcp_packets = 7;</code>
       */
      int getTcpPackets();
  
      /**
       * <code>optional float udp_ping_avg = 8;</code>
       */
      boolean hasUdpPingAvg();
      /**
       * <code>optional float udp_ping_avg = 8;</code>
       */
      float getUdpPingAvg();
  
      /**
       * <code>optional float udp_ping_var = 9;</code>
       */
      boolean hasUdpPingVar();
      /**
       * <code>optional float udp_ping_var = 9;</code>
       */
      float getUdpPingVar();
  
      /**
       * <code>optional float tcp_ping_avg = 10;</code>
       */
      boolean hasTcpPingAvg();
      /**
       * <code>optional float tcp_ping_avg = 10;</code>
       */
      float getTcpPingAvg();
  
      /**
       * <code>optional float tcp_ping_var = 11;</code>
       */
      boolean hasTcpPingVar();
      /**
       * <code>optional float tcp_ping_var = 11;</code>
       */
      float getTcpPingVar();
  
      /**
       * <code>optional .MumbleProto.Version version = 12;</code>
       */
      boolean hasVersion();
      /**
       * <code>optional .MumbleProto.Version version = 12;</code>
       */
      com.morlunk.jumble.protobuf.Mumble.Version getVersion();
      /**
       * <code>optional .MumbleProto.Version version = 12;</code>
       */
      com.morlunk.jumble.protobuf.Mumble.VersionOrBuilder getVersionOrBuilder();
  
      /**
       * <code>repeated int32 celt_versions = 13;</code>
       */
      java.util.List<java.lang.Integer> getCeltVersionsList();
      /**
       * <code>repeated int32 celt_versions = 13;</code>
       */
      int getCeltVersionsCount();
      /**
       * <code>repeated int32 celt_versions = 13;</code>
       */
      int getCeltVersions(int index);
  
      /**
       * <code>optional bytes address = 14;</code>
       */
      boolean hasAddress();
      /**
       * <code>optional bytes address = 14;</code>
       */
      com.google.protobuf.ByteString getAddress();
  
      /**
       * <code>optional uint32 bandwidth = 15;</code>
       */
      boolean hasBandwidth();
      /**
       * <code>optional uint32 bandwidth = 15;</code>
       */
      int getBandwidth();
  
      /**
       * <code>optional uint32 onlinesecs = 16;</code>
       */
      boolean hasOnlinesecs();
      /**
       * <code>optional uint32 onlinesecs = 16;</code>
       */
      int getOnlinesecs();
  
      /**
       * <code>optional uint32 idlesecs = 17;</code>
       */
      boolean hasIdlesecs();
      /**
       * <code>optional uint32 idlesecs = 17;</code>
       */
      int getIdlesecs();
  
      /**
       * <code>optional bool strong_certificate = 18 [default = false];</code>
       */
      boolean hasStrongCertificate();
      /**
       * <code>optional bool strong_certificate = 18 [default = false];</code>
       */
      boolean getStrongCertificate();
  
      /**
       * <code>optional bool opus = 19 [default = false];</code>
       */
      boolean hasOpus();
      /**
       * <code>optional bool opus = 19 [default = false];</code>
       */
      boolean getOpus();
    }
    /**
     * Protobuf type {@code MumbleProto.UserStats}
     */
    public  static final class UserStats extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:MumbleProto.UserStats)
        UserStatsOrBuilder {
      // Use UserStats.newBuilder() to construct.
      private UserStats(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private UserStats() {
        session_ = 0;
        statsOnly_ = false;
        certificates_ = java.util.Collections.emptyList();
        udpPackets_ = 0;
        tcpPackets_ = 0;
        udpPingAvg_ = 0F;
        udpPingVar_ = 0F;
        tcpPingAvg_ = 0F;
        tcpPingVar_ = 0F;
        celtVersions_ = java.util.Collections.emptyList();
        address_ = com.google.protobuf.ByteString.EMPTY;
        bandwidth_ = 0;
        onlinesecs_ = 0;
        idlesecs_ = 0;
        strongCertificate_ = false;
        opus_ = false;
      }
  
      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private UserStats(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        int mutable_bitField0_ = 0;
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder();
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              default: {
                if (!parseUnknownField(input, unknownFields,
                                       extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 8: {
                bitField0_ |= 0x00000001;
                session_ = input.readUInt32();
                break;
              }
              case 16: {
                bitField0_ |= 0x00000002;
                statsOnly_ = input.readBool();
                break;
              }
              case 26: {
                if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
                  certificates_ = new java.util.ArrayList<com.google.protobuf.ByteString>();
                  mutable_bitField0_ |= 0x00000004;
                }
                certificates_.add(input.readBytes());
                break;
              }
              case 34: {
                com.morlunk.jumble.protobuf.Mumble.UserStats.Stats.Builder subBuilder = null;
                if (((bitField0_ & 0x00000004) == 0x00000004)) {
                  subBuilder = fromClient_.toBuilder();
                }
                fromClient_ = input.readMessage(com.morlunk.jumble.protobuf.Mumble.UserStats.Stats.PARSER, extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(fromClient_);
                  fromClient_ = subBuilder.buildPartial();
                }
                bitField0_ |= 0x00000004;
                break;
              }
              case 42: {
                com.morlunk.jumble.protobuf.Mumble.UserStats.Stats.Builder subBuilder = null;
                if (((bitField0_ & 0x00000008) == 0x00000008)) {
                  subBuilder = fromServer_.toBuilder();
                }
                fromServer_ = input.readMessage(com.morlunk.jumble.protobuf.Mumble.UserStats.Stats.PARSER, extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(fromServer_);
                  fromServer_ = subBuilder.buildPartial();
                }
                bitField0_ |= 0x00000008;
                break;
              }
              case 48: {
                bitField0_ |= 0x00000010;
                udpPackets_ = input.readUInt32();
                break;
              }
              case 56: {
                bitField0_ |= 0x00000020;
                tcpPackets_ = input.readUInt32();
                break;
              }
              case 69: {
                bitField0_ |= 0x00000040;
                udpPingAvg_ = input.readFloat();
                break;
              }
              case 77: {
                bitField0_ |= 0x00000080;
                udpPingVar_ = input.readFloat();
                break;
              }
              case 85: {
                bitField0_ |= 0x00000100;
                tcpPingAvg_ = input.readFloat();
                break;
              }
              case 93: {
                bitField0_ |= 0x00000200;
                tcpPingVar_ = input.readFloat();
                break;
              }
              case 98: {
                com.morlunk.jumble.protobuf.Mumble.Version.Builder subBuilder = null;
                if (((bitField0_ & 0x00000400) == 0x00000400)) {
                  subBuilder = version_.toBuilder();
                }
                version_ = input.readMessage(com.morlunk.jumble.protobuf.Mumble.Version.PARSER, extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(version_);
                  version_ = subBuilder.buildPartial();
                }
                bitField0_ |= 0x00000400;
                break;
              }
              case 104: {
                if (!((mutable_bitField0_ & 0x00001000) == 0x00001000)) {
                  celtVersions_ = new java.util.ArrayList<java.lang.Integer>();
                  mutable_bitField0_ |= 0x00001000;
                }
                celtVersions_.add(input.readInt32());
                break;
              }
              case 106: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                if (!((mutable_bitField0_ & 0x00001000) == 0x00001000) && input.getBytesUntilLimit() > 0) {
                  celtVersions_ = new java.util.ArrayList<java.lang.Integer>();
                  mutable_bitField0_ |= 0x00001000;
                }
                while (input.getBytesUntilLimit() > 0) {
                  celtVersions_.add(input.readInt32());
                }
                input.popLimit(limit);
                break;
              }
              case 114: {
                bitField0_ |= 0x00000800;
                address_ = input.readBytes();
                break;
              }
              case 120: {
                bitField0_ |= 0x00001000;
                bandwidth_ = input.readUInt32();
                break;
              }
              case 128: {
                bitField0_ |= 0x00002000;
                onlinesecs_ = input.readUInt32();
                break;
              }
              case 136: {
                bitField0_ |= 0x00004000;
                idlesecs_ = input.readUInt32();
                break;
              }
              case 144: {
                bitField0_ |= 0x00008000;
                strongCertificate_ = input.readBool();
                break;
              }
              case 152: {
                bitField0_ |= 0x00010000;
                opus_ = input.readBool();
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
            certificates_ = java.util.Collections.unmodifiableList(certificates_);
          }
          if (((mutable_bitField0_ & 0x00001000) == 0x00001000)) {
            celtVersions_ = java.util.Collections.unmodifiableList(celtVersions_);
          }
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_UserStats_descriptor;
      }
  
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_UserStats_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.morlunk.jumble.protobuf.Mumble.UserStats.class, com.morlunk.jumble.protobuf.Mumble.UserStats.Builder.class);
      }
  
      public interface StatsOrBuilder extends
          // @@protoc_insertion_point(interface_extends:MumbleProto.UserStats.Stats)
          com.google.protobuf.MessageOrBuilder {
  
        /**
         * <code>optional uint32 good = 1;</code>
         */
        boolean hasGood();
        /**
         * <code>optional uint32 good = 1;</code>
         */
        int getGood();
  
        /**
         * <code>optional uint32 late = 2;</code>
         */
        boolean hasLate();
        /**
         * <code>optional uint32 late = 2;</code>
         */
        int getLate();
  
        /**
         * <code>optional uint32 lost = 3;</code>
         */
        boolean hasLost();
        /**
         * <code>optional uint32 lost = 3;</code>
         */
        int getLost();
  
        /**
         * <code>optional uint32 resync = 4;</code>
         */
        boolean hasResync();
        /**
         * <code>optional uint32 resync = 4;</code>
         */
        int getResync();
      }
      /**
       * Protobuf type {@code MumbleProto.UserStats.Stats}
       */
      public  static final class Stats extends
          com.google.protobuf.GeneratedMessageV3 implements
          // @@protoc_insertion_point(message_implements:MumbleProto.UserStats.Stats)
          StatsOrBuilder {
        // Use Stats.newBuilder() to construct.
        private Stats(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
          super(builder);
        }
        private Stats() {
          good_ = 0;
          late_ = 0;
          lost_ = 0;
          resync_ = 0;
        }
  
        @java.lang.Override
        public final com.google.protobuf.UnknownFieldSet
        getUnknownFields() {
          return this.unknownFields;
        }
        private Stats(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          this();
          int mutable_bitField0_ = 0;
          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
              com.google.protobuf.UnknownFieldSet.newBuilder();
          try {
            boolean done = false;
            while (!done) {
              int tag = input.readTag();
              switch (tag) {
                case 0:
                  done = true;
                  break;
                default: {
                  if (!parseUnknownField(input, unknownFields,
                                         extensionRegistry, tag)) {
                    done = true;
                  }
                  break;
                }
                case 8: {
                  bitField0_ |= 0x00000001;
                  good_ = input.readUInt32();
                  break;
                }
                case 16: {
                  bitField0_ |= 0x00000002;
                  late_ = input.readUInt32();
                  break;
                }
                case 24: {
                  bitField0_ |= 0x00000004;
                  lost_ = input.readUInt32();
                  break;
                }
                case 32: {
                  bitField0_ |= 0x00000008;
                  resync_ = input.readUInt32();
                  break;
                }
              }
            }
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(this);
          } catch (java.io.IOException e) {
            throw new com.google.protobuf.InvalidProtocolBufferException(
                e).setUnfinishedMessage(this);
          } finally {
            this.unknownFields = unknownFields.build();
            makeExtensionsImmutable();
          }
        }
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_UserStats_Stats_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_UserStats_Stats_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.morlunk.jumble.protobuf.Mumble.UserStats.Stats.class, com.morlunk.jumble.protobuf.Mumble.UserStats.Stats.Builder.class);
        }
  
        private int bitField0_;
        public static final int GOOD_FIELD_NUMBER = 1;
        private int good_;
        /**
         * <code>optional uint32 good = 1;</code>
         */
        public boolean hasGood() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <code>optional uint32 good = 1;</code>
         */
        public int getGood() {
          return good_;
        }
  
        public static final int LATE_FIELD_NUMBER = 2;
        private int late_;
        /**
         * <code>optional uint32 late = 2;</code>
         */
        public boolean hasLate() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * <code>optional uint32 late = 2;</code>
         */
        public int getLate() {
          return late_;
        }
  
        public static final int LOST_FIELD_NUMBER = 3;
        private int lost_;
        /**
         * <code>optional uint32 lost = 3;</code>
         */
        public boolean hasLost() {
          return ((bitField0_ & 0x00000004) == 0x00000004);
        }
        /**
         * <code>optional uint32 lost = 3;</code>
         */
        public int getLost() {
          return lost_;
        }
  
        public static final int RESYNC_FIELD_NUMBER = 4;
        private int resync_;
        /**
         * <code>optional uint32 resync = 4;</code>
         */
        public boolean hasResync() {
          return ((bitField0_ & 0x00000008) == 0x00000008);
        }
        /**
         * <code>optional uint32 resync = 4;</code>
         */
        public int getResync() {
          return resync_;
        }
  
        private byte memoizedIsInitialized = -1;
        public final boolean isInitialized() {
          byte isInitialized = memoizedIsInitialized;
          if (isInitialized == 1) return true;
          if (isInitialized == 0) return false;
  
          memoizedIsInitialized = 1;
          return true;
        }
  
        public void writeTo(com.google.protobuf.CodedOutputStream output)
                            throws java.io.IOException {
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            output.writeUInt32(1, good_);
          }
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            output.writeUInt32(2, late_);
          }
          if (((bitField0_ & 0x00000004) == 0x00000004)) {
            output.writeUInt32(3, lost_);
          }
          if (((bitField0_ & 0x00000008) == 0x00000008)) {
            output.writeUInt32(4, resync_);
          }
          unknownFields.writeTo(output);
        }
  
        public int getSerializedSize() {
          int size = memoizedSize;
          if (size != -1) return size;
  
          size = 0;
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(1, good_);
          }
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(2, late_);
          }
          if (((bitField0_ & 0x00000004) == 0x00000004)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(3, lost_);
          }
          if (((bitField0_ & 0x00000008) == 0x00000008)) {
            size += com.google.protobuf.CodedOutputStream
              .computeUInt32Size(4, resync_);
          }
          size += unknownFields.getSerializedSize();
          memoizedSize = size;
          return size;
        }
  
        private static final long serialVersionUID = 0L;
        @java.lang.Override
        public boolean equals(final java.lang.Object obj) {
          if (obj == this) {
           return true;
          }
          if (!(obj instanceof com.morlunk.jumble.protobuf.Mumble.UserStats.Stats)) {
            return super.equals(obj);
          }
          com.morlunk.jumble.protobuf.Mumble.UserStats.Stats other = (com.morlunk.jumble.protobuf.Mumble.UserStats.Stats) obj;
  
          boolean result = true;
          result = result && (hasGood() == other.hasGood());
          if (hasGood()) {
            result = result && (getGood()
                == other.getGood());
          }
          result = result && (hasLate() == other.hasLate());
          if (hasLate()) {
            result = result && (getLate()
                == other.getLate());
          }
          result = result && (hasLost() == other.hasLost());
          if (hasLost()) {
            result = result && (getLost()
                == other.getLost());
          }
          result = result && (hasResync() == other.hasResync());
          if (hasResync()) {
            result = result && (getResync()
                == other.getResync());
          }
          result = result && unknownFields.equals(other.unknownFields);
          return result;
        }
  
        @java.lang.Override
        public int hashCode() {
          if (memoizedHashCode != 0) {
            return memoizedHashCode;
          }
          int hash = 41;
          hash = (19 * hash) + getDescriptorForType().hashCode();
          if (hasGood()) {
            hash = (37 * hash) + GOOD_FIELD_NUMBER;
            hash = (53 * hash) + getGood();
          }
          if (hasLate()) {
            hash = (37 * hash) + LATE_FIELD_NUMBER;
            hash = (53 * hash) + getLate();
          }
          if (hasLost()) {
            hash = (37 * hash) + LOST_FIELD_NUMBER;
            hash = (53 * hash) + getLost();
          }
          if (hasResync()) {
            hash = (37 * hash) + RESYNC_FIELD_NUMBER;
            hash = (53 * hash) + getResync();
          }
          hash = (29 * hash) + unknownFields.hashCode();
          memoizedHashCode = hash;
          return hash;
        }
  
        public static com.morlunk.jumble.protobuf.Mumble.UserStats.Stats parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static com.morlunk.jumble.protobuf.Mumble.UserStats.Stats parseFrom(
            com.google.protobuf.ByteString data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.morlunk.jumble.protobuf.Mumble.UserStats.Stats parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data);
        }
        public static com.morlunk.jumble.protobuf.Mumble.UserStats.Stats parseFrom(
            byte[] data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return PARSER.parseFrom(data, extensionRegistry);
        }
        public static com.morlunk.jumble.protobuf.Mumble.UserStats.Stats parseFrom(java.io.InputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input);
        }
        public static com.morlunk.jumble.protobuf.Mumble.UserStats.Stats parseFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.morlunk.jumble.protobuf.Mumble.UserStats.Stats parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseDelimitedWithIOException(PARSER, input);
        }
        public static com.morlunk.jumble.protobuf.Mumble.UserStats.Stats parseDelimitedFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
        }
        public static com.morlunk.jumble.protobuf.Mumble.UserStats.Stats parseFrom(
            com.google.protobuf.CodedInputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input);
        }
        public static com.morlunk.jumble.protobuf.Mumble.UserStats.Stats parseFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageV3
              .parseWithIOException(PARSER, input, extensionRegistry);
        }
  
        public Builder newBuilderForType() { return newBuilder(); }
        public static Builder newBuilder() {
          return DEFAULT_INSTANCE.toBuilder();
        }
        public static Builder newBuilder(com.morlunk.jumble.protobuf.Mumble.UserStats.Stats prototype) {
          return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
        }
        public Builder toBuilder() {
          return this == DEFAULT_INSTANCE
              ? new Builder() : new Builder().mergeFrom(this);
        }
  
        @java.lang.Override
        protected Builder newBuilderForType(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          Builder builder = new Builder(parent);
          return builder;
        }
        /**
         * Protobuf type {@code MumbleProto.UserStats.Stats}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
            // @@protoc_insertion_point(builder_implements:MumbleProto.UserStats.Stats)
            com.morlunk.jumble.protobuf.Mumble.UserStats.StatsOrBuilder {
          public static final com.google.protobuf.Descriptors.Descriptor
              getDescriptor() {
            return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_UserStats_Stats_descriptor;
          }
  
          protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
              internalGetFieldAccessorTable() {
            return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_UserStats_Stats_fieldAccessorTable
                .ensureFieldAccessorsInitialized(
                    com.morlunk.jumble.protobuf.Mumble.UserStats.Stats.class, com.morlunk.jumble.protobuf.Mumble.UserStats.Stats.Builder.class);
          }
  
          // Construct using com.morlunk.jumble.protobuf.Mumble.UserStats.Stats.newBuilder()
          private Builder() {
            maybeForceBuilderInitialization();
          }
  
          private Builder(
              com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
            super(parent);
            maybeForceBuilderInitialization();
          }
          private void maybeForceBuilderInitialization() {
            if (com.google.protobuf.GeneratedMessageV3
                    .alwaysUseFieldBuilders) {
            }
          }
          public Builder clear() {
            super.clear();
            good_ = 0;
            bitField0_ = (bitField0_ & ~0x00000001);
            late_ = 0;
            bitField0_ = (bitField0_ & ~0x00000002);
            lost_ = 0;
            bitField0_ = (bitField0_ & ~0x00000004);
            resync_ = 0;
            bitField0_ = (bitField0_ & ~0x00000008);
            return this;
          }
  
          public com.google.protobuf.Descriptors.Descriptor
              getDescriptorForType() {
            return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_UserStats_Stats_descriptor;
          }
  
          public com.morlunk.jumble.protobuf.Mumble.UserStats.Stats getDefaultInstanceForType() {
            return com.morlunk.jumble.protobuf.Mumble.UserStats.Stats.getDefaultInstance();
          }
  
          public com.morlunk.jumble.protobuf.Mumble.UserStats.Stats build() {
            com.morlunk.jumble.protobuf.Mumble.UserStats.Stats result = buildPartial();
            if (!result.isInitialized()) {
              throw newUninitializedMessageException(result);
            }
            return result;
          }
  
          public com.morlunk.jumble.protobuf.Mumble.UserStats.Stats buildPartial() {
            com.morlunk.jumble.protobuf.Mumble.UserStats.Stats result = new com.morlunk.jumble.protobuf.Mumble.UserStats.Stats(this);
            int from_bitField0_ = bitField0_;
            int to_bitField0_ = 0;
            if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
              to_bitField0_ |= 0x00000001;
            }
            result.good_ = good_;
            if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
              to_bitField0_ |= 0x00000002;
            }
            result.late_ = late_;
            if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
              to_bitField0_ |= 0x00000004;
            }
            result.lost_ = lost_;
            if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
              to_bitField0_ |= 0x00000008;
            }
            result.resync_ = resync_;
            result.bitField0_ = to_bitField0_;
            onBuilt();
            return result;
          }
  
          public Builder clone() {
            return (Builder) super.clone();
          }
          public Builder setField(
              com.google.protobuf.Descriptors.FieldDescriptor field,
              Object value) {
            return (Builder) super.setField(field, value);
          }
          public Builder clearField(
              com.google.protobuf.Descriptors.FieldDescriptor field) {
            return (Builder) super.clearField(field);
          }
          public Builder clearOneof(
              com.google.protobuf.Descriptors.OneofDescriptor oneof) {
            return (Builder) super.clearOneof(oneof);
          }
          public Builder setRepeatedField(
              com.google.protobuf.Descriptors.FieldDescriptor field,
              int index, Object value) {
            return (Builder) super.setRepeatedField(field, index, value);
          }
          public Builder addRepeatedField(
              com.google.protobuf.Descriptors.FieldDescriptor field,
              Object value) {
            return (Builder) super.addRepeatedField(field, value);
          }
          public Builder mergeFrom(com.google.protobuf.Message other) {
            if (other instanceof com.morlunk.jumble.protobuf.Mumble.UserStats.Stats) {
              return mergeFrom((com.morlunk.jumble.protobuf.Mumble.UserStats.Stats)other);
            } else {
              super.mergeFrom(other);
              return this;
            }
          }
  
          public Builder mergeFrom(com.morlunk.jumble.protobuf.Mumble.UserStats.Stats other) {
            if (other == com.morlunk.jumble.protobuf.Mumble.UserStats.Stats.getDefaultInstance()) return this;
            if (other.hasGood()) {
              setGood(other.getGood());
            }
            if (other.hasLate()) {
              setLate(other.getLate());
            }
            if (other.hasLost()) {
              setLost(other.getLost());
            }
            if (other.hasResync()) {
              setResync(other.getResync());
            }
            this.mergeUnknownFields(other.unknownFields);
            onChanged();
            return this;
          }
  
          public final boolean isInitialized() {
            return true;
          }
  
          public Builder mergeFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws java.io.IOException {
            com.morlunk.jumble.protobuf.Mumble.UserStats.Stats parsedMessage = null;
            try {
              parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              parsedMessage = (com.morlunk.jumble.protobuf.Mumble.UserStats.Stats) e.getUnfinishedMessage();
              throw e.unwrapIOException();
            } finally {
              if (parsedMessage != null) {
                mergeFrom(parsedMessage);
              }
            }
            return this;
          }
          private int bitField0_;
  
          private int good_ ;
          /**
           * <code>optional uint32 good = 1;</code>
           */
          public boolean hasGood() {
            return ((bitField0_ & 0x00000001) == 0x00000001);
          }
          /**
           * <code>optional uint32 good = 1;</code>
           */
          public int getGood() {
            return good_;
          }
          /**
           * <code>optional uint32 good = 1;</code>
           */
          public Builder setGood(int value) {
            bitField0_ |= 0x00000001;
            good_ = value;
            onChanged();
            return this;
          }
          /**
           * <code>optional uint32 good = 1;</code>
           */
          public Builder clearGood() {
            bitField0_ = (bitField0_ & ~0x00000001);
            good_ = 0;
            onChanged();
            return this;
          }
  
          private int late_ ;
          /**
           * <code>optional uint32 late = 2;</code>
           */
          public boolean hasLate() {
            return ((bitField0_ & 0x00000002) == 0x00000002);
          }
          /**
           * <code>optional uint32 late = 2;</code>
           */
          public int getLate() {
            return late_;
          }
          /**
           * <code>optional uint32 late = 2;</code>
           */
          public Builder setLate(int value) {
            bitField0_ |= 0x00000002;
            late_ = value;
            onChanged();
            return this;
          }
          /**
           * <code>optional uint32 late = 2;</code>
           */
          public Builder clearLate() {
            bitField0_ = (bitField0_ & ~0x00000002);
            late_ = 0;
            onChanged();
            return this;
          }
  
          private int lost_ ;
          /**
           * <code>optional uint32 lost = 3;</code>
           */
          public boolean hasLost() {
            return ((bitField0_ & 0x00000004) == 0x00000004);
          }
          /**
           * <code>optional uint32 lost = 3;</code>
           */
          public int getLost() {
            return lost_;
          }
          /**
           * <code>optional uint32 lost = 3;</code>
           */
          public Builder setLost(int value) {
            bitField0_ |= 0x00000004;
            lost_ = value;
            onChanged();
            return this;
          }
          /**
           * <code>optional uint32 lost = 3;</code>
           */
          public Builder clearLost() {
            bitField0_ = (bitField0_ & ~0x00000004);
            lost_ = 0;
            onChanged();
            return this;
          }
  
          private int resync_ ;
          /**
           * <code>optional uint32 resync = 4;</code>
           */
          public boolean hasResync() {
            return ((bitField0_ & 0x00000008) == 0x00000008);
          }
          /**
           * <code>optional uint32 resync = 4;</code>
           */
          public int getResync() {
            return resync_;
          }
          /**
           * <code>optional uint32 resync = 4;</code>
           */
          public Builder setResync(int value) {
            bitField0_ |= 0x00000008;
            resync_ = value;
            onChanged();
            return this;
          }
          /**
           * <code>optional uint32 resync = 4;</code>
           */
          public Builder clearResync() {
            bitField0_ = (bitField0_ & ~0x00000008);
            resync_ = 0;
            onChanged();
            return this;
          }
          public final Builder setUnknownFields(
              final com.google.protobuf.UnknownFieldSet unknownFields) {
            return super.setUnknownFields(unknownFields);
          }
  
          public final Builder mergeUnknownFields(
              final com.google.protobuf.UnknownFieldSet unknownFields) {
            return super.mergeUnknownFields(unknownFields);
          }
  
  
          // @@protoc_insertion_point(builder_scope:MumbleProto.UserStats.Stats)
        }
  
        // @@protoc_insertion_point(class_scope:MumbleProto.UserStats.Stats)
        private static final com.morlunk.jumble.protobuf.Mumble.UserStats.Stats DEFAULT_INSTANCE;
        static {
          DEFAULT_INSTANCE = new com.morlunk.jumble.protobuf.Mumble.UserStats.Stats();
        }
  
        public static com.morlunk.jumble.protobuf.Mumble.UserStats.Stats getDefaultInstance() {
          return DEFAULT_INSTANCE;
        }
  
        @java.lang.Deprecated public static final com.google.protobuf.Parser<Stats>
            PARSER = new com.google.protobuf.AbstractParser<Stats>() {
          public Stats parsePartialFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
              return new Stats(input, extensionRegistry);
          }
        };
  
        public static com.google.protobuf.Parser<Stats> parser() {
          return PARSER;
        }
  
        @java.lang.Override
        public com.google.protobuf.Parser<Stats> getParserForType() {
          return PARSER;
        }
  
        public com.morlunk.jumble.protobuf.Mumble.UserStats.Stats getDefaultInstanceForType() {
          return DEFAULT_INSTANCE;
        }
  
      }
  
      private int bitField0_;
      public static final int SESSION_FIELD_NUMBER = 1;
      private int session_;
      /**
       * <code>optional uint32 session = 1;</code>
       */
      public boolean hasSession() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>optional uint32 session = 1;</code>
       */
      public int getSession() {
        return session_;
      }
  
      public static final int STATS_ONLY_FIELD_NUMBER = 2;
      private boolean statsOnly_;
      /**
       * <code>optional bool stats_only = 2 [default = false];</code>
       */
      public boolean hasStatsOnly() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional bool stats_only = 2 [default = false];</code>
       */
      public boolean getStatsOnly() {
        return statsOnly_;
      }
  
      public static final int CERTIFICATES_FIELD_NUMBER = 3;
      private java.util.List<com.google.protobuf.ByteString> certificates_;
      /**
       * <code>repeated bytes certificates = 3;</code>
       */
      public java.util.List<com.google.protobuf.ByteString>
          getCertificatesList() {
        return certificates_;
      }
      /**
       * <code>repeated bytes certificates = 3;</code>
       */
      public int getCertificatesCount() {
        return certificates_.size();
      }
      /**
       * <code>repeated bytes certificates = 3;</code>
       */
      public com.google.protobuf.ByteString getCertificates(int index) {
        return certificates_.get(index);
      }
  
      public static final int FROM_CLIENT_FIELD_NUMBER = 4;
      private com.morlunk.jumble.protobuf.Mumble.UserStats.Stats fromClient_;
      /**
       * <code>optional .MumbleProto.UserStats.Stats from_client = 4;</code>
       */
      public boolean hasFromClient() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>optional .MumbleProto.UserStats.Stats from_client = 4;</code>
       */
      public com.morlunk.jumble.protobuf.Mumble.UserStats.Stats getFromClient() {
        return fromClient_ == null ? com.morlunk.jumble.protobuf.Mumble.UserStats.Stats.getDefaultInstance() : fromClient_;
      }
      /**
       * <code>optional .MumbleProto.UserStats.Stats from_client = 4;</code>
       */
      public com.morlunk.jumble.protobuf.Mumble.UserStats.StatsOrBuilder getFromClientOrBuilder() {
        return fromClient_ == null ? com.morlunk.jumble.protobuf.Mumble.UserStats.Stats.getDefaultInstance() : fromClient_;
      }
  
      public static final int FROM_SERVER_FIELD_NUMBER = 5;
      private com.morlunk.jumble.protobuf.Mumble.UserStats.Stats fromServer_;
      /**
       * <code>optional .MumbleProto.UserStats.Stats from_server = 5;</code>
       */
      public boolean hasFromServer() {
        return ((bitField0_ & 0x00000008) == 0x00000008);
      }
      /**
       * <code>optional .MumbleProto.UserStats.Stats from_server = 5;</code>
       */
      public com.morlunk.jumble.protobuf.Mumble.UserStats.Stats getFromServer() {
        return fromServer_ == null ? com.morlunk.jumble.protobuf.Mumble.UserStats.Stats.getDefaultInstance() : fromServer_;
      }
      /**
       * <code>optional .MumbleProto.UserStats.Stats from_server = 5;</code>
       */
      public com.morlunk.jumble.protobuf.Mumble.UserStats.StatsOrBuilder getFromServerOrBuilder() {
        return fromServer_ == null ? com.morlunk.jumble.protobuf.Mumble.UserStats.Stats.getDefaultInstance() : fromServer_;
      }
  
      public static final int UDP_PACKETS_FIELD_NUMBER = 6;
      private int udpPackets_;
      /**
       * <code>optional uint32 udp_packets = 6;</code>
       */
      public boolean hasUdpPackets() {
        return ((bitField0_ & 0x00000010) == 0x00000010);
      }
      /**
       * <code>optional uint32 udp_packets = 6;</code>
       */
      public int getUdpPackets() {
        return udpPackets_;
      }
  
      public static final int TCP_PACKETS_FIELD_NUMBER = 7;
      private int tcpPackets_;
      /**
       * <code>optional uint32 tcp_packets = 7;</code>
       */
      public boolean hasTcpPackets() {
        return ((bitField0_ & 0x00000020) == 0x00000020);
      }
      /**
       * <code>optional uint32 tcp_packets = 7;</code>
       */
      public int getTcpPackets() {
        return tcpPackets_;
      }
  
      public static final int UDP_PING_AVG_FIELD_NUMBER = 8;
      private float udpPingAvg_;
      /**
       * <code>optional float udp_ping_avg = 8;</code>
       */
      public boolean hasUdpPingAvg() {
        return ((bitField0_ & 0x00000040) == 0x00000040);
      }
      /**
       * <code>optional float udp_ping_avg = 8;</code>
       */
      public float getUdpPingAvg() {
        return udpPingAvg_;
      }
  
      public static final int UDP_PING_VAR_FIELD_NUMBER = 9;
      private float udpPingVar_;
      /**
       * <code>optional float udp_ping_var = 9;</code>
       */
      public boolean hasUdpPingVar() {
        return ((bitField0_ & 0x00000080) == 0x00000080);
      }
      /**
       * <code>optional float udp_ping_var = 9;</code>
       */
      public float getUdpPingVar() {
        return udpPingVar_;
      }
  
      public static final int TCP_PING_AVG_FIELD_NUMBER = 10;
      private float tcpPingAvg_;
      /**
       * <code>optional float tcp_ping_avg = 10;</code>
       */
      public boolean hasTcpPingAvg() {
        return ((bitField0_ & 0x00000100) == 0x00000100);
      }
      /**
       * <code>optional float tcp_ping_avg = 10;</code>
       */
      public float getTcpPingAvg() {
        return tcpPingAvg_;
      }
  
      public static final int TCP_PING_VAR_FIELD_NUMBER = 11;
      private float tcpPingVar_;
      /**
       * <code>optional float tcp_ping_var = 11;</code>
       */
      public boolean hasTcpPingVar() {
        return ((bitField0_ & 0x00000200) == 0x00000200);
      }
      /**
       * <code>optional float tcp_ping_var = 11;</code>
       */
      public float getTcpPingVar() {
        return tcpPingVar_;
      }
  
      public static final int VERSION_FIELD_NUMBER = 12;
      private com.morlunk.jumble.protobuf.Mumble.Version version_;
      /**
       * <code>optional .MumbleProto.Version version = 12;</code>
       */
      public boolean hasVersion() {
        return ((bitField0_ & 0x00000400) == 0x00000400);
      }
      /**
       * <code>optional .MumbleProto.Version version = 12;</code>
       */
      public com.morlunk.jumble.protobuf.Mumble.Version getVersion() {
        return version_ == null ? com.morlunk.jumble.protobuf.Mumble.Version.getDefaultInstance() : version_;
      }
      /**
       * <code>optional .MumbleProto.Version version = 12;</code>
       */
      public com.morlunk.jumble.protobuf.Mumble.VersionOrBuilder getVersionOrBuilder() {
        return version_ == null ? com.morlunk.jumble.protobuf.Mumble.Version.getDefaultInstance() : version_;
      }
  
      public static final int CELT_VERSIONS_FIELD_NUMBER = 13;
      private java.util.List<java.lang.Integer> celtVersions_;
      /**
       * <code>repeated int32 celt_versions = 13;</code>
       */
      public java.util.List<java.lang.Integer>
          getCeltVersionsList() {
        return celtVersions_;
      }
      /**
       * <code>repeated int32 celt_versions = 13;</code>
       */
      public int getCeltVersionsCount() {
        return celtVersions_.size();
      }
      /**
       * <code>repeated int32 celt_versions = 13;</code>
       */
      public int getCeltVersions(int index) {
        return celtVersions_.get(index);
      }
  
      public static final int ADDRESS_FIELD_NUMBER = 14;
      private com.google.protobuf.ByteString address_;
      /**
       * <code>optional bytes address = 14;</code>
       */
      public boolean hasAddress() {
        return ((bitField0_ & 0x00000800) == 0x00000800);
      }
      /**
       * <code>optional bytes address = 14;</code>
       */
      public com.google.protobuf.ByteString getAddress() {
        return address_;
      }
  
      public static final int BANDWIDTH_FIELD_NUMBER = 15;
      private int bandwidth_;
      /**
       * <code>optional uint32 bandwidth = 15;</code>
       */
      public boolean hasBandwidth() {
        return ((bitField0_ & 0x00001000) == 0x00001000);
      }
      /**
       * <code>optional uint32 bandwidth = 15;</code>
       */
      public int getBandwidth() {
        return bandwidth_;
      }
  
      public static final int ONLINESECS_FIELD_NUMBER = 16;
      private int onlinesecs_;
      /**
       * <code>optional uint32 onlinesecs = 16;</code>
       */
      public boolean hasOnlinesecs() {
        return ((bitField0_ & 0x00002000) == 0x00002000);
      }
      /**
       * <code>optional uint32 onlinesecs = 16;</code>
       */
      public int getOnlinesecs() {
        return onlinesecs_;
      }
  
      public static final int IDLESECS_FIELD_NUMBER = 17;
      private int idlesecs_;
      /**
       * <code>optional uint32 idlesecs = 17;</code>
       */
      public boolean hasIdlesecs() {
        return ((bitField0_ & 0x00004000) == 0x00004000);
      }
      /**
       * <code>optional uint32 idlesecs = 17;</code>
       */
      public int getIdlesecs() {
        return idlesecs_;
      }
  
      public static final int STRONG_CERTIFICATE_FIELD_NUMBER = 18;
      private boolean strongCertificate_;
      /**
       * <code>optional bool strong_certificate = 18 [default = false];</code>
       */
      public boolean hasStrongCertificate() {
        return ((bitField0_ & 0x00008000) == 0x00008000);
      }
      /**
       * <code>optional bool strong_certificate = 18 [default = false];</code>
       */
      public boolean getStrongCertificate() {
        return strongCertificate_;
      }
  
      public static final int OPUS_FIELD_NUMBER = 19;
      private boolean opus_;
      /**
       * <code>optional bool opus = 19 [default = false];</code>
       */
      public boolean hasOpus() {
        return ((bitField0_ & 0x00010000) == 0x00010000);
      }
      /**
       * <code>optional bool opus = 19 [default = false];</code>
       */
      public boolean getOpus() {
        return opus_;
      }
  
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        memoizedIsInitialized = 1;
        return true;
      }
  
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeUInt32(1, session_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          output.writeBool(2, statsOnly_);
        }
        for (int i = 0; i < certificates_.size(); i++) {
          output.writeBytes(3, certificates_.get(i));
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          output.writeMessage(4, getFromClient());
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          output.writeMessage(5, getFromServer());
        }
        if (((bitField0_ & 0x00000010) == 0x00000010)) {
          output.writeUInt32(6, udpPackets_);
        }
        if (((bitField0_ & 0x00000020) == 0x00000020)) {
          output.writeUInt32(7, tcpPackets_);
        }
        if (((bitField0_ & 0x00000040) == 0x00000040)) {
          output.writeFloat(8, udpPingAvg_);
        }
        if (((bitField0_ & 0x00000080) == 0x00000080)) {
          output.writeFloat(9, udpPingVar_);
        }
        if (((bitField0_ & 0x00000100) == 0x00000100)) {
          output.writeFloat(10, tcpPingAvg_);
        }
        if (((bitField0_ & 0x00000200) == 0x00000200)) {
          output.writeFloat(11, tcpPingVar_);
        }
        if (((bitField0_ & 0x00000400) == 0x00000400)) {
          output.writeMessage(12, getVersion());
        }
        for (int i = 0; i < celtVersions_.size(); i++) {
          output.writeInt32(13, celtVersions_.get(i));
        }
        if (((bitField0_ & 0x00000800) == 0x00000800)) {
          output.writeBytes(14, address_);
        }
        if (((bitField0_ & 0x00001000) == 0x00001000)) {
          output.writeUInt32(15, bandwidth_);
        }
        if (((bitField0_ & 0x00002000) == 0x00002000)) {
          output.writeUInt32(16, onlinesecs_);
        }
        if (((bitField0_ & 0x00004000) == 0x00004000)) {
          output.writeUInt32(17, idlesecs_);
        }
        if (((bitField0_ & 0x00008000) == 0x00008000)) {
          output.writeBool(18, strongCertificate_);
        }
        if (((bitField0_ & 0x00010000) == 0x00010000)) {
          output.writeBool(19, opus_);
        }
        unknownFields.writeTo(output);
      }
  
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(1, session_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBoolSize(2, statsOnly_);
        }
        {
          int dataSize = 0;
          for (int i = 0; i < certificates_.size(); i++) {
            dataSize += com.google.protobuf.CodedOutputStream
              .computeBytesSizeNoTag(certificates_.get(i));
          }
          size += dataSize;
          size += 1 * getCertificatesList().size();
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(4, getFromClient());
        }
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(5, getFromServer());
        }
        if (((bitField0_ & 0x00000010) == 0x00000010)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(6, udpPackets_);
        }
        if (((bitField0_ & 0x00000020) == 0x00000020)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(7, tcpPackets_);
        }
        if (((bitField0_ & 0x00000040) == 0x00000040)) {
          size += com.google.protobuf.CodedOutputStream
            .computeFloatSize(8, udpPingAvg_);
        }
        if (((bitField0_ & 0x00000080) == 0x00000080)) {
          size += com.google.protobuf.CodedOutputStream
            .computeFloatSize(9, udpPingVar_);
        }
        if (((bitField0_ & 0x00000100) == 0x00000100)) {
          size += com.google.protobuf.CodedOutputStream
            .computeFloatSize(10, tcpPingAvg_);
        }
        if (((bitField0_ & 0x00000200) == 0x00000200)) {
          size += com.google.protobuf.CodedOutputStream
            .computeFloatSize(11, tcpPingVar_);
        }
        if (((bitField0_ & 0x00000400) == 0x00000400)) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(12, getVersion());
        }
        {
          int dataSize = 0;
          for (int i = 0; i < celtVersions_.size(); i++) {
            dataSize += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(celtVersions_.get(i));
          }
          size += dataSize;
          size += 1 * getCeltVersionsList().size();
        }
        if (((bitField0_ & 0x00000800) == 0x00000800)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBytesSize(14, address_);
        }
        if (((bitField0_ & 0x00001000) == 0x00001000)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(15, bandwidth_);
        }
        if (((bitField0_ & 0x00002000) == 0x00002000)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(16, onlinesecs_);
        }
        if (((bitField0_ & 0x00004000) == 0x00004000)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(17, idlesecs_);
        }
        if (((bitField0_ & 0x00008000) == 0x00008000)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBoolSize(18, strongCertificate_);
        }
        if (((bitField0_ & 0x00010000) == 0x00010000)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBoolSize(19, opus_);
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }
  
      private static final long serialVersionUID = 0L;
      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.morlunk.jumble.protobuf.Mumble.UserStats)) {
          return super.equals(obj);
        }
        com.morlunk.jumble.protobuf.Mumble.UserStats other = (com.morlunk.jumble.protobuf.Mumble.UserStats) obj;
  
        boolean result = true;
        result = result && (hasSession() == other.hasSession());
        if (hasSession()) {
          result = result && (getSession()
              == other.getSession());
        }
        result = result && (hasStatsOnly() == other.hasStatsOnly());
        if (hasStatsOnly()) {
          result = result && (getStatsOnly()
              == other.getStatsOnly());
        }
        result = result && getCertificatesList()
            .equals(other.getCertificatesList());
        result = result && (hasFromClient() == other.hasFromClient());
        if (hasFromClient()) {
          result = result && getFromClient()
              .equals(other.getFromClient());
        }
        result = result && (hasFromServer() == other.hasFromServer());
        if (hasFromServer()) {
          result = result && getFromServer()
              .equals(other.getFromServer());
        }
        result = result && (hasUdpPackets() == other.hasUdpPackets());
        if (hasUdpPackets()) {
          result = result && (getUdpPackets()
              == other.getUdpPackets());
        }
        result = result && (hasTcpPackets() == other.hasTcpPackets());
        if (hasTcpPackets()) {
          result = result && (getTcpPackets()
              == other.getTcpPackets());
        }
        result = result && (hasUdpPingAvg() == other.hasUdpPingAvg());
        if (hasUdpPingAvg()) {
          result = result && (
              java.lang.Float.floatToIntBits(getUdpPingAvg())
              == java.lang.Float.floatToIntBits(
                  other.getUdpPingAvg()));
        }
        result = result && (hasUdpPingVar() == other.hasUdpPingVar());
        if (hasUdpPingVar()) {
          result = result && (
              java.lang.Float.floatToIntBits(getUdpPingVar())
              == java.lang.Float.floatToIntBits(
                  other.getUdpPingVar()));
        }
        result = result && (hasTcpPingAvg() == other.hasTcpPingAvg());
        if (hasTcpPingAvg()) {
          result = result && (
              java.lang.Float.floatToIntBits(getTcpPingAvg())
              == java.lang.Float.floatToIntBits(
                  other.getTcpPingAvg()));
        }
        result = result && (hasTcpPingVar() == other.hasTcpPingVar());
        if (hasTcpPingVar()) {
          result = result && (
              java.lang.Float.floatToIntBits(getTcpPingVar())
              == java.lang.Float.floatToIntBits(
                  other.getTcpPingVar()));
        }
        result = result && (hasVersion() == other.hasVersion());
        if (hasVersion()) {
          result = result && getVersion()
              .equals(other.getVersion());
        }
        result = result && getCeltVersionsList()
            .equals(other.getCeltVersionsList());
        result = result && (hasAddress() == other.hasAddress());
        if (hasAddress()) {
          result = result && getAddress()
              .equals(other.getAddress());
        }
        result = result && (hasBandwidth() == other.hasBandwidth());
        if (hasBandwidth()) {
          result = result && (getBandwidth()
              == other.getBandwidth());
        }
        result = result && (hasOnlinesecs() == other.hasOnlinesecs());
        if (hasOnlinesecs()) {
          result = result && (getOnlinesecs()
              == other.getOnlinesecs());
        }
        result = result && (hasIdlesecs() == other.hasIdlesecs());
        if (hasIdlesecs()) {
          result = result && (getIdlesecs()
              == other.getIdlesecs());
        }
        result = result && (hasStrongCertificate() == other.hasStrongCertificate());
        if (hasStrongCertificate()) {
          result = result && (getStrongCertificate()
              == other.getStrongCertificate());
        }
        result = result && (hasOpus() == other.hasOpus());
        if (hasOpus()) {
          result = result && (getOpus()
              == other.getOpus());
        }
        result = result && unknownFields.equals(other.unknownFields);
        return result;
      }
  
      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptorForType().hashCode();
        if (hasSession()) {
          hash = (37 * hash) + SESSION_FIELD_NUMBER;
          hash = (53 * hash) + getSession();
        }
        if (hasStatsOnly()) {
          hash = (37 * hash) + STATS_ONLY_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
              getStatsOnly());
        }
        if (getCertificatesCount() > 0) {
          hash = (37 * hash) + CERTIFICATES_FIELD_NUMBER;
          hash = (53 * hash) + getCertificatesList().hashCode();
        }
        if (hasFromClient()) {
          hash = (37 * hash) + FROM_CLIENT_FIELD_NUMBER;
          hash = (53 * hash) + getFromClient().hashCode();
        }
        if (hasFromServer()) {
          hash = (37 * hash) + FROM_SERVER_FIELD_NUMBER;
          hash = (53 * hash) + getFromServer().hashCode();
        }
        if (hasUdpPackets()) {
          hash = (37 * hash) + UDP_PACKETS_FIELD_NUMBER;
          hash = (53 * hash) + getUdpPackets();
        }
        if (hasTcpPackets()) {
          hash = (37 * hash) + TCP_PACKETS_FIELD_NUMBER;
          hash = (53 * hash) + getTcpPackets();
        }
        if (hasUdpPingAvg()) {
          hash = (37 * hash) + UDP_PING_AVG_FIELD_NUMBER;
          hash = (53 * hash) + java.lang.Float.floatToIntBits(
              getUdpPingAvg());
        }
        if (hasUdpPingVar()) {
          hash = (37 * hash) + UDP_PING_VAR_FIELD_NUMBER;
          hash = (53 * hash) + java.lang.Float.floatToIntBits(
              getUdpPingVar());
        }
        if (hasTcpPingAvg()) {
          hash = (37 * hash) + TCP_PING_AVG_FIELD_NUMBER;
          hash = (53 * hash) + java.lang.Float.floatToIntBits(
              getTcpPingAvg());
        }
        if (hasTcpPingVar()) {
          hash = (37 * hash) + TCP_PING_VAR_FIELD_NUMBER;
          hash = (53 * hash) + java.lang.Float.floatToIntBits(
              getTcpPingVar());
        }
        if (hasVersion()) {
          hash = (37 * hash) + VERSION_FIELD_NUMBER;
          hash = (53 * hash) + getVersion().hashCode();
        }
        if (getCeltVersionsCount() > 0) {
          hash = (37 * hash) + CELT_VERSIONS_FIELD_NUMBER;
          hash = (53 * hash) + getCeltVersionsList().hashCode();
        }
        if (hasAddress()) {
          hash = (37 * hash) + ADDRESS_FIELD_NUMBER;
          hash = (53 * hash) + getAddress().hashCode();
        }
        if (hasBandwidth()) {
          hash = (37 * hash) + BANDWIDTH_FIELD_NUMBER;
          hash = (53 * hash) + getBandwidth();
        }
        if (hasOnlinesecs()) {
          hash = (37 * hash) + ONLINESECS_FIELD_NUMBER;
          hash = (53 * hash) + getOnlinesecs();
        }
        if (hasIdlesecs()) {
          hash = (37 * hash) + IDLESECS_FIELD_NUMBER;
          hash = (53 * hash) + getIdlesecs();
        }
        if (hasStrongCertificate()) {
          hash = (37 * hash) + STRONG_CERTIFICATE_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
              getStrongCertificate());
        }
        if (hasOpus()) {
          hash = (37 * hash) + OPUS_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
              getOpus());
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static com.morlunk.jumble.protobuf.Mumble.UserStats parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.morlunk.jumble.protobuf.Mumble.UserStats parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.UserStats parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.morlunk.jumble.protobuf.Mumble.UserStats parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.UserStats parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.morlunk.jumble.protobuf.Mumble.UserStats parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.UserStats parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.morlunk.jumble.protobuf.Mumble.UserStats parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.UserStats parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.morlunk.jumble.protobuf.Mumble.UserStats parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
  
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(com.morlunk.jumble.protobuf.Mumble.UserStats prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }
  
      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code MumbleProto.UserStats}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:MumbleProto.UserStats)
          com.morlunk.jumble.protobuf.Mumble.UserStatsOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_UserStats_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_UserStats_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.morlunk.jumble.protobuf.Mumble.UserStats.class, com.morlunk.jumble.protobuf.Mumble.UserStats.Builder.class);
        }
  
        // Construct using com.morlunk.jumble.protobuf.Mumble.UserStats.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
  
        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
            getFromClientFieldBuilder();
            getFromServerFieldBuilder();
            getVersionFieldBuilder();
          }
        }
        public Builder clear() {
          super.clear();
          session_ = 0;
          bitField0_ = (bitField0_ & ~0x00000001);
          statsOnly_ = false;
          bitField0_ = (bitField0_ & ~0x00000002);
          certificates_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000004);
          if (fromClientBuilder_ == null) {
            fromClient_ = null;
          } else {
            fromClientBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000008);
          if (fromServerBuilder_ == null) {
            fromServer_ = null;
          } else {
            fromServerBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000010);
          udpPackets_ = 0;
          bitField0_ = (bitField0_ & ~0x00000020);
          tcpPackets_ = 0;
          bitField0_ = (bitField0_ & ~0x00000040);
          udpPingAvg_ = 0F;
          bitField0_ = (bitField0_ & ~0x00000080);
          udpPingVar_ = 0F;
          bitField0_ = (bitField0_ & ~0x00000100);
          tcpPingAvg_ = 0F;
          bitField0_ = (bitField0_ & ~0x00000200);
          tcpPingVar_ = 0F;
          bitField0_ = (bitField0_ & ~0x00000400);
          if (versionBuilder_ == null) {
            version_ = null;
          } else {
            versionBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000800);
          celtVersions_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00001000);
          address_ = com.google.protobuf.ByteString.EMPTY;
          bitField0_ = (bitField0_ & ~0x00002000);
          bandwidth_ = 0;
          bitField0_ = (bitField0_ & ~0x00004000);
          onlinesecs_ = 0;
          bitField0_ = (bitField0_ & ~0x00008000);
          idlesecs_ = 0;
          bitField0_ = (bitField0_ & ~0x00010000);
          strongCertificate_ = false;
          bitField0_ = (bitField0_ & ~0x00020000);
          opus_ = false;
          bitField0_ = (bitField0_ & ~0x00040000);
          return this;
        }
  
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_UserStats_descriptor;
        }
  
        public com.morlunk.jumble.protobuf.Mumble.UserStats getDefaultInstanceForType() {
          return com.morlunk.jumble.protobuf.Mumble.UserStats.getDefaultInstance();
        }
  
        public com.morlunk.jumble.protobuf.Mumble.UserStats build() {
          com.morlunk.jumble.protobuf.Mumble.UserStats result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        public com.morlunk.jumble.protobuf.Mumble.UserStats buildPartial() {
          com.morlunk.jumble.protobuf.Mumble.UserStats result = new com.morlunk.jumble.protobuf.Mumble.UserStats(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.session_ = session_;
          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
            to_bitField0_ |= 0x00000002;
          }
          result.statsOnly_ = statsOnly_;
          if (((bitField0_ & 0x00000004) == 0x00000004)) {
            certificates_ = java.util.Collections.unmodifiableList(certificates_);
            bitField0_ = (bitField0_ & ~0x00000004);
          }
          result.certificates_ = certificates_;
          if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
            to_bitField0_ |= 0x00000004;
          }
          if (fromClientBuilder_ == null) {
            result.fromClient_ = fromClient_;
          } else {
            result.fromClient_ = fromClientBuilder_.build();
          }
          if (((from_bitField0_ & 0x00000010) == 0x00000010)) {
            to_bitField0_ |= 0x00000008;
          }
          if (fromServerBuilder_ == null) {
            result.fromServer_ = fromServer_;
          } else {
            result.fromServer_ = fromServerBuilder_.build();
          }
          if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
            to_bitField0_ |= 0x00000010;
          }
          result.udpPackets_ = udpPackets_;
          if (((from_bitField0_ & 0x00000040) == 0x00000040)) {
            to_bitField0_ |= 0x00000020;
          }
          result.tcpPackets_ = tcpPackets_;
          if (((from_bitField0_ & 0x00000080) == 0x00000080)) {
            to_bitField0_ |= 0x00000040;
          }
          result.udpPingAvg_ = udpPingAvg_;
          if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
            to_bitField0_ |= 0x00000080;
          }
          result.udpPingVar_ = udpPingVar_;
          if (((from_bitField0_ & 0x00000200) == 0x00000200)) {
            to_bitField0_ |= 0x00000100;
          }
          result.tcpPingAvg_ = tcpPingAvg_;
          if (((from_bitField0_ & 0x00000400) == 0x00000400)) {
            to_bitField0_ |= 0x00000200;
          }
          result.tcpPingVar_ = tcpPingVar_;
          if (((from_bitField0_ & 0x00000800) == 0x00000800)) {
            to_bitField0_ |= 0x00000400;
          }
          if (versionBuilder_ == null) {
            result.version_ = version_;
          } else {
            result.version_ = versionBuilder_.build();
          }
          if (((bitField0_ & 0x00001000) == 0x00001000)) {
            celtVersions_ = java.util.Collections.unmodifiableList(celtVersions_);
            bitField0_ = (bitField0_ & ~0x00001000);
          }
          result.celtVersions_ = celtVersions_;
          if (((from_bitField0_ & 0x00002000) == 0x00002000)) {
            to_bitField0_ |= 0x00000800;
          }
          result.address_ = address_;
          if (((from_bitField0_ & 0x00004000) == 0x00004000)) {
            to_bitField0_ |= 0x00001000;
          }
          result.bandwidth_ = bandwidth_;
          if (((from_bitField0_ & 0x00008000) == 0x00008000)) {
            to_bitField0_ |= 0x00002000;
          }
          result.onlinesecs_ = onlinesecs_;
          if (((from_bitField0_ & 0x00010000) == 0x00010000)) {
            to_bitField0_ |= 0x00004000;
          }
          result.idlesecs_ = idlesecs_;
          if (((from_bitField0_ & 0x00020000) == 0x00020000)) {
            to_bitField0_ |= 0x00008000;
          }
          result.strongCertificate_ = strongCertificate_;
          if (((from_bitField0_ & 0x00040000) == 0x00040000)) {
            to_bitField0_ |= 0x00010000;
          }
          result.opus_ = opus_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
  
        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.setField(field, value);
        }
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return (Builder) super.clearField(field);
        }
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return (Builder) super.clearOneof(oneof);
        }
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.morlunk.jumble.protobuf.Mumble.UserStats) {
            return mergeFrom((com.morlunk.jumble.protobuf.Mumble.UserStats)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(com.morlunk.jumble.protobuf.Mumble.UserStats other) {
          if (other == com.morlunk.jumble.protobuf.Mumble.UserStats.getDefaultInstance()) return this;
          if (other.hasSession()) {
            setSession(other.getSession());
          }
          if (other.hasStatsOnly()) {
            setStatsOnly(other.getStatsOnly());
          }
          if (!other.certificates_.isEmpty()) {
            if (certificates_.isEmpty()) {
              certificates_ = other.certificates_;
              bitField0_ = (bitField0_ & ~0x00000004);
            } else {
              ensureCertificatesIsMutable();
              certificates_.addAll(other.certificates_);
            }
            onChanged();
          }
          if (other.hasFromClient()) {
            mergeFromClient(other.getFromClient());
          }
          if (other.hasFromServer()) {
            mergeFromServer(other.getFromServer());
          }
          if (other.hasUdpPackets()) {
            setUdpPackets(other.getUdpPackets());
          }
          if (other.hasTcpPackets()) {
            setTcpPackets(other.getTcpPackets());
          }
          if (other.hasUdpPingAvg()) {
            setUdpPingAvg(other.getUdpPingAvg());
          }
          if (other.hasUdpPingVar()) {
            setUdpPingVar(other.getUdpPingVar());
          }
          if (other.hasTcpPingAvg()) {
            setTcpPingAvg(other.getTcpPingAvg());
          }
          if (other.hasTcpPingVar()) {
            setTcpPingVar(other.getTcpPingVar());
          }
          if (other.hasVersion()) {
            mergeVersion(other.getVersion());
          }
          if (!other.celtVersions_.isEmpty()) {
            if (celtVersions_.isEmpty()) {
              celtVersions_ = other.celtVersions_;
              bitField0_ = (bitField0_ & ~0x00001000);
            } else {
              ensureCeltVersionsIsMutable();
              celtVersions_.addAll(other.celtVersions_);
            }
            onChanged();
          }
          if (other.hasAddress()) {
            setAddress(other.getAddress());
          }
          if (other.hasBandwidth()) {
            setBandwidth(other.getBandwidth());
          }
          if (other.hasOnlinesecs()) {
            setOnlinesecs(other.getOnlinesecs());
          }
          if (other.hasIdlesecs()) {
            setIdlesecs(other.getIdlesecs());
          }
          if (other.hasStrongCertificate()) {
            setStrongCertificate(other.getStrongCertificate());
          }
          if (other.hasOpus()) {
            setOpus(other.getOpus());
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }
  
        public final boolean isInitialized() {
          return true;
        }
  
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.morlunk.jumble.protobuf.Mumble.UserStats parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (com.morlunk.jumble.protobuf.Mumble.UserStats) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;
  
        private int session_ ;
        /**
         * <code>optional uint32 session = 1;</code>
         */
        public boolean hasSession() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <code>optional uint32 session = 1;</code>
         */
        public int getSession() {
          return session_;
        }
        /**
         * <code>optional uint32 session = 1;</code>
         */
        public Builder setSession(int value) {
          bitField0_ |= 0x00000001;
          session_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional uint32 session = 1;</code>
         */
        public Builder clearSession() {
          bitField0_ = (bitField0_ & ~0x00000001);
          session_ = 0;
          onChanged();
          return this;
        }
  
        private boolean statsOnly_ ;
        /**
         * <code>optional bool stats_only = 2 [default = false];</code>
         */
        public boolean hasStatsOnly() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * <code>optional bool stats_only = 2 [default = false];</code>
         */
        public boolean getStatsOnly() {
          return statsOnly_;
        }
        /**
         * <code>optional bool stats_only = 2 [default = false];</code>
         */
        public Builder setStatsOnly(boolean value) {
          bitField0_ |= 0x00000002;
          statsOnly_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional bool stats_only = 2 [default = false];</code>
         */
        public Builder clearStatsOnly() {
          bitField0_ = (bitField0_ & ~0x00000002);
          statsOnly_ = false;
          onChanged();
          return this;
        }
  
        private java.util.List<com.google.protobuf.ByteString> certificates_ = java.util.Collections.emptyList();
        private void ensureCertificatesIsMutable() {
          if (!((bitField0_ & 0x00000004) == 0x00000004)) {
            certificates_ = new java.util.ArrayList<com.google.protobuf.ByteString>(certificates_);
            bitField0_ |= 0x00000004;
           }
        }
        /**
         * <code>repeated bytes certificates = 3;</code>
         */
        public java.util.List<com.google.protobuf.ByteString>
            getCertificatesList() {
          return java.util.Collections.unmodifiableList(certificates_);
        }
        /**
         * <code>repeated bytes certificates = 3;</code>
         */
        public int getCertificatesCount() {
          return certificates_.size();
        }
        /**
         * <code>repeated bytes certificates = 3;</code>
         */
        public com.google.protobuf.ByteString getCertificates(int index) {
          return certificates_.get(index);
        }
        /**
         * <code>repeated bytes certificates = 3;</code>
         */
        public Builder setCertificates(
            int index, com.google.protobuf.ByteString value) {
          if (value == null) {
      throw new NullPointerException();
    }
    ensureCertificatesIsMutable();
          certificates_.set(index, value);
          onChanged();
          return this;
        }
        /**
         * <code>repeated bytes certificates = 3;</code>
         */
        public Builder addCertificates(com.google.protobuf.ByteString value) {
          if (value == null) {
      throw new NullPointerException();
    }
    ensureCertificatesIsMutable();
          certificates_.add(value);
          onChanged();
          return this;
        }
        /**
         * <code>repeated bytes certificates = 3;</code>
         */
        public Builder addAllCertificates(
            java.lang.Iterable<? extends com.google.protobuf.ByteString> values) {
          ensureCertificatesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, certificates_);
          onChanged();
          return this;
        }
        /**
         * <code>repeated bytes certificates = 3;</code>
         */
        public Builder clearCertificates() {
          certificates_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000004);
          onChanged();
          return this;
        }
  
        private com.morlunk.jumble.protobuf.Mumble.UserStats.Stats fromClient_ = null;
        private com.google.protobuf.SingleFieldBuilderV3<
            com.morlunk.jumble.protobuf.Mumble.UserStats.Stats, com.morlunk.jumble.protobuf.Mumble.UserStats.Stats.Builder, com.morlunk.jumble.protobuf.Mumble.UserStats.StatsOrBuilder> fromClientBuilder_;
        /**
         * <code>optional .MumbleProto.UserStats.Stats from_client = 4;</code>
         */
        public boolean hasFromClient() {
          return ((bitField0_ & 0x00000008) == 0x00000008);
        }
        /**
         * <code>optional .MumbleProto.UserStats.Stats from_client = 4;</code>
         */
        public com.morlunk.jumble.protobuf.Mumble.UserStats.Stats getFromClient() {
          if (fromClientBuilder_ == null) {
            return fromClient_ == null ? com.morlunk.jumble.protobuf.Mumble.UserStats.Stats.getDefaultInstance() : fromClient_;
          } else {
            return fromClientBuilder_.getMessage();
          }
        }
        /**
         * <code>optional .MumbleProto.UserStats.Stats from_client = 4;</code>
         */
        public Builder setFromClient(com.morlunk.jumble.protobuf.Mumble.UserStats.Stats value) {
          if (fromClientBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            fromClient_ = value;
            onChanged();
          } else {
            fromClientBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000008;
          return this;
        }
        /**
         * <code>optional .MumbleProto.UserStats.Stats from_client = 4;</code>
         */
        public Builder setFromClient(
            com.morlunk.jumble.protobuf.Mumble.UserStats.Stats.Builder builderForValue) {
          if (fromClientBuilder_ == null) {
            fromClient_ = builderForValue.build();
            onChanged();
          } else {
            fromClientBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000008;
          return this;
        }
        /**
         * <code>optional .MumbleProto.UserStats.Stats from_client = 4;</code>
         */
        public Builder mergeFromClient(com.morlunk.jumble.protobuf.Mumble.UserStats.Stats value) {
          if (fromClientBuilder_ == null) {
            if (((bitField0_ & 0x00000008) == 0x00000008) &&
                fromClient_ != null &&
                fromClient_ != com.morlunk.jumble.protobuf.Mumble.UserStats.Stats.getDefaultInstance()) {
              fromClient_ =
                com.morlunk.jumble.protobuf.Mumble.UserStats.Stats.newBuilder(fromClient_).mergeFrom(value).buildPartial();
            } else {
              fromClient_ = value;
            }
            onChanged();
          } else {
            fromClientBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000008;
          return this;
        }
        /**
         * <code>optional .MumbleProto.UserStats.Stats from_client = 4;</code>
         */
        public Builder clearFromClient() {
          if (fromClientBuilder_ == null) {
            fromClient_ = null;
            onChanged();
          } else {
            fromClientBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000008);
          return this;
        }
        /**
         * <code>optional .MumbleProto.UserStats.Stats from_client = 4;</code>
         */
        public com.morlunk.jumble.protobuf.Mumble.UserStats.Stats.Builder getFromClientBuilder() {
          bitField0_ |= 0x00000008;
          onChanged();
          return getFromClientFieldBuilder().getBuilder();
        }
        /**
         * <code>optional .MumbleProto.UserStats.Stats from_client = 4;</code>
         */
        public com.morlunk.jumble.protobuf.Mumble.UserStats.StatsOrBuilder getFromClientOrBuilder() {
          if (fromClientBuilder_ != null) {
            return fromClientBuilder_.getMessageOrBuilder();
          } else {
            return fromClient_ == null ?
                com.morlunk.jumble.protobuf.Mumble.UserStats.Stats.getDefaultInstance() : fromClient_;
          }
        }
        /**
         * <code>optional .MumbleProto.UserStats.Stats from_client = 4;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            com.morlunk.jumble.protobuf.Mumble.UserStats.Stats, com.morlunk.jumble.protobuf.Mumble.UserStats.Stats.Builder, com.morlunk.jumble.protobuf.Mumble.UserStats.StatsOrBuilder> 
            getFromClientFieldBuilder() {
          if (fromClientBuilder_ == null) {
            fromClientBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                com.morlunk.jumble.protobuf.Mumble.UserStats.Stats, com.morlunk.jumble.protobuf.Mumble.UserStats.Stats.Builder, com.morlunk.jumble.protobuf.Mumble.UserStats.StatsOrBuilder>(
                    getFromClient(),
                    getParentForChildren(),
                    isClean());
            fromClient_ = null;
          }
          return fromClientBuilder_;
        }
  
        private com.morlunk.jumble.protobuf.Mumble.UserStats.Stats fromServer_ = null;
        private com.google.protobuf.SingleFieldBuilderV3<
            com.morlunk.jumble.protobuf.Mumble.UserStats.Stats, com.morlunk.jumble.protobuf.Mumble.UserStats.Stats.Builder, com.morlunk.jumble.protobuf.Mumble.UserStats.StatsOrBuilder> fromServerBuilder_;
        /**
         * <code>optional .MumbleProto.UserStats.Stats from_server = 5;</code>
         */
        public boolean hasFromServer() {
          return ((bitField0_ & 0x00000010) == 0x00000010);
        }
        /**
         * <code>optional .MumbleProto.UserStats.Stats from_server = 5;</code>
         */
        public com.morlunk.jumble.protobuf.Mumble.UserStats.Stats getFromServer() {
          if (fromServerBuilder_ == null) {
            return fromServer_ == null ? com.morlunk.jumble.protobuf.Mumble.UserStats.Stats.getDefaultInstance() : fromServer_;
          } else {
            return fromServerBuilder_.getMessage();
          }
        }
        /**
         * <code>optional .MumbleProto.UserStats.Stats from_server = 5;</code>
         */
        public Builder setFromServer(com.morlunk.jumble.protobuf.Mumble.UserStats.Stats value) {
          if (fromServerBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            fromServer_ = value;
            onChanged();
          } else {
            fromServerBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000010;
          return this;
        }
        /**
         * <code>optional .MumbleProto.UserStats.Stats from_server = 5;</code>
         */
        public Builder setFromServer(
            com.morlunk.jumble.protobuf.Mumble.UserStats.Stats.Builder builderForValue) {
          if (fromServerBuilder_ == null) {
            fromServer_ = builderForValue.build();
            onChanged();
          } else {
            fromServerBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000010;
          return this;
        }
        /**
         * <code>optional .MumbleProto.UserStats.Stats from_server = 5;</code>
         */
        public Builder mergeFromServer(com.morlunk.jumble.protobuf.Mumble.UserStats.Stats value) {
          if (fromServerBuilder_ == null) {
            if (((bitField0_ & 0x00000010) == 0x00000010) &&
                fromServer_ != null &&
                fromServer_ != com.morlunk.jumble.protobuf.Mumble.UserStats.Stats.getDefaultInstance()) {
              fromServer_ =
                com.morlunk.jumble.protobuf.Mumble.UserStats.Stats.newBuilder(fromServer_).mergeFrom(value).buildPartial();
            } else {
              fromServer_ = value;
            }
            onChanged();
          } else {
            fromServerBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000010;
          return this;
        }
        /**
         * <code>optional .MumbleProto.UserStats.Stats from_server = 5;</code>
         */
        public Builder clearFromServer() {
          if (fromServerBuilder_ == null) {
            fromServer_ = null;
            onChanged();
          } else {
            fromServerBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000010);
          return this;
        }
        /**
         * <code>optional .MumbleProto.UserStats.Stats from_server = 5;</code>
         */
        public com.morlunk.jumble.protobuf.Mumble.UserStats.Stats.Builder getFromServerBuilder() {
          bitField0_ |= 0x00000010;
          onChanged();
          return getFromServerFieldBuilder().getBuilder();
        }
        /**
         * <code>optional .MumbleProto.UserStats.Stats from_server = 5;</code>
         */
        public com.morlunk.jumble.protobuf.Mumble.UserStats.StatsOrBuilder getFromServerOrBuilder() {
          if (fromServerBuilder_ != null) {
            return fromServerBuilder_.getMessageOrBuilder();
          } else {
            return fromServer_ == null ?
                com.morlunk.jumble.protobuf.Mumble.UserStats.Stats.getDefaultInstance() : fromServer_;
          }
        }
        /**
         * <code>optional .MumbleProto.UserStats.Stats from_server = 5;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            com.morlunk.jumble.protobuf.Mumble.UserStats.Stats, com.morlunk.jumble.protobuf.Mumble.UserStats.Stats.Builder, com.morlunk.jumble.protobuf.Mumble.UserStats.StatsOrBuilder> 
            getFromServerFieldBuilder() {
          if (fromServerBuilder_ == null) {
            fromServerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                com.morlunk.jumble.protobuf.Mumble.UserStats.Stats, com.morlunk.jumble.protobuf.Mumble.UserStats.Stats.Builder, com.morlunk.jumble.protobuf.Mumble.UserStats.StatsOrBuilder>(
                    getFromServer(),
                    getParentForChildren(),
                    isClean());
            fromServer_ = null;
          }
          return fromServerBuilder_;
        }
  
        private int udpPackets_ ;
        /**
         * <code>optional uint32 udp_packets = 6;</code>
         */
        public boolean hasUdpPackets() {
          return ((bitField0_ & 0x00000020) == 0x00000020);
        }
        /**
         * <code>optional uint32 udp_packets = 6;</code>
         */
        public int getUdpPackets() {
          return udpPackets_;
        }
        /**
         * <code>optional uint32 udp_packets = 6;</code>
         */
        public Builder setUdpPackets(int value) {
          bitField0_ |= 0x00000020;
          udpPackets_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional uint32 udp_packets = 6;</code>
         */
        public Builder clearUdpPackets() {
          bitField0_ = (bitField0_ & ~0x00000020);
          udpPackets_ = 0;
          onChanged();
          return this;
        }
  
        private int tcpPackets_ ;
        /**
         * <code>optional uint32 tcp_packets = 7;</code>
         */
        public boolean hasTcpPackets() {
          return ((bitField0_ & 0x00000040) == 0x00000040);
        }
        /**
         * <code>optional uint32 tcp_packets = 7;</code>
         */
        public int getTcpPackets() {
          return tcpPackets_;
        }
        /**
         * <code>optional uint32 tcp_packets = 7;</code>
         */
        public Builder setTcpPackets(int value) {
          bitField0_ |= 0x00000040;
          tcpPackets_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional uint32 tcp_packets = 7;</code>
         */
        public Builder clearTcpPackets() {
          bitField0_ = (bitField0_ & ~0x00000040);
          tcpPackets_ = 0;
          onChanged();
          return this;
        }
  
        private float udpPingAvg_ ;
        /**
         * <code>optional float udp_ping_avg = 8;</code>
         */
        public boolean hasUdpPingAvg() {
          return ((bitField0_ & 0x00000080) == 0x00000080);
        }
        /**
         * <code>optional float udp_ping_avg = 8;</code>
         */
        public float getUdpPingAvg() {
          return udpPingAvg_;
        }
        /**
         * <code>optional float udp_ping_avg = 8;</code>
         */
        public Builder setUdpPingAvg(float value) {
          bitField0_ |= 0x00000080;
          udpPingAvg_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional float udp_ping_avg = 8;</code>
         */
        public Builder clearUdpPingAvg() {
          bitField0_ = (bitField0_ & ~0x00000080);
          udpPingAvg_ = 0F;
          onChanged();
          return this;
        }
  
        private float udpPingVar_ ;
        /**
         * <code>optional float udp_ping_var = 9;</code>
         */
        public boolean hasUdpPingVar() {
          return ((bitField0_ & 0x00000100) == 0x00000100);
        }
        /**
         * <code>optional float udp_ping_var = 9;</code>
         */
        public float getUdpPingVar() {
          return udpPingVar_;
        }
        /**
         * <code>optional float udp_ping_var = 9;</code>
         */
        public Builder setUdpPingVar(float value) {
          bitField0_ |= 0x00000100;
          udpPingVar_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional float udp_ping_var = 9;</code>
         */
        public Builder clearUdpPingVar() {
          bitField0_ = (bitField0_ & ~0x00000100);
          udpPingVar_ = 0F;
          onChanged();
          return this;
        }
  
        private float tcpPingAvg_ ;
        /**
         * <code>optional float tcp_ping_avg = 10;</code>
         */
        public boolean hasTcpPingAvg() {
          return ((bitField0_ & 0x00000200) == 0x00000200);
        }
        /**
         * <code>optional float tcp_ping_avg = 10;</code>
         */
        public float getTcpPingAvg() {
          return tcpPingAvg_;
        }
        /**
         * <code>optional float tcp_ping_avg = 10;</code>
         */
        public Builder setTcpPingAvg(float value) {
          bitField0_ |= 0x00000200;
          tcpPingAvg_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional float tcp_ping_avg = 10;</code>
         */
        public Builder clearTcpPingAvg() {
          bitField0_ = (bitField0_ & ~0x00000200);
          tcpPingAvg_ = 0F;
          onChanged();
          return this;
        }
  
        private float tcpPingVar_ ;
        /**
         * <code>optional float tcp_ping_var = 11;</code>
         */
        public boolean hasTcpPingVar() {
          return ((bitField0_ & 0x00000400) == 0x00000400);
        }
        /**
         * <code>optional float tcp_ping_var = 11;</code>
         */
        public float getTcpPingVar() {
          return tcpPingVar_;
        }
        /**
         * <code>optional float tcp_ping_var = 11;</code>
         */
        public Builder setTcpPingVar(float value) {
          bitField0_ |= 0x00000400;
          tcpPingVar_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional float tcp_ping_var = 11;</code>
         */
        public Builder clearTcpPingVar() {
          bitField0_ = (bitField0_ & ~0x00000400);
          tcpPingVar_ = 0F;
          onChanged();
          return this;
        }
  
        private com.morlunk.jumble.protobuf.Mumble.Version version_ = null;
        private com.google.protobuf.SingleFieldBuilderV3<
            com.morlunk.jumble.protobuf.Mumble.Version, com.morlunk.jumble.protobuf.Mumble.Version.Builder, com.morlunk.jumble.protobuf.Mumble.VersionOrBuilder> versionBuilder_;
        /**
         * <code>optional .MumbleProto.Version version = 12;</code>
         */
        public boolean hasVersion() {
          return ((bitField0_ & 0x00000800) == 0x00000800);
        }
        /**
         * <code>optional .MumbleProto.Version version = 12;</code>
         */
        public com.morlunk.jumble.protobuf.Mumble.Version getVersion() {
          if (versionBuilder_ == null) {
            return version_ == null ? com.morlunk.jumble.protobuf.Mumble.Version.getDefaultInstance() : version_;
          } else {
            return versionBuilder_.getMessage();
          }
        }
        /**
         * <code>optional .MumbleProto.Version version = 12;</code>
         */
        public Builder setVersion(com.morlunk.jumble.protobuf.Mumble.Version value) {
          if (versionBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            version_ = value;
            onChanged();
          } else {
            versionBuilder_.setMessage(value);
          }
          bitField0_ |= 0x00000800;
          return this;
        }
        /**
         * <code>optional .MumbleProto.Version version = 12;</code>
         */
        public Builder setVersion(
            com.morlunk.jumble.protobuf.Mumble.Version.Builder builderForValue) {
          if (versionBuilder_ == null) {
            version_ = builderForValue.build();
            onChanged();
          } else {
            versionBuilder_.setMessage(builderForValue.build());
          }
          bitField0_ |= 0x00000800;
          return this;
        }
        /**
         * <code>optional .MumbleProto.Version version = 12;</code>
         */
        public Builder mergeVersion(com.morlunk.jumble.protobuf.Mumble.Version value) {
          if (versionBuilder_ == null) {
            if (((bitField0_ & 0x00000800) == 0x00000800) &&
                version_ != null &&
                version_ != com.morlunk.jumble.protobuf.Mumble.Version.getDefaultInstance()) {
              version_ =
                com.morlunk.jumble.protobuf.Mumble.Version.newBuilder(version_).mergeFrom(value).buildPartial();
            } else {
              version_ = value;
            }
            onChanged();
          } else {
            versionBuilder_.mergeFrom(value);
          }
          bitField0_ |= 0x00000800;
          return this;
        }
        /**
         * <code>optional .MumbleProto.Version version = 12;</code>
         */
        public Builder clearVersion() {
          if (versionBuilder_ == null) {
            version_ = null;
            onChanged();
          } else {
            versionBuilder_.clear();
          }
          bitField0_ = (bitField0_ & ~0x00000800);
          return this;
        }
        /**
         * <code>optional .MumbleProto.Version version = 12;</code>
         */
        public com.morlunk.jumble.protobuf.Mumble.Version.Builder getVersionBuilder() {
          bitField0_ |= 0x00000800;
          onChanged();
          return getVersionFieldBuilder().getBuilder();
        }
        /**
         * <code>optional .MumbleProto.Version version = 12;</code>
         */
        public com.morlunk.jumble.protobuf.Mumble.VersionOrBuilder getVersionOrBuilder() {
          if (versionBuilder_ != null) {
            return versionBuilder_.getMessageOrBuilder();
          } else {
            return version_ == null ?
                com.morlunk.jumble.protobuf.Mumble.Version.getDefaultInstance() : version_;
          }
        }
        /**
         * <code>optional .MumbleProto.Version version = 12;</code>
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            com.morlunk.jumble.protobuf.Mumble.Version, com.morlunk.jumble.protobuf.Mumble.Version.Builder, com.morlunk.jumble.protobuf.Mumble.VersionOrBuilder> 
            getVersionFieldBuilder() {
          if (versionBuilder_ == null) {
            versionBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                com.morlunk.jumble.protobuf.Mumble.Version, com.morlunk.jumble.protobuf.Mumble.Version.Builder, com.morlunk.jumble.protobuf.Mumble.VersionOrBuilder>(
                    getVersion(),
                    getParentForChildren(),
                    isClean());
            version_ = null;
          }
          return versionBuilder_;
        }
  
        private java.util.List<java.lang.Integer> celtVersions_ = java.util.Collections.emptyList();
        private void ensureCeltVersionsIsMutable() {
          if (!((bitField0_ & 0x00001000) == 0x00001000)) {
            celtVersions_ = new java.util.ArrayList<java.lang.Integer>(celtVersions_);
            bitField0_ |= 0x00001000;
           }
        }
        /**
         * <code>repeated int32 celt_versions = 13;</code>
         */
        public java.util.List<java.lang.Integer>
            getCeltVersionsList() {
          return java.util.Collections.unmodifiableList(celtVersions_);
        }
        /**
         * <code>repeated int32 celt_versions = 13;</code>
         */
        public int getCeltVersionsCount() {
          return celtVersions_.size();
        }
        /**
         * <code>repeated int32 celt_versions = 13;</code>
         */
        public int getCeltVersions(int index) {
          return celtVersions_.get(index);
        }
        /**
         * <code>repeated int32 celt_versions = 13;</code>
         */
        public Builder setCeltVersions(
            int index, int value) {
          ensureCeltVersionsIsMutable();
          celtVersions_.set(index, value);
          onChanged();
          return this;
        }
        /**
         * <code>repeated int32 celt_versions = 13;</code>
         */
        public Builder addCeltVersions(int value) {
          ensureCeltVersionsIsMutable();
          celtVersions_.add(value);
          onChanged();
          return this;
        }
        /**
         * <code>repeated int32 celt_versions = 13;</code>
         */
        public Builder addAllCeltVersions(
            java.lang.Iterable<? extends java.lang.Integer> values) {
          ensureCeltVersionsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, celtVersions_);
          onChanged();
          return this;
        }
        /**
         * <code>repeated int32 celt_versions = 13;</code>
         */
        public Builder clearCeltVersions() {
          celtVersions_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00001000);
          onChanged();
          return this;
        }
  
        private com.google.protobuf.ByteString address_ = com.google.protobuf.ByteString.EMPTY;
        /**
         * <code>optional bytes address = 14;</code>
         */
        public boolean hasAddress() {
          return ((bitField0_ & 0x00002000) == 0x00002000);
        }
        /**
         * <code>optional bytes address = 14;</code>
         */
        public com.google.protobuf.ByteString getAddress() {
          return address_;
        }
        /**
         * <code>optional bytes address = 14;</code>
         */
        public Builder setAddress(com.google.protobuf.ByteString value) {
          if (value == null) {
      throw new NullPointerException();
    }
    bitField0_ |= 0x00002000;
          address_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional bytes address = 14;</code>
         */
        public Builder clearAddress() {
          bitField0_ = (bitField0_ & ~0x00002000);
          address_ = getDefaultInstance().getAddress();
          onChanged();
          return this;
        }
  
        private int bandwidth_ ;
        /**
         * <code>optional uint32 bandwidth = 15;</code>
         */
        public boolean hasBandwidth() {
          return ((bitField0_ & 0x00004000) == 0x00004000);
        }
        /**
         * <code>optional uint32 bandwidth = 15;</code>
         */
        public int getBandwidth() {
          return bandwidth_;
        }
        /**
         * <code>optional uint32 bandwidth = 15;</code>
         */
        public Builder setBandwidth(int value) {
          bitField0_ |= 0x00004000;
          bandwidth_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional uint32 bandwidth = 15;</code>
         */
        public Builder clearBandwidth() {
          bitField0_ = (bitField0_ & ~0x00004000);
          bandwidth_ = 0;
          onChanged();
          return this;
        }
  
        private int onlinesecs_ ;
        /**
         * <code>optional uint32 onlinesecs = 16;</code>
         */
        public boolean hasOnlinesecs() {
          return ((bitField0_ & 0x00008000) == 0x00008000);
        }
        /**
         * <code>optional uint32 onlinesecs = 16;</code>
         */
        public int getOnlinesecs() {
          return onlinesecs_;
        }
        /**
         * <code>optional uint32 onlinesecs = 16;</code>
         */
        public Builder setOnlinesecs(int value) {
          bitField0_ |= 0x00008000;
          onlinesecs_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional uint32 onlinesecs = 16;</code>
         */
        public Builder clearOnlinesecs() {
          bitField0_ = (bitField0_ & ~0x00008000);
          onlinesecs_ = 0;
          onChanged();
          return this;
        }
  
        private int idlesecs_ ;
        /**
         * <code>optional uint32 idlesecs = 17;</code>
         */
        public boolean hasIdlesecs() {
          return ((bitField0_ & 0x00010000) == 0x00010000);
        }
        /**
         * <code>optional uint32 idlesecs = 17;</code>
         */
        public int getIdlesecs() {
          return idlesecs_;
        }
        /**
         * <code>optional uint32 idlesecs = 17;</code>
         */
        public Builder setIdlesecs(int value) {
          bitField0_ |= 0x00010000;
          idlesecs_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional uint32 idlesecs = 17;</code>
         */
        public Builder clearIdlesecs() {
          bitField0_ = (bitField0_ & ~0x00010000);
          idlesecs_ = 0;
          onChanged();
          return this;
        }
  
        private boolean strongCertificate_ ;
        /**
         * <code>optional bool strong_certificate = 18 [default = false];</code>
         */
        public boolean hasStrongCertificate() {
          return ((bitField0_ & 0x00020000) == 0x00020000);
        }
        /**
         * <code>optional bool strong_certificate = 18 [default = false];</code>
         */
        public boolean getStrongCertificate() {
          return strongCertificate_;
        }
        /**
         * <code>optional bool strong_certificate = 18 [default = false];</code>
         */
        public Builder setStrongCertificate(boolean value) {
          bitField0_ |= 0x00020000;
          strongCertificate_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional bool strong_certificate = 18 [default = false];</code>
         */
        public Builder clearStrongCertificate() {
          bitField0_ = (bitField0_ & ~0x00020000);
          strongCertificate_ = false;
          onChanged();
          return this;
        }
  
        private boolean opus_ ;
        /**
         * <code>optional bool opus = 19 [default = false];</code>
         */
        public boolean hasOpus() {
          return ((bitField0_ & 0x00040000) == 0x00040000);
        }
        /**
         * <code>optional bool opus = 19 [default = false];</code>
         */
        public boolean getOpus() {
          return opus_;
        }
        /**
         * <code>optional bool opus = 19 [default = false];</code>
         */
        public Builder setOpus(boolean value) {
          bitField0_ |= 0x00040000;
          opus_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional bool opus = 19 [default = false];</code>
         */
        public Builder clearOpus() {
          bitField0_ = (bitField0_ & ~0x00040000);
          opus_ = false;
          onChanged();
          return this;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }
  
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:MumbleProto.UserStats)
      }
  
      // @@protoc_insertion_point(class_scope:MumbleProto.UserStats)
      private static final com.morlunk.jumble.protobuf.Mumble.UserStats DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.morlunk.jumble.protobuf.Mumble.UserStats();
      }
  
      public static com.morlunk.jumble.protobuf.Mumble.UserStats getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      @java.lang.Deprecated public static final com.google.protobuf.Parser<UserStats>
          PARSER = new com.google.protobuf.AbstractParser<UserStats>() {
        public UserStats parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return new UserStats(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<UserStats> parser() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.google.protobuf.Parser<UserStats> getParserForType() {
        return PARSER;
      }
  
      public com.morlunk.jumble.protobuf.Mumble.UserStats getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface SuggestConfigOrBuilder extends
        // @@protoc_insertion_point(interface_extends:MumbleProto.SuggestConfig)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <code>optional uint32 version = 1;</code>
       */
      boolean hasVersion();
      /**
       * <code>optional uint32 version = 1;</code>
       */
      int getVersion();
  
      /**
       * <code>optional bool positional = 2;</code>
       */
      boolean hasPositional();
      /**
       * <code>optional bool positional = 2;</code>
       */
      boolean getPositional();
  
      /**
       * <code>optional bool push_to_talk = 3;</code>
       */
      boolean hasPushToTalk();
      /**
       * <code>optional bool push_to_talk = 3;</code>
       */
      boolean getPushToTalk();
    }
    /**
     * Protobuf type {@code MumbleProto.SuggestConfig}
     */
    public  static final class SuggestConfig extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:MumbleProto.SuggestConfig)
        SuggestConfigOrBuilder {
      // Use SuggestConfig.newBuilder() to construct.
      private SuggestConfig(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private SuggestConfig() {
        version_ = 0;
        positional_ = false;
        pushToTalk_ = false;
      }
  
      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private SuggestConfig(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        int mutable_bitField0_ = 0;
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder();
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              default: {
                if (!parseUnknownField(input, unknownFields,
                                       extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 8: {
                bitField0_ |= 0x00000001;
                version_ = input.readUInt32();
                break;
              }
              case 16: {
                bitField0_ |= 0x00000002;
                positional_ = input.readBool();
                break;
              }
              case 24: {
                bitField0_ |= 0x00000004;
                pushToTalk_ = input.readBool();
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_SuggestConfig_descriptor;
      }
  
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_SuggestConfig_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.morlunk.jumble.protobuf.Mumble.SuggestConfig.class, com.morlunk.jumble.protobuf.Mumble.SuggestConfig.Builder.class);
      }
  
      private int bitField0_;
      public static final int VERSION_FIELD_NUMBER = 1;
      private int version_;
      /**
       * <code>optional uint32 version = 1;</code>
       */
      public boolean hasVersion() {
        return ((bitField0_ & 0x00000001) == 0x00000001);
      }
      /**
       * <code>optional uint32 version = 1;</code>
       */
      public int getVersion() {
        return version_;
      }
  
      public static final int POSITIONAL_FIELD_NUMBER = 2;
      private boolean positional_;
      /**
       * <code>optional bool positional = 2;</code>
       */
      public boolean hasPositional() {
        return ((bitField0_ & 0x00000002) == 0x00000002);
      }
      /**
       * <code>optional bool positional = 2;</code>
       */
      public boolean getPositional() {
        return positional_;
      }
  
      public static final int PUSH_TO_TALK_FIELD_NUMBER = 3;
      private boolean pushToTalk_;
      /**
       * <code>optional bool push_to_talk = 3;</code>
       */
      public boolean hasPushToTalk() {
        return ((bitField0_ & 0x00000004) == 0x00000004);
      }
      /**
       * <code>optional bool push_to_talk = 3;</code>
       */
      public boolean getPushToTalk() {
        return pushToTalk_;
      }
  
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        memoizedIsInitialized = 1;
        return true;
      }
  
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          output.writeUInt32(1, version_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          output.writeBool(2, positional_);
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          output.writeBool(3, pushToTalk_);
        }
        unknownFields.writeTo(output);
      }
  
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          size += com.google.protobuf.CodedOutputStream
            .computeUInt32Size(1, version_);
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBoolSize(2, positional_);
        }
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          size += com.google.protobuf.CodedOutputStream
            .computeBoolSize(3, pushToTalk_);
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }
  
      private static final long serialVersionUID = 0L;
      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.morlunk.jumble.protobuf.Mumble.SuggestConfig)) {
          return super.equals(obj);
        }
        com.morlunk.jumble.protobuf.Mumble.SuggestConfig other = (com.morlunk.jumble.protobuf.Mumble.SuggestConfig) obj;
  
        boolean result = true;
        result = result && (hasVersion() == other.hasVersion());
        if (hasVersion()) {
          result = result && (getVersion()
              == other.getVersion());
        }
        result = result && (hasPositional() == other.hasPositional());
        if (hasPositional()) {
          result = result && (getPositional()
              == other.getPositional());
        }
        result = result && (hasPushToTalk() == other.hasPushToTalk());
        if (hasPushToTalk()) {
          result = result && (getPushToTalk()
              == other.getPushToTalk());
        }
        result = result && unknownFields.equals(other.unknownFields);
        return result;
      }
  
      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptorForType().hashCode();
        if (hasVersion()) {
          hash = (37 * hash) + VERSION_FIELD_NUMBER;
          hash = (53 * hash) + getVersion();
        }
        if (hasPositional()) {
          hash = (37 * hash) + POSITIONAL_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
              getPositional());
        }
        if (hasPushToTalk()) {
          hash = (37 * hash) + PUSH_TO_TALK_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
              getPushToTalk());
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static com.morlunk.jumble.protobuf.Mumble.SuggestConfig parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.morlunk.jumble.protobuf.Mumble.SuggestConfig parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.SuggestConfig parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.morlunk.jumble.protobuf.Mumble.SuggestConfig parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.SuggestConfig parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.morlunk.jumble.protobuf.Mumble.SuggestConfig parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.SuggestConfig parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.morlunk.jumble.protobuf.Mumble.SuggestConfig parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.SuggestConfig parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.morlunk.jumble.protobuf.Mumble.SuggestConfig parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
  
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(com.morlunk.jumble.protobuf.Mumble.SuggestConfig prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }
  
      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code MumbleProto.SuggestConfig}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:MumbleProto.SuggestConfig)
          com.morlunk.jumble.protobuf.Mumble.SuggestConfigOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_SuggestConfig_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_SuggestConfig_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.morlunk.jumble.protobuf.Mumble.SuggestConfig.class, com.morlunk.jumble.protobuf.Mumble.SuggestConfig.Builder.class);
        }
  
        // Construct using com.morlunk.jumble.protobuf.Mumble.SuggestConfig.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
  
        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
          }
        }
        public Builder clear() {
          super.clear();
          version_ = 0;
          bitField0_ = (bitField0_ & ~0x00000001);
          positional_ = false;
          bitField0_ = (bitField0_ & ~0x00000002);
          pushToTalk_ = false;
          bitField0_ = (bitField0_ & ~0x00000004);
          return this;
        }
  
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_SuggestConfig_descriptor;
        }
  
        public com.morlunk.jumble.protobuf.Mumble.SuggestConfig getDefaultInstanceForType() {
          return com.morlunk.jumble.protobuf.Mumble.SuggestConfig.getDefaultInstance();
        }
  
        public com.morlunk.jumble.protobuf.Mumble.SuggestConfig build() {
          com.morlunk.jumble.protobuf.Mumble.SuggestConfig result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        public com.morlunk.jumble.protobuf.Mumble.SuggestConfig buildPartial() {
          com.morlunk.jumble.protobuf.Mumble.SuggestConfig result = new com.morlunk.jumble.protobuf.Mumble.SuggestConfig(this);
          int from_bitField0_ = bitField0_;
          int to_bitField0_ = 0;
          if (((from_bitField0_ & 0x00000001) == 0x00000001)) {
            to_bitField0_ |= 0x00000001;
          }
          result.version_ = version_;
          if (((from_bitField0_ & 0x00000002) == 0x00000002)) {
            to_bitField0_ |= 0x00000002;
          }
          result.positional_ = positional_;
          if (((from_bitField0_ & 0x00000004) == 0x00000004)) {
            to_bitField0_ |= 0x00000004;
          }
          result.pushToTalk_ = pushToTalk_;
          result.bitField0_ = to_bitField0_;
          onBuilt();
          return result;
        }
  
        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.setField(field, value);
        }
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return (Builder) super.clearField(field);
        }
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return (Builder) super.clearOneof(oneof);
        }
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.morlunk.jumble.protobuf.Mumble.SuggestConfig) {
            return mergeFrom((com.morlunk.jumble.protobuf.Mumble.SuggestConfig)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(com.morlunk.jumble.protobuf.Mumble.SuggestConfig other) {
          if (other == com.morlunk.jumble.protobuf.Mumble.SuggestConfig.getDefaultInstance()) return this;
          if (other.hasVersion()) {
            setVersion(other.getVersion());
          }
          if (other.hasPositional()) {
            setPositional(other.getPositional());
          }
          if (other.hasPushToTalk()) {
            setPushToTalk(other.getPushToTalk());
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }
  
        public final boolean isInitialized() {
          return true;
        }
  
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.morlunk.jumble.protobuf.Mumble.SuggestConfig parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (com.morlunk.jumble.protobuf.Mumble.SuggestConfig) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;
  
        private int version_ ;
        /**
         * <code>optional uint32 version = 1;</code>
         */
        public boolean hasVersion() {
          return ((bitField0_ & 0x00000001) == 0x00000001);
        }
        /**
         * <code>optional uint32 version = 1;</code>
         */
        public int getVersion() {
          return version_;
        }
        /**
         * <code>optional uint32 version = 1;</code>
         */
        public Builder setVersion(int value) {
          bitField0_ |= 0x00000001;
          version_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional uint32 version = 1;</code>
         */
        public Builder clearVersion() {
          bitField0_ = (bitField0_ & ~0x00000001);
          version_ = 0;
          onChanged();
          return this;
        }
  
        private boolean positional_ ;
        /**
         * <code>optional bool positional = 2;</code>
         */
        public boolean hasPositional() {
          return ((bitField0_ & 0x00000002) == 0x00000002);
        }
        /**
         * <code>optional bool positional = 2;</code>
         */
        public boolean getPositional() {
          return positional_;
        }
        /**
         * <code>optional bool positional = 2;</code>
         */
        public Builder setPositional(boolean value) {
          bitField0_ |= 0x00000002;
          positional_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional bool positional = 2;</code>
         */
        public Builder clearPositional() {
          bitField0_ = (bitField0_ & ~0x00000002);
          positional_ = false;
          onChanged();
          return this;
        }
  
        private boolean pushToTalk_ ;
        /**
         * <code>optional bool push_to_talk = 3;</code>
         */
        public boolean hasPushToTalk() {
          return ((bitField0_ & 0x00000004) == 0x00000004);
        }
        /**
         * <code>optional bool push_to_talk = 3;</code>
         */
        public boolean getPushToTalk() {
          return pushToTalk_;
        }
        /**
         * <code>optional bool push_to_talk = 3;</code>
         */
        public Builder setPushToTalk(boolean value) {
          bitField0_ |= 0x00000004;
          pushToTalk_ = value;
          onChanged();
          return this;
        }
        /**
         * <code>optional bool push_to_talk = 3;</code>
         */
        public Builder clearPushToTalk() {
          bitField0_ = (bitField0_ & ~0x00000004);
          pushToTalk_ = false;
          onChanged();
          return this;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }
  
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:MumbleProto.SuggestConfig)
      }
  
      // @@protoc_insertion_point(class_scope:MumbleProto.SuggestConfig)
      private static final com.morlunk.jumble.protobuf.Mumble.SuggestConfig DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.morlunk.jumble.protobuf.Mumble.SuggestConfig();
      }
  
      public static com.morlunk.jumble.protobuf.Mumble.SuggestConfig getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      @java.lang.Deprecated public static final com.google.protobuf.Parser<SuggestConfig>
          PARSER = new com.google.protobuf.AbstractParser<SuggestConfig>() {
        public SuggestConfig parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return new SuggestConfig(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<SuggestConfig> parser() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.google.protobuf.Parser<SuggestConfig> getParserForType() {
        return PARSER;
      }
  
      public com.morlunk.jumble.protobuf.Mumble.SuggestConfig getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    public interface RequestBlobOrBuilder extends
        // @@protoc_insertion_point(interface_extends:MumbleProto.RequestBlob)
        com.google.protobuf.MessageOrBuilder {
  
      /**
       * <code>repeated uint32 session_texture = 1;</code>
       */
      java.util.List<java.lang.Integer> getSessionTextureList();
      /**
       * <code>repeated uint32 session_texture = 1;</code>
       */
      int getSessionTextureCount();
      /**
       * <code>repeated uint32 session_texture = 1;</code>
       */
      int getSessionTexture(int index);
  
      /**
       * <code>repeated uint32 session_comment = 2;</code>
       */
      java.util.List<java.lang.Integer> getSessionCommentList();
      /**
       * <code>repeated uint32 session_comment = 2;</code>
       */
      int getSessionCommentCount();
      /**
       * <code>repeated uint32 session_comment = 2;</code>
       */
      int getSessionComment(int index);
  
      /**
       * <code>repeated uint32 channel_description = 3;</code>
       */
      java.util.List<java.lang.Integer> getChannelDescriptionList();
      /**
       * <code>repeated uint32 channel_description = 3;</code>
       */
      int getChannelDescriptionCount();
      /**
       * <code>repeated uint32 channel_description = 3;</code>
       */
      int getChannelDescription(int index);
    }
    /**
     * Protobuf type {@code MumbleProto.RequestBlob}
     */
    public  static final class RequestBlob extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:MumbleProto.RequestBlob)
        RequestBlobOrBuilder {
      // Use RequestBlob.newBuilder() to construct.
      private RequestBlob(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
        super(builder);
      }
      private RequestBlob() {
        sessionTexture_ = java.util.Collections.emptyList();
        sessionComment_ = java.util.Collections.emptyList();
        channelDescription_ = java.util.Collections.emptyList();
      }
  
      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private RequestBlob(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        int mutable_bitField0_ = 0;
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder();
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              default: {
                if (!parseUnknownField(input, unknownFields,
                                       extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 8: {
                if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                  sessionTexture_ = new java.util.ArrayList<java.lang.Integer>();
                  mutable_bitField0_ |= 0x00000001;
                }
                sessionTexture_.add(input.readUInt32());
                break;
              }
              case 10: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                if (!((mutable_bitField0_ & 0x00000001) == 0x00000001) && input.getBytesUntilLimit() > 0) {
                  sessionTexture_ = new java.util.ArrayList<java.lang.Integer>();
                  mutable_bitField0_ |= 0x00000001;
                }
                while (input.getBytesUntilLimit() > 0) {
                  sessionTexture_.add(input.readUInt32());
                }
                input.popLimit(limit);
                break;
              }
              case 16: {
                if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                  sessionComment_ = new java.util.ArrayList<java.lang.Integer>();
                  mutable_bitField0_ |= 0x00000002;
                }
                sessionComment_.add(input.readUInt32());
                break;
              }
              case 18: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                if (!((mutable_bitField0_ & 0x00000002) == 0x00000002) && input.getBytesUntilLimit() > 0) {
                  sessionComment_ = new java.util.ArrayList<java.lang.Integer>();
                  mutable_bitField0_ |= 0x00000002;
                }
                while (input.getBytesUntilLimit() > 0) {
                  sessionComment_.add(input.readUInt32());
                }
                input.popLimit(limit);
                break;
              }
              case 24: {
                if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
                  channelDescription_ = new java.util.ArrayList<java.lang.Integer>();
                  mutable_bitField0_ |= 0x00000004;
                }
                channelDescription_.add(input.readUInt32());
                break;
              }
              case 26: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                if (!((mutable_bitField0_ & 0x00000004) == 0x00000004) && input.getBytesUntilLimit() > 0) {
                  channelDescription_ = new java.util.ArrayList<java.lang.Integer>();
                  mutable_bitField0_ |= 0x00000004;
                }
                while (input.getBytesUntilLimit() > 0) {
                  channelDescription_.add(input.readUInt32());
                }
                input.popLimit(limit);
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
            sessionTexture_ = java.util.Collections.unmodifiableList(sessionTexture_);
          }
          if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
            sessionComment_ = java.util.Collections.unmodifiableList(sessionComment_);
          }
          if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
            channelDescription_ = java.util.Collections.unmodifiableList(channelDescription_);
          }
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_RequestBlob_descriptor;
      }
  
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_RequestBlob_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.morlunk.jumble.protobuf.Mumble.RequestBlob.class, com.morlunk.jumble.protobuf.Mumble.RequestBlob.Builder.class);
      }
  
      public static final int SESSION_TEXTURE_FIELD_NUMBER = 1;
      private java.util.List<java.lang.Integer> sessionTexture_;
      /**
       * <code>repeated uint32 session_texture = 1;</code>
       */
      public java.util.List<java.lang.Integer>
          getSessionTextureList() {
        return sessionTexture_;
      }
      /**
       * <code>repeated uint32 session_texture = 1;</code>
       */
      public int getSessionTextureCount() {
        return sessionTexture_.size();
      }
      /**
       * <code>repeated uint32 session_texture = 1;</code>
       */
      public int getSessionTexture(int index) {
        return sessionTexture_.get(index);
      }
  
      public static final int SESSION_COMMENT_FIELD_NUMBER = 2;
      private java.util.List<java.lang.Integer> sessionComment_;
      /**
       * <code>repeated uint32 session_comment = 2;</code>
       */
      public java.util.List<java.lang.Integer>
          getSessionCommentList() {
        return sessionComment_;
      }
      /**
       * <code>repeated uint32 session_comment = 2;</code>
       */
      public int getSessionCommentCount() {
        return sessionComment_.size();
      }
      /**
       * <code>repeated uint32 session_comment = 2;</code>
       */
      public int getSessionComment(int index) {
        return sessionComment_.get(index);
      }
  
      public static final int CHANNEL_DESCRIPTION_FIELD_NUMBER = 3;
      private java.util.List<java.lang.Integer> channelDescription_;
      /**
       * <code>repeated uint32 channel_description = 3;</code>
       */
      public java.util.List<java.lang.Integer>
          getChannelDescriptionList() {
        return channelDescription_;
      }
      /**
       * <code>repeated uint32 channel_description = 3;</code>
       */
      public int getChannelDescriptionCount() {
        return channelDescription_.size();
      }
      /**
       * <code>repeated uint32 channel_description = 3;</code>
       */
      public int getChannelDescription(int index) {
        return channelDescription_.get(index);
      }
  
      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
  
        memoizedIsInitialized = 1;
        return true;
      }
  
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        for (int i = 0; i < sessionTexture_.size(); i++) {
          output.writeUInt32(1, sessionTexture_.get(i));
        }
        for (int i = 0; i < sessionComment_.size(); i++) {
          output.writeUInt32(2, sessionComment_.get(i));
        }
        for (int i = 0; i < channelDescription_.size(); i++) {
          output.writeUInt32(3, channelDescription_.get(i));
        }
        unknownFields.writeTo(output);
      }
  
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
  
        size = 0;
        {
          int dataSize = 0;
          for (int i = 0; i < sessionTexture_.size(); i++) {
            dataSize += com.google.protobuf.CodedOutputStream
              .computeUInt32SizeNoTag(sessionTexture_.get(i));
          }
          size += dataSize;
          size += 1 * getSessionTextureList().size();
        }
        {
          int dataSize = 0;
          for (int i = 0; i < sessionComment_.size(); i++) {
            dataSize += com.google.protobuf.CodedOutputStream
              .computeUInt32SizeNoTag(sessionComment_.get(i));
          }
          size += dataSize;
          size += 1 * getSessionCommentList().size();
        }
        {
          int dataSize = 0;
          for (int i = 0; i < channelDescription_.size(); i++) {
            dataSize += com.google.protobuf.CodedOutputStream
              .computeUInt32SizeNoTag(channelDescription_.get(i));
          }
          size += dataSize;
          size += 1 * getChannelDescriptionList().size();
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }
  
      private static final long serialVersionUID = 0L;
      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof com.morlunk.jumble.protobuf.Mumble.RequestBlob)) {
          return super.equals(obj);
        }
        com.morlunk.jumble.protobuf.Mumble.RequestBlob other = (com.morlunk.jumble.protobuf.Mumble.RequestBlob) obj;
  
        boolean result = true;
        result = result && getSessionTextureList()
            .equals(other.getSessionTextureList());
        result = result && getSessionCommentList()
            .equals(other.getSessionCommentList());
        result = result && getChannelDescriptionList()
            .equals(other.getChannelDescriptionList());
        result = result && unknownFields.equals(other.unknownFields);
        return result;
      }
  
      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptorForType().hashCode();
        if (getSessionTextureCount() > 0) {
          hash = (37 * hash) + SESSION_TEXTURE_FIELD_NUMBER;
          hash = (53 * hash) + getSessionTextureList().hashCode();
        }
        if (getSessionCommentCount() > 0) {
          hash = (37 * hash) + SESSION_COMMENT_FIELD_NUMBER;
          hash = (53 * hash) + getSessionCommentList().hashCode();
        }
        if (getChannelDescriptionCount() > 0) {
          hash = (37 * hash) + CHANNEL_DESCRIPTION_FIELD_NUMBER;
          hash = (53 * hash) + getChannelDescriptionList().hashCode();
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
  
      public static com.morlunk.jumble.protobuf.Mumble.RequestBlob parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.morlunk.jumble.protobuf.Mumble.RequestBlob parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.RequestBlob parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static com.morlunk.jumble.protobuf.Mumble.RequestBlob parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.RequestBlob parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.morlunk.jumble.protobuf.Mumble.RequestBlob parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.RequestBlob parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static com.morlunk.jumble.protobuf.Mumble.RequestBlob parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
      }
      public static com.morlunk.jumble.protobuf.Mumble.RequestBlob parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static com.morlunk.jumble.protobuf.Mumble.RequestBlob parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input, extensionRegistry);
      }
  
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(com.morlunk.jumble.protobuf.Mumble.RequestBlob prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }
  
      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code MumbleProto.RequestBlob}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
          // @@protoc_insertion_point(builder_implements:MumbleProto.RequestBlob)
          com.morlunk.jumble.protobuf.Mumble.RequestBlobOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_RequestBlob_descriptor;
        }
  
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_RequestBlob_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  com.morlunk.jumble.protobuf.Mumble.RequestBlob.class, com.morlunk.jumble.protobuf.Mumble.RequestBlob.Builder.class);
        }
  
        // Construct using com.morlunk.jumble.protobuf.Mumble.RequestBlob.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
  
        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
          }
        }
        public Builder clear() {
          super.clear();
          sessionTexture_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          sessionComment_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          channelDescription_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000004);
          return this;
        }
  
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.morlunk.jumble.protobuf.Mumble.internal_static_MumbleProto_RequestBlob_descriptor;
        }
  
        public com.morlunk.jumble.protobuf.Mumble.RequestBlob getDefaultInstanceForType() {
          return com.morlunk.jumble.protobuf.Mumble.RequestBlob.getDefaultInstance();
        }
  
        public com.morlunk.jumble.protobuf.Mumble.RequestBlob build() {
          com.morlunk.jumble.protobuf.Mumble.RequestBlob result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
  
        public com.morlunk.jumble.protobuf.Mumble.RequestBlob buildPartial() {
          com.morlunk.jumble.protobuf.Mumble.RequestBlob result = new com.morlunk.jumble.protobuf.Mumble.RequestBlob(this);
          int from_bitField0_ = bitField0_;
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            sessionTexture_ = java.util.Collections.unmodifiableList(sessionTexture_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.sessionTexture_ = sessionTexture_;
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            sessionComment_ = java.util.Collections.unmodifiableList(sessionComment_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.sessionComment_ = sessionComment_;
          if (((bitField0_ & 0x00000004) == 0x00000004)) {
            channelDescription_ = java.util.Collections.unmodifiableList(channelDescription_);
            bitField0_ = (bitField0_ & ~0x00000004);
          }
          result.channelDescription_ = channelDescription_;
          onBuilt();
          return result;
        }
  
        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.setField(field, value);
        }
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return (Builder) super.clearField(field);
        }
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return (Builder) super.clearOneof(oneof);
        }
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.morlunk.jumble.protobuf.Mumble.RequestBlob) {
            return mergeFrom((com.morlunk.jumble.protobuf.Mumble.RequestBlob)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
  
        public Builder mergeFrom(com.morlunk.jumble.protobuf.Mumble.RequestBlob other) {
          if (other == com.morlunk.jumble.protobuf.Mumble.RequestBlob.getDefaultInstance()) return this;
          if (!other.sessionTexture_.isEmpty()) {
            if (sessionTexture_.isEmpty()) {
              sessionTexture_ = other.sessionTexture_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureSessionTextureIsMutable();
              sessionTexture_.addAll(other.sessionTexture_);
            }
            onChanged();
          }
          if (!other.sessionComment_.isEmpty()) {
            if (sessionComment_.isEmpty()) {
              sessionComment_ = other.sessionComment_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureSessionCommentIsMutable();
              sessionComment_.addAll(other.sessionComment_);
            }
            onChanged();
          }
          if (!other.channelDescription_.isEmpty()) {
            if (channelDescription_.isEmpty()) {
              channelDescription_ = other.channelDescription_;
              bitField0_ = (bitField0_ & ~0x00000004);
            } else {
              ensureChannelDescriptionIsMutable();
              channelDescription_.addAll(other.channelDescription_);
            }
            onChanged();
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }
  
        public final boolean isInitialized() {
          return true;
        }
  
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.morlunk.jumble.protobuf.Mumble.RequestBlob parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (com.morlunk.jumble.protobuf.Mumble.RequestBlob) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private int bitField0_;
  
        private java.util.List<java.lang.Integer> sessionTexture_ = java.util.Collections.emptyList();
        private void ensureSessionTextureIsMutable() {
          if (!((bitField0_ & 0x00000001) == 0x00000001)) {
            sessionTexture_ = new java.util.ArrayList<java.lang.Integer>(sessionTexture_);
            bitField0_ |= 0x00000001;
           }
        }
        /**
         * <code>repeated uint32 session_texture = 1;</code>
         */
        public java.util.List<java.lang.Integer>
            getSessionTextureList() {
          return java.util.Collections.unmodifiableList(sessionTexture_);
        }
        /**
         * <code>repeated uint32 session_texture = 1;</code>
         */
        public int getSessionTextureCount() {
          return sessionTexture_.size();
        }
        /**
         * <code>repeated uint32 session_texture = 1;</code>
         */
        public int getSessionTexture(int index) {
          return sessionTexture_.get(index);
        }
        /**
         * <code>repeated uint32 session_texture = 1;</code>
         */
        public Builder setSessionTexture(
            int index, int value) {
          ensureSessionTextureIsMutable();
          sessionTexture_.set(index, value);
          onChanged();
          return this;
        }
        /**
         * <code>repeated uint32 session_texture = 1;</code>
         */
        public Builder addSessionTexture(int value) {
          ensureSessionTextureIsMutable();
          sessionTexture_.add(value);
          onChanged();
          return this;
        }
        /**
         * <code>repeated uint32 session_texture = 1;</code>
         */
        public Builder addAllSessionTexture(
            java.lang.Iterable<? extends java.lang.Integer> values) {
          ensureSessionTextureIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, sessionTexture_);
          onChanged();
          return this;
        }
        /**
         * <code>repeated uint32 session_texture = 1;</code>
         */
        public Builder clearSessionTexture() {
          sessionTexture_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
          return this;
        }
  
        private java.util.List<java.lang.Integer> sessionComment_ = java.util.Collections.emptyList();
        private void ensureSessionCommentIsMutable() {
          if (!((bitField0_ & 0x00000002) == 0x00000002)) {
            sessionComment_ = new java.util.ArrayList<java.lang.Integer>(sessionComment_);
            bitField0_ |= 0x00000002;
           }
        }
        /**
         * <code>repeated uint32 session_comment = 2;</code>
         */
        public java.util.List<java.lang.Integer>
            getSessionCommentList() {
          return java.util.Collections.unmodifiableList(sessionComment_);
        }
        /**
         * <code>repeated uint32 session_comment = 2;</code>
         */
        public int getSessionCommentCount() {
          return sessionComment_.size();
        }
        /**
         * <code>repeated uint32 session_comment = 2;</code>
         */
        public int getSessionComment(int index) {
          return sessionComment_.get(index);
        }
        /**
         * <code>repeated uint32 session_comment = 2;</code>
         */
        public Builder setSessionComment(
            int index, int value) {
          ensureSessionCommentIsMutable();
          sessionComment_.set(index, value);
          onChanged();
          return this;
        }
        /**
         * <code>repeated uint32 session_comment = 2;</code>
         */
        public Builder addSessionComment(int value) {
          ensureSessionCommentIsMutable();
          sessionComment_.add(value);
          onChanged();
          return this;
        }
        /**
         * <code>repeated uint32 session_comment = 2;</code>
         */
        public Builder addAllSessionComment(
            java.lang.Iterable<? extends java.lang.Integer> values) {
          ensureSessionCommentIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, sessionComment_);
          onChanged();
          return this;
        }
        /**
         * <code>repeated uint32 session_comment = 2;</code>
         */
        public Builder clearSessionComment() {
          sessionComment_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
          return this;
        }
  
        private java.util.List<java.lang.Integer> channelDescription_ = java.util.Collections.emptyList();
        private void ensureChannelDescriptionIsMutable() {
          if (!((bitField0_ & 0x00000004) == 0x00000004)) {
            channelDescription_ = new java.util.ArrayList<java.lang.Integer>(channelDescription_);
            bitField0_ |= 0x00000004;
           }
        }
        /**
         * <code>repeated uint32 channel_description = 3;</code>
         */
        public java.util.List<java.lang.Integer>
            getChannelDescriptionList() {
          return java.util.Collections.unmodifiableList(channelDescription_);
        }
        /**
         * <code>repeated uint32 channel_description = 3;</code>
         */
        public int getChannelDescriptionCount() {
          return channelDescription_.size();
        }
        /**
         * <code>repeated uint32 channel_description = 3;</code>
         */
        public int getChannelDescription(int index) {
          return channelDescription_.get(index);
        }
        /**
         * <code>repeated uint32 channel_description = 3;</code>
         */
        public Builder setChannelDescription(
            int index, int value) {
          ensureChannelDescriptionIsMutable();
          channelDescription_.set(index, value);
          onChanged();
          return this;
        }
        /**
         * <code>repeated uint32 channel_description = 3;</code>
         */
        public Builder addChannelDescription(int value) {
          ensureChannelDescriptionIsMutable();
          channelDescription_.add(value);
          onChanged();
          return this;
        }
        /**
         * <code>repeated uint32 channel_description = 3;</code>
         */
        public Builder addAllChannelDescription(
            java.lang.Iterable<? extends java.lang.Integer> values) {
          ensureChannelDescriptionIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, channelDescription_);
          onChanged();
          return this;
        }
        /**
         * <code>repeated uint32 channel_description = 3;</code>
         */
        public Builder clearChannelDescription() {
          channelDescription_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000004);
          onChanged();
          return this;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }
  
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
  
  
        // @@protoc_insertion_point(builder_scope:MumbleProto.RequestBlob)
      }
  
      // @@protoc_insertion_point(class_scope:MumbleProto.RequestBlob)
      private static final com.morlunk.jumble.protobuf.Mumble.RequestBlob DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new com.morlunk.jumble.protobuf.Mumble.RequestBlob();
      }
  
      public static com.morlunk.jumble.protobuf.Mumble.RequestBlob getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
  
      @java.lang.Deprecated public static final com.google.protobuf.Parser<RequestBlob>
          PARSER = new com.google.protobuf.AbstractParser<RequestBlob>() {
        public RequestBlob parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
            return new RequestBlob(input, extensionRegistry);
        }
      };
  
      public static com.google.protobuf.Parser<RequestBlob> parser() {
        return PARSER;
      }
  
      @java.lang.Override
      public com.google.protobuf.Parser<RequestBlob> getParserForType() {
        return PARSER;
      }
  
      public com.morlunk.jumble.protobuf.Mumble.RequestBlob getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
  
    }
  
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_MumbleProto_Version_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_MumbleProto_Version_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_MumbleProto_UDPTunnel_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_MumbleProto_UDPTunnel_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_MumbleProto_Authenticate_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_MumbleProto_Authenticate_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_MumbleProto_Ping_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_MumbleProto_Ping_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_MumbleProto_Reject_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_MumbleProto_Reject_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_MumbleProto_ServerConfig_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_MumbleProto_ServerConfig_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_MumbleProto_ServerSync_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_MumbleProto_ServerSync_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_MumbleProto_ChannelRemove_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_MumbleProto_ChannelRemove_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_MumbleProto_ChannelState_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_MumbleProto_ChannelState_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_MumbleProto_UserRemove_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_MumbleProto_UserRemove_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_MumbleProto_UserState_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_MumbleProto_UserState_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_MumbleProto_BanList_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_MumbleProto_BanList_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_MumbleProto_BanList_BanEntry_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_MumbleProto_BanList_BanEntry_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_MumbleProto_TextMessage_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_MumbleProto_TextMessage_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_MumbleProto_PermissionDenied_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_MumbleProto_PermissionDenied_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_MumbleProto_ACL_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_MumbleProto_ACL_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_MumbleProto_ACL_ChanGroup_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_MumbleProto_ACL_ChanGroup_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_MumbleProto_ACL_ChanACL_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_MumbleProto_ACL_ChanACL_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_MumbleProto_QueryUsers_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_MumbleProto_QueryUsers_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_MumbleProto_CryptSetup_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_MumbleProto_CryptSetup_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_MumbleProto_ContextActionModify_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_MumbleProto_ContextActionModify_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_MumbleProto_ContextAction_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_MumbleProto_ContextAction_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_MumbleProto_UserList_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_MumbleProto_UserList_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_MumbleProto_UserList_User_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_MumbleProto_UserList_User_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_MumbleProto_VoiceTarget_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_MumbleProto_VoiceTarget_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_MumbleProto_VoiceTarget_Target_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_MumbleProto_VoiceTarget_Target_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_MumbleProto_PermissionQuery_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_MumbleProto_PermissionQuery_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_MumbleProto_CodecVersion_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_MumbleProto_CodecVersion_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_MumbleProto_UserStats_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_MumbleProto_UserStats_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_MumbleProto_UserStats_Stats_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_MumbleProto_UserStats_Stats_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_MumbleProto_SuggestConfig_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_MumbleProto_SuggestConfig_fieldAccessorTable;
    private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_MumbleProto_RequestBlob_descriptor;
    private static final 
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internal_static_MumbleProto_RequestBlob_fieldAccessorTable;
  
    public static com.google.protobuf.Descriptors.FileDescriptor
        getDescriptor() {
      return descriptor;
    }
    private static  com.google.protobuf.Descriptors.FileDescriptor
        descriptor;
    static {
      java.lang.String[] descriptorData = {
        "\n\014Mumble.proto\022\013MumbleProto\"K\n\007Version\022\017" +
        "\n\007version\030\001 \001(\r\022\017\n\007release\030\002 \001(\t\022\n\n\002os\030\003" +
        " \001(\t\022\022\n\nos_version\030\004 \001(\t\"\033\n\tUDPTunnel\022\016\n" +
        "\006packet\030\001 \002(\014\"n\n\014Authenticate\022\020\n\010usernam" +
        "e\030\001 \001(\t\022\020\n\010password\030\002 \001(\t\022\016\n\006tokens\030\003 \003(" +
        "\t\022\025\n\rcelt_versions\030\004 \003(\005\022\023\n\004opus\030\005 \001(\010:\005" +
        "false\"\325\001\n\004Ping\022\021\n\ttimestamp\030\001 \001(\004\022\014\n\004goo" +
        "d\030\002 \001(\r\022\014\n\004late\030\003 \001(\r\022\014\n\004lost\030\004 \001(\r\022\016\n\006r" +
        "esync\030\005 \001(\r\022\023\n\013udp_packets\030\006 \001(\r\022\023\n\013tcp_" +
        "packets\030\007 \001(\r\022\024\n\014udp_ping_avg\030\010 \001(\002\022\024\n\014u",
        "dp_ping_var\030\t \001(\002\022\024\n\014tcp_ping_avg\030\n \001(\002\022" +
        "\024\n\014tcp_ping_var\030\013 \001(\002\"\340\001\n\006Reject\022,\n\004type" +
        "\030\001 \001(\0162\036.MumbleProto.Reject.RejectType\022\016" +
        "\n\006reason\030\002 \001(\t\"\227\001\n\nRejectType\022\010\n\004None\020\000\022" +
        "\020\n\014WrongVersion\020\001\022\023\n\017InvalidUsername\020\002\022\017" +
        "\n\013WrongUserPW\020\003\022\021\n\rWrongServerPW\020\004\022\021\n\rUs" +
        "ernameInUse\020\005\022\016\n\nServerFull\020\006\022\021\n\rNoCerti" +
        "ficate\020\007\"\205\001\n\014ServerConfig\022\025\n\rmax_bandwid" +
        "th\030\001 \001(\r\022\024\n\014welcome_text\030\002 \001(\t\022\022\n\nallow_" +
        "html\030\003 \001(\010\022\026\n\016message_length\030\004 \001(\r\022\034\n\024im",
        "age_message_length\030\005 \001(\r\"_\n\nServerSync\022\017" +
        "\n\007session\030\001 \001(\r\022\025\n\rmax_bandwidth\030\002 \001(\r\022\024" +
        "\n\014welcome_text\030\003 \001(\t\022\023\n\013permissions\030\004 \001(" +
        "\004\"#\n\rChannelRemove\022\022\n\nchannel_id\030\001 \002(\r\"\326" +
        "\001\n\014ChannelState\022\022\n\nchannel_id\030\001 \001(\r\022\016\n\006p" +
        "arent\030\002 \001(\r\022\014\n\004name\030\003 \001(\t\022\r\n\005links\030\004 \003(\r" +
        "\022\023\n\013description\030\005 \001(\t\022\021\n\tlinks_add\030\006 \003(\r" +
        "\022\024\n\014links_remove\030\007 \003(\r\022\030\n\ttemporary\030\010 \001(" +
        "\010:\005false\022\023\n\010position\030\t \001(\005:\0010\022\030\n\020descrip" +
        "tion_hash\030\n \001(\014\"I\n\nUserRemove\022\017\n\007session",
        "\030\001 \002(\r\022\r\n\005actor\030\002 \001(\r\022\016\n\006reason\030\003 \001(\t\022\013\n" +
        "\003ban\030\004 \001(\010\"\354\002\n\tUserState\022\017\n\007session\030\001 \001(" +
        "\r\022\r\n\005actor\030\002 \001(\r\022\014\n\004name\030\003 \001(\t\022\017\n\007user_i" +
        "d\030\004 \001(\r\022\022\n\nchannel_id\030\005 \001(\r\022\014\n\004mute\030\006 \001(" +
        "\010\022\014\n\004deaf\030\007 \001(\010\022\020\n\010suppress\030\010 \001(\010\022\021\n\tsel" +
        "f_mute\030\t \001(\010\022\021\n\tself_deaf\030\n \001(\010\022\017\n\007textu" +
        "re\030\013 \001(\014\022\026\n\016plugin_context\030\014 \001(\014\022\027\n\017plug" +
        "in_identity\030\r \001(\t\022\017\n\007comment\030\016 \001(\t\022\014\n\004ha" +
        "sh\030\017 \001(\t\022\024\n\014comment_hash\030\020 \001(\014\022\024\n\014textur" +
        "e_hash\030\021 \001(\014\022\030\n\020priority_speaker\030\022 \001(\010\022\021",
        "\n\trecording\030\023 \001(\010\"\304\001\n\007BanList\022+\n\004bans\030\001 " +
        "\003(\0132\035.MumbleProto.BanList.BanEntry\022\024\n\005qu" +
        "ery\030\002 \001(\010:\005false\032v\n\010BanEntry\022\017\n\007address\030" +
        "\001 \002(\014\022\014\n\004mask\030\002 \002(\r\022\014\n\004name\030\003 \001(\t\022\014\n\004has" +
        "h\030\004 \001(\t\022\016\n\006reason\030\005 \001(\t\022\r\n\005start\030\006 \001(\t\022\020" +
        "\n\010duration\030\007 \001(\r\"c\n\013TextMessage\022\r\n\005actor" +
        "\030\001 \001(\r\022\017\n\007session\030\002 \003(\r\022\022\n\nchannel_id\030\003 " +
        "\003(\r\022\017\n\007tree_id\030\004 \003(\r\022\017\n\007message\030\005 \002(\t\"\337\002" +
        "\n\020PermissionDenied\022\022\n\npermission\030\001 \001(\r\022\022" +
        "\n\nchannel_id\030\002 \001(\r\022\017\n\007session\030\003 \001(\r\022\016\n\006r",
        "eason\030\004 \001(\t\0224\n\004type\030\005 \001(\0162&.MumbleProto." +
        "PermissionDenied.DenyType\022\014\n\004name\030\006 \001(\t\"" +
        "\275\001\n\010DenyType\022\010\n\004Text\020\000\022\016\n\nPermission\020\001\022\r" +
        "\n\tSuperUser\020\002\022\017\n\013ChannelName\020\003\022\017\n\013TextTo" +
        "oLong\020\004\022\007\n\003H9K\020\005\022\024\n\020TemporaryChannel\020\006\022\026" +
        "\n\022MissingCertificate\020\007\022\014\n\010UserName\020\010\022\017\n\013" +
        "ChannelFull\020\t\022\020\n\014NestingLimit\020\n\"\324\003\n\003ACL\022" +
        "\022\n\nchannel_id\030\001 \002(\r\022\032\n\014inherit_acls\030\002 \001(" +
        "\010:\004true\022*\n\006groups\030\003 \003(\0132\032.MumbleProto.AC" +
        "L.ChanGroup\022&\n\004acls\030\004 \003(\0132\030.MumbleProto.",
        "ACL.ChanACL\022\024\n\005query\030\005 \001(\010:\005false\032\234\001\n\tCh" +
        "anGroup\022\014\n\004name\030\001 \002(\t\022\027\n\tinherited\030\002 \001(\010" +
        ":\004true\022\025\n\007inherit\030\003 \001(\010:\004true\022\031\n\013inherit" +
        "able\030\004 \001(\010:\004true\022\013\n\003add\030\005 \003(\r\022\016\n\006remove\030" +
        "\006 \003(\r\022\031\n\021inherited_members\030\007 \003(\r\032\223\001\n\007Cha" +
        "nACL\022\030\n\napply_here\030\001 \001(\010:\004true\022\030\n\napply_" +
        "subs\030\002 \001(\010:\004true\022\027\n\tinherited\030\003 \001(\010:\004tru" +
        "e\022\017\n\007user_id\030\004 \001(\r\022\r\n\005group\030\005 \001(\t\022\r\n\005gra" +
        "nt\030\006 \001(\r\022\014\n\004deny\030\007 \001(\r\"(\n\nQueryUsers\022\013\n\003" +
        "ids\030\001 \003(\r\022\r\n\005names\030\002 \003(\t\"E\n\nCryptSetup\022\013",
        "\n\003key\030\001 \001(\014\022\024\n\014client_nonce\030\002 \001(\014\022\024\n\014ser" +
        "ver_nonce\030\003 \001(\014\"\323\001\n\023ContextActionModify\022" +
        "\016\n\006action\030\001 \002(\t\022\014\n\004text\030\002 \001(\t\022\017\n\007context" +
        "\030\003 \001(\r\022=\n\toperation\030\004 \001(\0162*.MumbleProto." +
        "ContextActionModify.Operation\",\n\007Context" +
        "\022\n\n\006Server\020\001\022\013\n\007Channel\020\002\022\010\n\004User\020\004\" \n\tO" +
        "peration\022\007\n\003Add\020\000\022\n\n\006Remove\020\001\"D\n\rContext" +
        "Action\022\017\n\007session\030\001 \001(\r\022\022\n\nchannel_id\030\002 " +
        "\001(\r\022\016\n\006action\030\003 \002(\t\"\\\n\010UserList\022)\n\005users" +
        "\030\001 \003(\0132\032.MumbleProto.UserList.User\032%\n\004Us",
        "er\022\017\n\007user_id\030\001 \002(\r\022\014\n\004name\030\002 \001(\t\"\270\001\n\013Vo" +
        "iceTarget\022\n\n\002id\030\001 \001(\r\0220\n\007targets\030\002 \003(\0132\037" +
        ".MumbleProto.VoiceTarget.Target\032k\n\006Targe" +
        "t\022\017\n\007session\030\001 \003(\r\022\022\n\nchannel_id\030\002 \001(\r\022\r" +
        "\n\005group\030\003 \001(\t\022\024\n\005links\030\004 \001(\010:\005false\022\027\n\010c" +
        "hildren\030\005 \001(\010:\005false\"P\n\017PermissionQuery\022" +
        "\022\n\nchannel_id\030\001 \001(\r\022\023\n\013permissions\030\002 \001(\r" +
        "\022\024\n\005flush\030\003 \001(\010:\005false\"\\\n\014CodecVersion\022\r" +
        "\n\005alpha\030\001 \002(\005\022\014\n\004beta\030\002 \002(\005\022\032\n\014prefer_al" +
        "pha\030\003 \002(\010:\004true\022\023\n\004opus\030\004 \001(\010:\005false\"\270\004\n",
        "\tUserStats\022\017\n\007session\030\001 \001(\r\022\031\n\nstats_onl" +
        "y\030\002 \001(\010:\005false\022\024\n\014certificates\030\003 \003(\014\0221\n\013" +
        "from_client\030\004 \001(\0132\034.MumbleProto.UserStat" +
        "s.Stats\0221\n\013from_server\030\005 \001(\0132\034.MumblePro" +
        "to.UserStats.Stats\022\023\n\013udp_packets\030\006 \001(\r\022" +
        "\023\n\013tcp_packets\030\007 \001(\r\022\024\n\014udp_ping_avg\030\010 \001" +
        "(\002\022\024\n\014udp_ping_var\030\t \001(\002\022\024\n\014tcp_ping_avg" +
        "\030\n \001(\002\022\024\n\014tcp_ping_var\030\013 \001(\002\022%\n\007version\030" +
        "\014 \001(\0132\024.MumbleProto.Version\022\025\n\rcelt_vers" +
        "ions\030\r \003(\005\022\017\n\007address\030\016 \001(\014\022\021\n\tbandwidth",
        "\030\017 \001(\r\022\022\n\nonlinesecs\030\020 \001(\r\022\020\n\010idlesecs\030\021" +
        " \001(\r\022!\n\022strong_certificate\030\022 \001(\010:\005false\022" +
        "\023\n\004opus\030\023 \001(\010:\005false\032A\n\005Stats\022\014\n\004good\030\001 " +
        "\001(\r\022\014\n\004late\030\002 \001(\r\022\014\n\004lost\030\003 \001(\r\022\016\n\006resyn" +
        "c\030\004 \001(\r\"J\n\rSuggestConfig\022\017\n\007version\030\001 \001(" +
        "\r\022\022\n\npositional\030\002 \001(\010\022\024\n\014push_to_talk\030\003 " +
        "\001(\010\"\\\n\013RequestBlob\022\027\n\017session_texture\030\001 " +
        "\003(\r\022\027\n\017session_comment\030\002 \003(\r\022\033\n\023channel_" +
        "description\030\003 \003(\rB\037\n\033com.morlunk.jumble." +
        "protobufH\001"
      };
      com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
          new com.google.protobuf.Descriptors.FileDescriptor.    InternalDescriptorAssigner() {
            public com.google.protobuf.ExtensionRegistry assignDescriptors(
                com.google.protobuf.Descriptors.FileDescriptor root) {
              descriptor = root;
              return null;
            }
          };
      com.google.protobuf.Descriptors.FileDescriptor
        .internalBuildGeneratedFileFrom(descriptorData,
          new com.google.protobuf.Descriptors.FileDescriptor[] {
          }, assigner);
      internal_static_MumbleProto_Version_descriptor =
        getDescriptor().getMessageTypes().get(0);
      internal_static_MumbleProto_Version_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_MumbleProto_Version_descriptor,
          new java.lang.String[] { "Version", "Release", "Os", "OsVersion", });
      internal_static_MumbleProto_UDPTunnel_descriptor =
        getDescriptor().getMessageTypes().get(1);
      internal_static_MumbleProto_UDPTunnel_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_MumbleProto_UDPTunnel_descriptor,
          new java.lang.String[] { "Packet", });
      internal_static_MumbleProto_Authenticate_descriptor =
        getDescriptor().getMessageTypes().get(2);
      internal_static_MumbleProto_Authenticate_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_MumbleProto_Authenticate_descriptor,
          new java.lang.String[] { "Username", "Password", "Tokens", "CeltVersions", "Opus", });
      internal_static_MumbleProto_Ping_descriptor =
        getDescriptor().getMessageTypes().get(3);
      internal_static_MumbleProto_Ping_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_MumbleProto_Ping_descriptor,
          new java.lang.String[] { "Timestamp", "Good", "Late", "Lost", "Resync", "UdpPackets", "TcpPackets", "UdpPingAvg", "UdpPingVar", "TcpPingAvg", "TcpPingVar", });
      internal_static_MumbleProto_Reject_descriptor =
        getDescriptor().getMessageTypes().get(4);
      internal_static_MumbleProto_Reject_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_MumbleProto_Reject_descriptor,
          new java.lang.String[] { "Type", "Reason", });
      internal_static_MumbleProto_ServerConfig_descriptor =
        getDescriptor().getMessageTypes().get(5);
      internal_static_MumbleProto_ServerConfig_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_MumbleProto_ServerConfig_descriptor,
          new java.lang.String[] { "MaxBandwidth", "WelcomeText", "AllowHtml", "MessageLength", "ImageMessageLength", });
      internal_static_MumbleProto_ServerSync_descriptor =
        getDescriptor().getMessageTypes().get(6);
      internal_static_MumbleProto_ServerSync_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_MumbleProto_ServerSync_descriptor,
          new java.lang.String[] { "Session", "MaxBandwidth", "WelcomeText", "Permissions", });
      internal_static_MumbleProto_ChannelRemove_descriptor =
        getDescriptor().getMessageTypes().get(7);
      internal_static_MumbleProto_ChannelRemove_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_MumbleProto_ChannelRemove_descriptor,
          new java.lang.String[] { "ChannelId", });
      internal_static_MumbleProto_ChannelState_descriptor =
        getDescriptor().getMessageTypes().get(8);
      internal_static_MumbleProto_ChannelState_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_MumbleProto_ChannelState_descriptor,
          new java.lang.String[] { "ChannelId", "Parent", "Name", "Links", "Description", "LinksAdd", "LinksRemove", "Temporary", "Position", "DescriptionHash", });
      internal_static_MumbleProto_UserRemove_descriptor =
        getDescriptor().getMessageTypes().get(9);
      internal_static_MumbleProto_UserRemove_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_MumbleProto_UserRemove_descriptor,
          new java.lang.String[] { "Session", "Actor", "Reason", "Ban", });
      internal_static_MumbleProto_UserState_descriptor =
        getDescriptor().getMessageTypes().get(10);
      internal_static_MumbleProto_UserState_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_MumbleProto_UserState_descriptor,
          new java.lang.String[] { "Session", "Actor", "Name", "UserId", "ChannelId", "Mute", "Deaf", "Suppress", "SelfMute", "SelfDeaf", "Texture", "PluginContext", "PluginIdentity", "Comment", "Hash", "CommentHash", "TextureHash", "PrioritySpeaker", "Recording", });
      internal_static_MumbleProto_BanList_descriptor =
        getDescriptor().getMessageTypes().get(11);
      internal_static_MumbleProto_BanList_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_MumbleProto_BanList_descriptor,
          new java.lang.String[] { "Bans", "Query", });
      internal_static_MumbleProto_BanList_BanEntry_descriptor =
        internal_static_MumbleProto_BanList_descriptor.getNestedTypes().get(0);
      internal_static_MumbleProto_BanList_BanEntry_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_MumbleProto_BanList_BanEntry_descriptor,
          new java.lang.String[] { "Address", "Mask", "Name", "Hash", "Reason", "Start", "Duration", });
      internal_static_MumbleProto_TextMessage_descriptor =
        getDescriptor().getMessageTypes().get(12);
      internal_static_MumbleProto_TextMessage_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_MumbleProto_TextMessage_descriptor,
          new java.lang.String[] { "Actor", "Session", "ChannelId", "TreeId", "Message", });
      internal_static_MumbleProto_PermissionDenied_descriptor =
        getDescriptor().getMessageTypes().get(13);
      internal_static_MumbleProto_PermissionDenied_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_MumbleProto_PermissionDenied_descriptor,
          new java.lang.String[] { "Permission", "ChannelId", "Session", "Reason", "Type", "Name", });
      internal_static_MumbleProto_ACL_descriptor =
        getDescriptor().getMessageTypes().get(14);
      internal_static_MumbleProto_ACL_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_MumbleProto_ACL_descriptor,
          new java.lang.String[] { "ChannelId", "InheritAcls", "Groups", "Acls", "Query", });
      internal_static_MumbleProto_ACL_ChanGroup_descriptor =
        internal_static_MumbleProto_ACL_descriptor.getNestedTypes().get(0);
      internal_static_MumbleProto_ACL_ChanGroup_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_MumbleProto_ACL_ChanGroup_descriptor,
          new java.lang.String[] { "Name", "Inherited", "Inherit", "Inheritable", "Add", "Remove", "InheritedMembers", });
      internal_static_MumbleProto_ACL_ChanACL_descriptor =
        internal_static_MumbleProto_ACL_descriptor.getNestedTypes().get(1);
      internal_static_MumbleProto_ACL_ChanACL_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_MumbleProto_ACL_ChanACL_descriptor,
          new java.lang.String[] { "ApplyHere", "ApplySubs", "Inherited", "UserId", "Group", "Grant", "Deny", });
      internal_static_MumbleProto_QueryUsers_descriptor =
        getDescriptor().getMessageTypes().get(15);
      internal_static_MumbleProto_QueryUsers_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_MumbleProto_QueryUsers_descriptor,
          new java.lang.String[] { "Ids", "Names", });
      internal_static_MumbleProto_CryptSetup_descriptor =
        getDescriptor().getMessageTypes().get(16);
      internal_static_MumbleProto_CryptSetup_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_MumbleProto_CryptSetup_descriptor,
          new java.lang.String[] { "Key", "ClientNonce", "ServerNonce", });
      internal_static_MumbleProto_ContextActionModify_descriptor =
        getDescriptor().getMessageTypes().get(17);
      internal_static_MumbleProto_ContextActionModify_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_MumbleProto_ContextActionModify_descriptor,
          new java.lang.String[] { "Action", "Text", "Context", "Operation", });
      internal_static_MumbleProto_ContextAction_descriptor =
        getDescriptor().getMessageTypes().get(18);
      internal_static_MumbleProto_ContextAction_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_MumbleProto_ContextAction_descriptor,
          new java.lang.String[] { "Session", "ChannelId", "Action", });
      internal_static_MumbleProto_UserList_descriptor =
        getDescriptor().getMessageTypes().get(19);
      internal_static_MumbleProto_UserList_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_MumbleProto_UserList_descriptor,
          new java.lang.String[] { "Users", });
      internal_static_MumbleProto_UserList_User_descriptor =
        internal_static_MumbleProto_UserList_descriptor.getNestedTypes().get(0);
      internal_static_MumbleProto_UserList_User_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_MumbleProto_UserList_User_descriptor,
          new java.lang.String[] { "UserId", "Name", });
      internal_static_MumbleProto_VoiceTarget_descriptor =
        getDescriptor().getMessageTypes().get(20);
      internal_static_MumbleProto_VoiceTarget_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_MumbleProto_VoiceTarget_descriptor,
          new java.lang.String[] { "Id", "Targets", });
      internal_static_MumbleProto_VoiceTarget_Target_descriptor =
        internal_static_MumbleProto_VoiceTarget_descriptor.getNestedTypes().get(0);
      internal_static_MumbleProto_VoiceTarget_Target_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_MumbleProto_VoiceTarget_Target_descriptor,
          new java.lang.String[] { "Session", "ChannelId", "Group", "Links", "Children", });
      internal_static_MumbleProto_PermissionQuery_descriptor =
        getDescriptor().getMessageTypes().get(21);
      internal_static_MumbleProto_PermissionQuery_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_MumbleProto_PermissionQuery_descriptor,
          new java.lang.String[] { "ChannelId", "Permissions", "Flush", });
      internal_static_MumbleProto_CodecVersion_descriptor =
        getDescriptor().getMessageTypes().get(22);
      internal_static_MumbleProto_CodecVersion_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_MumbleProto_CodecVersion_descriptor,
          new java.lang.String[] { "Alpha", "Beta", "PreferAlpha", "Opus", });
      internal_static_MumbleProto_UserStats_descriptor =
        getDescriptor().getMessageTypes().get(23);
      internal_static_MumbleProto_UserStats_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_MumbleProto_UserStats_descriptor,
          new java.lang.String[] { "Session", "StatsOnly", "Certificates", "FromClient", "FromServer", "UdpPackets", "TcpPackets", "UdpPingAvg", "UdpPingVar", "TcpPingAvg", "TcpPingVar", "Version", "CeltVersions", "Address", "Bandwidth", "Onlinesecs", "Idlesecs", "StrongCertificate", "Opus", });
      internal_static_MumbleProto_UserStats_Stats_descriptor =
        internal_static_MumbleProto_UserStats_descriptor.getNestedTypes().get(0);
      internal_static_MumbleProto_UserStats_Stats_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_MumbleProto_UserStats_Stats_descriptor,
          new java.lang.String[] { "Good", "Late", "Lost", "Resync", });
      internal_static_MumbleProto_SuggestConfig_descriptor =
        getDescriptor().getMessageTypes().get(24);
      internal_static_MumbleProto_SuggestConfig_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_MumbleProto_SuggestConfig_descriptor,
          new java.lang.String[] { "Version", "Positional", "PushToTalk", });
      internal_static_MumbleProto_RequestBlob_descriptor =
        getDescriptor().getMessageTypes().get(25);
      internal_static_MumbleProto_RequestBlob_fieldAccessorTable = new
        com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
          internal_static_MumbleProto_RequestBlob_descriptor,
          new java.lang.String[] { "SessionTexture", "SessionComment", "ChannelDescription", });
    }
  
    // @@protoc_insertion_point(outer_class_scope)
  }
  