All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.arthas.api.ArthasServices Maven / Gradle / Ivy

The newest version!
// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: ArthasServices.proto

package io.arthas.api;

public final class ArthasServices {
  private ArthasServices() {}
  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 ObjectRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:io.arthas.api.ObjectRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * int32 jobId = 1;
     * @return The jobId.
     */
    int getJobId();

    /**
     * int64 resultId = 2;
     * @return The resultId.
     */
    long getResultId();

    /**
     * string type = 3;
     * @return The type.
     */
    java.lang.String getType();
    /**
     * string type = 3;
     * @return The bytes for type.
     */
    com.google.protobuf.ByteString
        getTypeBytes();

    /**
     * string express = 4;
     * @return The express.
     */
    java.lang.String getExpress();
    /**
     * string express = 4;
     * @return The bytes for express.
     */
    com.google.protobuf.ByteString
        getExpressBytes();

    /**
     * int32 expand = 5;
     * @return The expand.
     */
    int getExpand();
  }
  /**
   * Protobuf type {@code io.arthas.api.ObjectRequest}
   */
  public  static final class ObjectRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:io.arthas.api.ObjectRequest)
      ObjectRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ObjectRequest.newBuilder() to construct.
    private ObjectRequest(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private ObjectRequest() {
      type_ = "";
      express_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ObjectRequest();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private ObjectRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 8: {

              jobId_ = input.readInt32();
              break;
            }
            case 16: {

              resultId_ = input.readInt64();
              break;
            }
            case 26: {
              java.lang.String s = input.readStringRequireUtf8();

              type_ = s;
              break;
            }
            case 34: {
              java.lang.String s = input.readStringRequireUtf8();

              express_ = s;
              break;
            }
            case 40: {

              expand_ = input.readInt32();
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              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 io.arthas.api.ArthasServices.internal_static_io_arthas_api_ObjectRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.arthas.api.ArthasServices.internal_static_io_arthas_api_ObjectRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.arthas.api.ArthasServices.ObjectRequest.class, io.arthas.api.ArthasServices.ObjectRequest.Builder.class);
    }

    public static final int JOBID_FIELD_NUMBER = 1;
    private int jobId_;
    /**
     * int32 jobId = 1;
     * @return The jobId.
     */
    public int getJobId() {
      return jobId_;
    }

    public static final int RESULTID_FIELD_NUMBER = 2;
    private long resultId_;
    /**
     * int64 resultId = 2;
     * @return The resultId.
     */
    public long getResultId() {
      return resultId_;
    }

    public static final int TYPE_FIELD_NUMBER = 3;
    private volatile java.lang.Object type_;
    /**
     * string type = 3;
     * @return The type.
     */
    public java.lang.String getType() {
      java.lang.Object ref = type_;
      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();
        type_ = s;
        return s;
      }
    }
    /**
     * string type = 3;
     * @return The bytes for type.
     */
    public com.google.protobuf.ByteString
        getTypeBytes() {
      java.lang.Object ref = type_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        type_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int EXPRESS_FIELD_NUMBER = 4;
    private volatile java.lang.Object express_;
    /**
     * string express = 4;
     * @return The express.
     */
    public java.lang.String getExpress() {
      java.lang.Object ref = express_;
      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();
        express_ = s;
        return s;
      }
    }
    /**
     * string express = 4;
     * @return The bytes for express.
     */
    public com.google.protobuf.ByteString
        getExpressBytes() {
      java.lang.Object ref = express_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        express_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int EXPAND_FIELD_NUMBER = 5;
    private int expand_;
    /**
     * int32 expand = 5;
     * @return The expand.
     */
    public int getExpand() {
      return expand_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (jobId_ != 0) {
        output.writeInt32(1, jobId_);
      }
      if (resultId_ != 0L) {
        output.writeInt64(2, resultId_);
      }
      if (!getTypeBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, type_);
      }
      if (!getExpressBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, express_);
      }
      if (expand_ != 0) {
        output.writeInt32(5, expand_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (jobId_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, jobId_);
      }
      if (resultId_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(2, resultId_);
      }
      if (!getTypeBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, type_);
      }
      if (!getExpressBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, express_);
      }
      if (expand_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(5, expand_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof io.arthas.api.ArthasServices.ObjectRequest)) {
        return super.equals(obj);
      }
      io.arthas.api.ArthasServices.ObjectRequest other = (io.arthas.api.ArthasServices.ObjectRequest) obj;

      if (getJobId()
          != other.getJobId()) return false;
      if (getResultId()
          != other.getResultId()) return false;
      if (!getType()
          .equals(other.getType())) return false;
      if (!getExpress()
          .equals(other.getExpress())) return false;
      if (getExpand()
          != other.getExpand()) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + JOBID_FIELD_NUMBER;
      hash = (53 * hash) + getJobId();
      hash = (37 * hash) + RESULTID_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getResultId());
      hash = (37 * hash) + TYPE_FIELD_NUMBER;
      hash = (53 * hash) + getType().hashCode();
      hash = (37 * hash) + EXPRESS_FIELD_NUMBER;
      hash = (53 * hash) + getExpress().hashCode();
      hash = (37 * hash) + EXPAND_FIELD_NUMBER;
      hash = (53 * hash) + getExpand();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.arthas.api.ArthasServices.ObjectRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.arthas.api.ArthasServices.ObjectRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.arthas.api.ArthasServices.ObjectRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.arthas.api.ArthasServices.ObjectRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.arthas.api.ArthasServices.ObjectRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.arthas.api.ArthasServices.ObjectRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.arthas.api.ArthasServices.ObjectRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.arthas.api.ArthasServices.ObjectRequest 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 io.arthas.api.ArthasServices.ObjectRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static io.arthas.api.ArthasServices.ObjectRequest 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 io.arthas.api.ArthasServices.ObjectRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.arthas.api.ArthasServices.ObjectRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(io.arthas.api.ArthasServices.ObjectRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    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 io.arthas.api.ObjectRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:io.arthas.api.ObjectRequest)
        io.arthas.api.ArthasServices.ObjectRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.arthas.api.ArthasServices.internal_static_io_arthas_api_ObjectRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.arthas.api.ArthasServices.internal_static_io_arthas_api_ObjectRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.arthas.api.ArthasServices.ObjectRequest.class, io.arthas.api.ArthasServices.ObjectRequest.Builder.class);
      }

      // Construct using io.arthas.api.ArthasServices.ObjectRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        jobId_ = 0;

        resultId_ = 0L;

        type_ = "";

        express_ = "";

        expand_ = 0;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.arthas.api.ArthasServices.internal_static_io_arthas_api_ObjectRequest_descriptor;
      }

      @java.lang.Override
      public io.arthas.api.ArthasServices.ObjectRequest getDefaultInstanceForType() {
        return io.arthas.api.ArthasServices.ObjectRequest.getDefaultInstance();
      }

      @java.lang.Override
      public io.arthas.api.ArthasServices.ObjectRequest build() {
        io.arthas.api.ArthasServices.ObjectRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.arthas.api.ArthasServices.ObjectRequest buildPartial() {
        io.arthas.api.ArthasServices.ObjectRequest result = new io.arthas.api.ArthasServices.ObjectRequest(this);
        result.jobId_ = jobId_;
        result.resultId_ = resultId_;
        result.type_ = type_;
        result.express_ = express_;
        result.expand_ = expand_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.arthas.api.ArthasServices.ObjectRequest) {
          return mergeFrom((io.arthas.api.ArthasServices.ObjectRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.arthas.api.ArthasServices.ObjectRequest other) {
        if (other == io.arthas.api.ArthasServices.ObjectRequest.getDefaultInstance()) return this;
        if (other.getJobId() != 0) {
          setJobId(other.getJobId());
        }
        if (other.getResultId() != 0L) {
          setResultId(other.getResultId());
        }
        if (!other.getType().isEmpty()) {
          type_ = other.type_;
          onChanged();
        }
        if (!other.getExpress().isEmpty()) {
          express_ = other.express_;
          onChanged();
        }
        if (other.getExpand() != 0) {
          setExpand(other.getExpand());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        io.arthas.api.ArthasServices.ObjectRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (io.arthas.api.ArthasServices.ObjectRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private int jobId_ ;
      /**
       * int32 jobId = 1;
       * @return The jobId.
       */
      public int getJobId() {
        return jobId_;
      }
      /**
       * int32 jobId = 1;
       * @param value The jobId to set.
       * @return This builder for chaining.
       */
      public Builder setJobId(int value) {
        
        jobId_ = value;
        onChanged();
        return this;
      }
      /**
       * int32 jobId = 1;
       * @return This builder for chaining.
       */
      public Builder clearJobId() {
        
        jobId_ = 0;
        onChanged();
        return this;
      }

      private long resultId_ ;
      /**
       * int64 resultId = 2;
       * @return The resultId.
       */
      public long getResultId() {
        return resultId_;
      }
      /**
       * int64 resultId = 2;
       * @param value The resultId to set.
       * @return This builder for chaining.
       */
      public Builder setResultId(long value) {
        
        resultId_ = value;
        onChanged();
        return this;
      }
      /**
       * int64 resultId = 2;
       * @return This builder for chaining.
       */
      public Builder clearResultId() {
        
        resultId_ = 0L;
        onChanged();
        return this;
      }

      private java.lang.Object type_ = "";
      /**
       * string type = 3;
       * @return The type.
       */
      public java.lang.String getType() {
        java.lang.Object ref = type_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          type_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string type = 3;
       * @return The bytes for type.
       */
      public com.google.protobuf.ByteString
          getTypeBytes() {
        java.lang.Object ref = type_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          type_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string type = 3;
       * @param value The type to set.
       * @return This builder for chaining.
       */
      public Builder setType(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        type_ = value;
        onChanged();
        return this;
      }
      /**
       * string type = 3;
       * @return This builder for chaining.
       */
      public Builder clearType() {
        
        type_ = getDefaultInstance().getType();
        onChanged();
        return this;
      }
      /**
       * string type = 3;
       * @param value The bytes for type to set.
       * @return This builder for chaining.
       */
      public Builder setTypeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        type_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object express_ = "";
      /**
       * string express = 4;
       * @return The express.
       */
      public java.lang.String getExpress() {
        java.lang.Object ref = express_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          express_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string express = 4;
       * @return The bytes for express.
       */
      public com.google.protobuf.ByteString
          getExpressBytes() {
        java.lang.Object ref = express_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          express_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string express = 4;
       * @param value The express to set.
       * @return This builder for chaining.
       */
      public Builder setExpress(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        express_ = value;
        onChanged();
        return this;
      }
      /**
       * string express = 4;
       * @return This builder for chaining.
       */
      public Builder clearExpress() {
        
        express_ = getDefaultInstance().getExpress();
        onChanged();
        return this;
      }
      /**
       * string express = 4;
       * @param value The bytes for express to set.
       * @return This builder for chaining.
       */
      public Builder setExpressBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        express_ = value;
        onChanged();
        return this;
      }

      private int expand_ ;
      /**
       * int32 expand = 5;
       * @return The expand.
       */
      public int getExpand() {
        return expand_;
      }
      /**
       * int32 expand = 5;
       * @param value The expand to set.
       * @return This builder for chaining.
       */
      public Builder setExpand(int value) {
        
        expand_ = value;
        onChanged();
        return this;
      }
      /**
       * int32 expand = 5;
       * @return This builder for chaining.
       */
      public Builder clearExpand() {
        
        expand_ = 0;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:io.arthas.api.ObjectRequest)
    }

    // @@protoc_insertion_point(class_scope:io.arthas.api.ObjectRequest)
    private static final io.arthas.api.ArthasServices.ObjectRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.arthas.api.ArthasServices.ObjectRequest();
    }

    public static io.arthas.api.ArthasServices.ObjectRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public ObjectRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new ObjectRequest(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.arthas.api.ArthasServices.ObjectRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface BasicValueOrBuilder extends
      // @@protoc_insertion_point(interface_extends:io.arthas.api.BasicValue)
      com.google.protobuf.MessageOrBuilder {

    /**
     * int32 int = 1;
     * @return The int.
     */
    int getInt();

    /**
     * int64 long = 2;
     * @return The long.
     */
    long getLong();

    /**
     * float float = 3;
     * @return The float.
     */
    float getFloat();

    /**
     * double double = 4;
     * @return The double.
     */
    double getDouble();

    /**
     * bool boolean = 5;
     * @return The boolean.
     */
    boolean getBoolean();

    /**
     * string string = 6;
     * @return The string.
     */
    java.lang.String getString();
    /**
     * string string = 6;
     * @return The bytes for string.
     */
    com.google.protobuf.ByteString
        getStringBytes();

    public io.arthas.api.ArthasServices.BasicValue.ValueCase getValueCase();
  }
  /**
   * Protobuf type {@code io.arthas.api.BasicValue}
   */
  public  static final class BasicValue extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:io.arthas.api.BasicValue)
      BasicValueOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use BasicValue.newBuilder() to construct.
    private BasicValue(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private BasicValue() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new BasicValue();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private BasicValue(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 8: {
              valueCase_ = 1;
              value_ = input.readInt32();
              break;
            }
            case 16: {
              valueCase_ = 2;
              value_ = input.readInt64();
              break;
            }
            case 29: {
              valueCase_ = 3;
              value_ = input.readFloat();
              break;
            }
            case 33: {
              valueCase_ = 4;
              value_ = input.readDouble();
              break;
            }
            case 40: {
              valueCase_ = 5;
              value_ = input.readBool();
              break;
            }
            case 50: {
              java.lang.String s = input.readStringRequireUtf8();
              valueCase_ = 6;
              value_ = s;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              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 io.arthas.api.ArthasServices.internal_static_io_arthas_api_BasicValue_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.arthas.api.ArthasServices.internal_static_io_arthas_api_BasicValue_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.arthas.api.ArthasServices.BasicValue.class, io.arthas.api.ArthasServices.BasicValue.Builder.class);
    }

    private int valueCase_ = 0;
    private java.lang.Object value_;
    public enum ValueCase
        implements com.google.protobuf.Internal.EnumLite,
            com.google.protobuf.AbstractMessage.InternalOneOfEnum {
      INT(1),
      LONG(2),
      FLOAT(3),
      DOUBLE(4),
      BOOLEAN(5),
      STRING(6),
      VALUE_NOT_SET(0);
      private final int value;
      private ValueCase(int value) {
        this.value = value;
      }
      /**
       * @param value The number of the enum to look for.
       * @return The enum associated with the given number.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static ValueCase valueOf(int value) {
        return forNumber(value);
      }

      public static ValueCase forNumber(int value) {
        switch (value) {
          case 1: return INT;
          case 2: return LONG;
          case 3: return FLOAT;
          case 4: return DOUBLE;
          case 5: return BOOLEAN;
          case 6: return STRING;
          case 0: return VALUE_NOT_SET;
          default: return null;
        }
      }
      public int getNumber() {
        return this.value;
      }
    };

    public ValueCase
    getValueCase() {
      return ValueCase.forNumber(
          valueCase_);
    }

    public static final int INT_FIELD_NUMBER = 1;
    /**
     * int32 int = 1;
     * @return The int.
     */
    public int getInt() {
      if (valueCase_ == 1) {
        return (java.lang.Integer) value_;
      }
      return 0;
    }

    public static final int LONG_FIELD_NUMBER = 2;
    /**
     * int64 long = 2;
     * @return The long.
     */
    public long getLong() {
      if (valueCase_ == 2) {
        return (java.lang.Long) value_;
      }
      return 0L;
    }

    public static final int FLOAT_FIELD_NUMBER = 3;
    /**
     * float float = 3;
     * @return The float.
     */
    public float getFloat() {
      if (valueCase_ == 3) {
        return (java.lang.Float) value_;
      }
      return 0F;
    }

    public static final int DOUBLE_FIELD_NUMBER = 4;
    /**
     * double double = 4;
     * @return The double.
     */
    public double getDouble() {
      if (valueCase_ == 4) {
        return (java.lang.Double) value_;
      }
      return 0D;
    }

    public static final int BOOLEAN_FIELD_NUMBER = 5;
    /**
     * bool boolean = 5;
     * @return The boolean.
     */
    public boolean getBoolean() {
      if (valueCase_ == 5) {
        return (java.lang.Boolean) value_;
      }
      return false;
    }

    public static final int STRING_FIELD_NUMBER = 6;
    /**
     * string string = 6;
     * @return The string.
     */
    public java.lang.String getString() {
      java.lang.Object ref = "";
      if (valueCase_ == 6) {
        ref = value_;
      }
      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 (valueCase_ == 6) {
          value_ = s;
        }
        return s;
      }
    }
    /**
     * string string = 6;
     * @return The bytes for string.
     */
    public com.google.protobuf.ByteString
        getStringBytes() {
      java.lang.Object ref = "";
      if (valueCase_ == 6) {
        ref = value_;
      }
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        if (valueCase_ == 6) {
          value_ = b;
        }
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (valueCase_ == 1) {
        output.writeInt32(
            1, (int)((java.lang.Integer) value_));
      }
      if (valueCase_ == 2) {
        output.writeInt64(
            2, (long)((java.lang.Long) value_));
      }
      if (valueCase_ == 3) {
        output.writeFloat(
            3, (float)((java.lang.Float) value_));
      }
      if (valueCase_ == 4) {
        output.writeDouble(
            4, (double)((java.lang.Double) value_));
      }
      if (valueCase_ == 5) {
        output.writeBool(
            5, (boolean)((java.lang.Boolean) value_));
      }
      if (valueCase_ == 6) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 6, value_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (valueCase_ == 1) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(
              1, (int)((java.lang.Integer) value_));
      }
      if (valueCase_ == 2) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(
              2, (long)((java.lang.Long) value_));
      }
      if (valueCase_ == 3) {
        size += com.google.protobuf.CodedOutputStream
          .computeFloatSize(
              3, (float)((java.lang.Float) value_));
      }
      if (valueCase_ == 4) {
        size += com.google.protobuf.CodedOutputStream
          .computeDoubleSize(
              4, (double)((java.lang.Double) value_));
      }
      if (valueCase_ == 5) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(
              5, (boolean)((java.lang.Boolean) value_));
      }
      if (valueCase_ == 6) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(6, value_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof io.arthas.api.ArthasServices.BasicValue)) {
        return super.equals(obj);
      }
      io.arthas.api.ArthasServices.BasicValue other = (io.arthas.api.ArthasServices.BasicValue) obj;

      if (!getValueCase().equals(other.getValueCase())) return false;
      switch (valueCase_) {
        case 1:
          if (getInt()
              != other.getInt()) return false;
          break;
        case 2:
          if (getLong()
              != other.getLong()) return false;
          break;
        case 3:
          if (java.lang.Float.floatToIntBits(getFloat())
              != java.lang.Float.floatToIntBits(
                  other.getFloat())) return false;
          break;
        case 4:
          if (java.lang.Double.doubleToLongBits(getDouble())
              != java.lang.Double.doubleToLongBits(
                  other.getDouble())) return false;
          break;
        case 5:
          if (getBoolean()
              != other.getBoolean()) return false;
          break;
        case 6:
          if (!getString()
              .equals(other.getString())) return false;
          break;
        case 0:
        default:
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      switch (valueCase_) {
        case 1:
          hash = (37 * hash) + INT_FIELD_NUMBER;
          hash = (53 * hash) + getInt();
          break;
        case 2:
          hash = (37 * hash) + LONG_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
              getLong());
          break;
        case 3:
          hash = (37 * hash) + FLOAT_FIELD_NUMBER;
          hash = (53 * hash) + java.lang.Float.floatToIntBits(
              getFloat());
          break;
        case 4:
          hash = (37 * hash) + DOUBLE_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
              java.lang.Double.doubleToLongBits(getDouble()));
          break;
        case 5:
          hash = (37 * hash) + BOOLEAN_FIELD_NUMBER;
          hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
              getBoolean());
          break;
        case 6:
          hash = (37 * hash) + STRING_FIELD_NUMBER;
          hash = (53 * hash) + getString().hashCode();
          break;
        case 0:
        default:
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.arthas.api.ArthasServices.BasicValue parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.arthas.api.ArthasServices.BasicValue parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.arthas.api.ArthasServices.BasicValue parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.arthas.api.ArthasServices.BasicValue parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.arthas.api.ArthasServices.BasicValue parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.arthas.api.ArthasServices.BasicValue parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.arthas.api.ArthasServices.BasicValue parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.arthas.api.ArthasServices.BasicValue 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 io.arthas.api.ArthasServices.BasicValue parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static io.arthas.api.ArthasServices.BasicValue 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 io.arthas.api.ArthasServices.BasicValue parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.arthas.api.ArthasServices.BasicValue parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(io.arthas.api.ArthasServices.BasicValue prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    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 io.arthas.api.BasicValue}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:io.arthas.api.BasicValue)
        io.arthas.api.ArthasServices.BasicValueOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.arthas.api.ArthasServices.internal_static_io_arthas_api_BasicValue_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.arthas.api.ArthasServices.internal_static_io_arthas_api_BasicValue_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.arthas.api.ArthasServices.BasicValue.class, io.arthas.api.ArthasServices.BasicValue.Builder.class);
      }

      // Construct using io.arthas.api.ArthasServices.BasicValue.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        valueCase_ = 0;
        value_ = null;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.arthas.api.ArthasServices.internal_static_io_arthas_api_BasicValue_descriptor;
      }

      @java.lang.Override
      public io.arthas.api.ArthasServices.BasicValue getDefaultInstanceForType() {
        return io.arthas.api.ArthasServices.BasicValue.getDefaultInstance();
      }

      @java.lang.Override
      public io.arthas.api.ArthasServices.BasicValue build() {
        io.arthas.api.ArthasServices.BasicValue result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.arthas.api.ArthasServices.BasicValue buildPartial() {
        io.arthas.api.ArthasServices.BasicValue result = new io.arthas.api.ArthasServices.BasicValue(this);
        if (valueCase_ == 1) {
          result.value_ = value_;
        }
        if (valueCase_ == 2) {
          result.value_ = value_;
        }
        if (valueCase_ == 3) {
          result.value_ = value_;
        }
        if (valueCase_ == 4) {
          result.value_ = value_;
        }
        if (valueCase_ == 5) {
          result.value_ = value_;
        }
        if (valueCase_ == 6) {
          result.value_ = value_;
        }
        result.valueCase_ = valueCase_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.arthas.api.ArthasServices.BasicValue) {
          return mergeFrom((io.arthas.api.ArthasServices.BasicValue)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.arthas.api.ArthasServices.BasicValue other) {
        if (other == io.arthas.api.ArthasServices.BasicValue.getDefaultInstance()) return this;
        switch (other.getValueCase()) {
          case INT: {
            setInt(other.getInt());
            break;
          }
          case LONG: {
            setLong(other.getLong());
            break;
          }
          case FLOAT: {
            setFloat(other.getFloat());
            break;
          }
          case DOUBLE: {
            setDouble(other.getDouble());
            break;
          }
          case BOOLEAN: {
            setBoolean(other.getBoolean());
            break;
          }
          case STRING: {
            valueCase_ = 6;
            value_ = other.value_;
            onChanged();
            break;
          }
          case VALUE_NOT_SET: {
            break;
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        io.arthas.api.ArthasServices.BasicValue parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (io.arthas.api.ArthasServices.BasicValue) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int valueCase_ = 0;
      private java.lang.Object value_;
      public ValueCase
          getValueCase() {
        return ValueCase.forNumber(
            valueCase_);
      }

      public Builder clearValue() {
        valueCase_ = 0;
        value_ = null;
        onChanged();
        return this;
      }


      /**
       * int32 int = 1;
       * @return The int.
       */
      public int getInt() {
        if (valueCase_ == 1) {
          return (java.lang.Integer) value_;
        }
        return 0;
      }
      /**
       * int32 int = 1;
       * @param value The int to set.
       * @return This builder for chaining.
       */
      public Builder setInt(int value) {
        valueCase_ = 1;
        value_ = value;
        onChanged();
        return this;
      }
      /**
       * int32 int = 1;
       * @return This builder for chaining.
       */
      public Builder clearInt() {
        if (valueCase_ == 1) {
          valueCase_ = 0;
          value_ = null;
          onChanged();
        }
        return this;
      }

      /**
       * int64 long = 2;
       * @return The long.
       */
      public long getLong() {
        if (valueCase_ == 2) {
          return (java.lang.Long) value_;
        }
        return 0L;
      }
      /**
       * int64 long = 2;
       * @param value The long to set.
       * @return This builder for chaining.
       */
      public Builder setLong(long value) {
        valueCase_ = 2;
        value_ = value;
        onChanged();
        return this;
      }
      /**
       * int64 long = 2;
       * @return This builder for chaining.
       */
      public Builder clearLong() {
        if (valueCase_ == 2) {
          valueCase_ = 0;
          value_ = null;
          onChanged();
        }
        return this;
      }

      /**
       * float float = 3;
       * @return The float.
       */
      public float getFloat() {
        if (valueCase_ == 3) {
          return (java.lang.Float) value_;
        }
        return 0F;
      }
      /**
       * float float = 3;
       * @param value The float to set.
       * @return This builder for chaining.
       */
      public Builder setFloat(float value) {
        valueCase_ = 3;
        value_ = value;
        onChanged();
        return this;
      }
      /**
       * float float = 3;
       * @return This builder for chaining.
       */
      public Builder clearFloat() {
        if (valueCase_ == 3) {
          valueCase_ = 0;
          value_ = null;
          onChanged();
        }
        return this;
      }

      /**
       * double double = 4;
       * @return The double.
       */
      public double getDouble() {
        if (valueCase_ == 4) {
          return (java.lang.Double) value_;
        }
        return 0D;
      }
      /**
       * double double = 4;
       * @param value The double to set.
       * @return This builder for chaining.
       */
      public Builder setDouble(double value) {
        valueCase_ = 4;
        value_ = value;
        onChanged();
        return this;
      }
      /**
       * double double = 4;
       * @return This builder for chaining.
       */
      public Builder clearDouble() {
        if (valueCase_ == 4) {
          valueCase_ = 0;
          value_ = null;
          onChanged();
        }
        return this;
      }

      /**
       * bool boolean = 5;
       * @return The boolean.
       */
      public boolean getBoolean() {
        if (valueCase_ == 5) {
          return (java.lang.Boolean) value_;
        }
        return false;
      }
      /**
       * bool boolean = 5;
       * @param value The boolean to set.
       * @return This builder for chaining.
       */
      public Builder setBoolean(boolean value) {
        valueCase_ = 5;
        value_ = value;
        onChanged();
        return this;
      }
      /**
       * bool boolean = 5;
       * @return This builder for chaining.
       */
      public Builder clearBoolean() {
        if (valueCase_ == 5) {
          valueCase_ = 0;
          value_ = null;
          onChanged();
        }
        return this;
      }

      /**
       * string string = 6;
       * @return The string.
       */
      public java.lang.String getString() {
        java.lang.Object ref = "";
        if (valueCase_ == 6) {
          ref = value_;
        }
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (valueCase_ == 6) {
            value_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string string = 6;
       * @return The bytes for string.
       */
      public com.google.protobuf.ByteString
          getStringBytes() {
        java.lang.Object ref = "";
        if (valueCase_ == 6) {
          ref = value_;
        }
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          if (valueCase_ == 6) {
            value_ = b;
          }
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string string = 6;
       * @param value The string to set.
       * @return This builder for chaining.
       */
      public Builder setString(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  valueCase_ = 6;
        value_ = value;
        onChanged();
        return this;
      }
      /**
       * string string = 6;
       * @return This builder for chaining.
       */
      public Builder clearString() {
        if (valueCase_ == 6) {
          valueCase_ = 0;
          value_ = null;
          onChanged();
        }
        return this;
      }
      /**
       * string string = 6;
       * @param value The bytes for string to set.
       * @return This builder for chaining.
       */
      public Builder setStringBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        valueCase_ = 6;
        value_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:io.arthas.api.BasicValue)
    }

    // @@protoc_insertion_point(class_scope:io.arthas.api.BasicValue)
    private static final io.arthas.api.ArthasServices.BasicValue DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.arthas.api.ArthasServices.BasicValue();
    }

    public static io.arthas.api.ArthasServices.BasicValue getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public BasicValue parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new BasicValue(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.arthas.api.ArthasServices.BasicValue getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ArrayElementOrBuilder extends
      // @@protoc_insertion_point(interface_extends:io.arthas.api.ArrayElement)
      com.google.protobuf.MessageOrBuilder {

    /**
     * .io.arthas.api.BasicValue basicValue = 1;
     * @return Whether the basicValue field is set.
     */
    boolean hasBasicValue();
    /**
     * .io.arthas.api.BasicValue basicValue = 1;
     * @return The basicValue.
     */
    io.arthas.api.ArthasServices.BasicValue getBasicValue();
    /**
     * .io.arthas.api.BasicValue basicValue = 1;
     */
    io.arthas.api.ArthasServices.BasicValueOrBuilder getBasicValueOrBuilder();

    /**
     * .io.arthas.api.JavaObject objectValue = 2;
     * @return Whether the objectValue field is set.
     */
    boolean hasObjectValue();
    /**
     * .io.arthas.api.JavaObject objectValue = 2;
     * @return The objectValue.
     */
    io.arthas.api.ArthasServices.JavaObject getObjectValue();
    /**
     * .io.arthas.api.JavaObject objectValue = 2;
     */
    io.arthas.api.ArthasServices.JavaObjectOrBuilder getObjectValueOrBuilder();

    /**
     * .io.arthas.api.ArrayValue arrayValue = 3;
     * @return Whether the arrayValue field is set.
     */
    boolean hasArrayValue();
    /**
     * .io.arthas.api.ArrayValue arrayValue = 3;
     * @return The arrayValue.
     */
    io.arthas.api.ArthasServices.ArrayValue getArrayValue();
    /**
     * .io.arthas.api.ArrayValue arrayValue = 3;
     */
    io.arthas.api.ArthasServices.ArrayValueOrBuilder getArrayValueOrBuilder();

    /**
     * .io.arthas.api.NullValue nullValue = 4;
     * @return Whether the nullValue field is set.
     */
    boolean hasNullValue();
    /**
     * .io.arthas.api.NullValue nullValue = 4;
     * @return The nullValue.
     */
    io.arthas.api.ArthasServices.NullValue getNullValue();
    /**
     * .io.arthas.api.NullValue nullValue = 4;
     */
    io.arthas.api.ArthasServices.NullValueOrBuilder getNullValueOrBuilder();

    /**
     * .io.arthas.api.UnexpandedObject unexpandedObject = 5;
     * @return Whether the unexpandedObject field is set.
     */
    boolean hasUnexpandedObject();
    /**
     * .io.arthas.api.UnexpandedObject unexpandedObject = 5;
     * @return The unexpandedObject.
     */
    io.arthas.api.ArthasServices.UnexpandedObject getUnexpandedObject();
    /**
     * .io.arthas.api.UnexpandedObject unexpandedObject = 5;
     */
    io.arthas.api.ArthasServices.UnexpandedObjectOrBuilder getUnexpandedObjectOrBuilder();

    public io.arthas.api.ArthasServices.ArrayElement.ElementCase getElementCase();
  }
  /**
   * Protobuf type {@code io.arthas.api.ArrayElement}
   */
  public  static final class ArrayElement extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:io.arthas.api.ArrayElement)
      ArrayElementOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ArrayElement.newBuilder() to construct.
    private ArrayElement(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private ArrayElement() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ArrayElement();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private ArrayElement(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 10: {
              io.arthas.api.ArthasServices.BasicValue.Builder subBuilder = null;
              if (elementCase_ == 1) {
                subBuilder = ((io.arthas.api.ArthasServices.BasicValue) element_).toBuilder();
              }
              element_ =
                  input.readMessage(io.arthas.api.ArthasServices.BasicValue.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((io.arthas.api.ArthasServices.BasicValue) element_);
                element_ = subBuilder.buildPartial();
              }
              elementCase_ = 1;
              break;
            }
            case 18: {
              io.arthas.api.ArthasServices.JavaObject.Builder subBuilder = null;
              if (elementCase_ == 2) {
                subBuilder = ((io.arthas.api.ArthasServices.JavaObject) element_).toBuilder();
              }
              element_ =
                  input.readMessage(io.arthas.api.ArthasServices.JavaObject.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((io.arthas.api.ArthasServices.JavaObject) element_);
                element_ = subBuilder.buildPartial();
              }
              elementCase_ = 2;
              break;
            }
            case 26: {
              io.arthas.api.ArthasServices.ArrayValue.Builder subBuilder = null;
              if (elementCase_ == 3) {
                subBuilder = ((io.arthas.api.ArthasServices.ArrayValue) element_).toBuilder();
              }
              element_ =
                  input.readMessage(io.arthas.api.ArthasServices.ArrayValue.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((io.arthas.api.ArthasServices.ArrayValue) element_);
                element_ = subBuilder.buildPartial();
              }
              elementCase_ = 3;
              break;
            }
            case 34: {
              io.arthas.api.ArthasServices.NullValue.Builder subBuilder = null;
              if (elementCase_ == 4) {
                subBuilder = ((io.arthas.api.ArthasServices.NullValue) element_).toBuilder();
              }
              element_ =
                  input.readMessage(io.arthas.api.ArthasServices.NullValue.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((io.arthas.api.ArthasServices.NullValue) element_);
                element_ = subBuilder.buildPartial();
              }
              elementCase_ = 4;
              break;
            }
            case 42: {
              io.arthas.api.ArthasServices.UnexpandedObject.Builder subBuilder = null;
              if (elementCase_ == 5) {
                subBuilder = ((io.arthas.api.ArthasServices.UnexpandedObject) element_).toBuilder();
              }
              element_ =
                  input.readMessage(io.arthas.api.ArthasServices.UnexpandedObject.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((io.arthas.api.ArthasServices.UnexpandedObject) element_);
                element_ = subBuilder.buildPartial();
              }
              elementCase_ = 5;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              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 io.arthas.api.ArthasServices.internal_static_io_arthas_api_ArrayElement_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.arthas.api.ArthasServices.internal_static_io_arthas_api_ArrayElement_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.arthas.api.ArthasServices.ArrayElement.class, io.arthas.api.ArthasServices.ArrayElement.Builder.class);
    }

    private int elementCase_ = 0;
    private java.lang.Object element_;
    public enum ElementCase
        implements com.google.protobuf.Internal.EnumLite,
            com.google.protobuf.AbstractMessage.InternalOneOfEnum {
      BASICVALUE(1),
      OBJECTVALUE(2),
      ARRAYVALUE(3),
      NULLVALUE(4),
      UNEXPANDEDOBJECT(5),
      ELEMENT_NOT_SET(0);
      private final int value;
      private ElementCase(int value) {
        this.value = value;
      }
      /**
       * @param value The number of the enum to look for.
       * @return The enum associated with the given number.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static ElementCase valueOf(int value) {
        return forNumber(value);
      }

      public static ElementCase forNumber(int value) {
        switch (value) {
          case 1: return BASICVALUE;
          case 2: return OBJECTVALUE;
          case 3: return ARRAYVALUE;
          case 4: return NULLVALUE;
          case 5: return UNEXPANDEDOBJECT;
          case 0: return ELEMENT_NOT_SET;
          default: return null;
        }
      }
      public int getNumber() {
        return this.value;
      }
    };

    public ElementCase
    getElementCase() {
      return ElementCase.forNumber(
          elementCase_);
    }

    public static final int BASICVALUE_FIELD_NUMBER = 1;
    /**
     * .io.arthas.api.BasicValue basicValue = 1;
     * @return Whether the basicValue field is set.
     */
    public boolean hasBasicValue() {
      return elementCase_ == 1;
    }
    /**
     * .io.arthas.api.BasicValue basicValue = 1;
     * @return The basicValue.
     */
    public io.arthas.api.ArthasServices.BasicValue getBasicValue() {
      if (elementCase_ == 1) {
         return (io.arthas.api.ArthasServices.BasicValue) element_;
      }
      return io.arthas.api.ArthasServices.BasicValue.getDefaultInstance();
    }
    /**
     * .io.arthas.api.BasicValue basicValue = 1;
     */
    public io.arthas.api.ArthasServices.BasicValueOrBuilder getBasicValueOrBuilder() {
      if (elementCase_ == 1) {
         return (io.arthas.api.ArthasServices.BasicValue) element_;
      }
      return io.arthas.api.ArthasServices.BasicValue.getDefaultInstance();
    }

    public static final int OBJECTVALUE_FIELD_NUMBER = 2;
    /**
     * .io.arthas.api.JavaObject objectValue = 2;
     * @return Whether the objectValue field is set.
     */
    public boolean hasObjectValue() {
      return elementCase_ == 2;
    }
    /**
     * .io.arthas.api.JavaObject objectValue = 2;
     * @return The objectValue.
     */
    public io.arthas.api.ArthasServices.JavaObject getObjectValue() {
      if (elementCase_ == 2) {
         return (io.arthas.api.ArthasServices.JavaObject) element_;
      }
      return io.arthas.api.ArthasServices.JavaObject.getDefaultInstance();
    }
    /**
     * .io.arthas.api.JavaObject objectValue = 2;
     */
    public io.arthas.api.ArthasServices.JavaObjectOrBuilder getObjectValueOrBuilder() {
      if (elementCase_ == 2) {
         return (io.arthas.api.ArthasServices.JavaObject) element_;
      }
      return io.arthas.api.ArthasServices.JavaObject.getDefaultInstance();
    }

    public static final int ARRAYVALUE_FIELD_NUMBER = 3;
    /**
     * .io.arthas.api.ArrayValue arrayValue = 3;
     * @return Whether the arrayValue field is set.
     */
    public boolean hasArrayValue() {
      return elementCase_ == 3;
    }
    /**
     * .io.arthas.api.ArrayValue arrayValue = 3;
     * @return The arrayValue.
     */
    public io.arthas.api.ArthasServices.ArrayValue getArrayValue() {
      if (elementCase_ == 3) {
         return (io.arthas.api.ArthasServices.ArrayValue) element_;
      }
      return io.arthas.api.ArthasServices.ArrayValue.getDefaultInstance();
    }
    /**
     * .io.arthas.api.ArrayValue arrayValue = 3;
     */
    public io.arthas.api.ArthasServices.ArrayValueOrBuilder getArrayValueOrBuilder() {
      if (elementCase_ == 3) {
         return (io.arthas.api.ArthasServices.ArrayValue) element_;
      }
      return io.arthas.api.ArthasServices.ArrayValue.getDefaultInstance();
    }

    public static final int NULLVALUE_FIELD_NUMBER = 4;
    /**
     * .io.arthas.api.NullValue nullValue = 4;
     * @return Whether the nullValue field is set.
     */
    public boolean hasNullValue() {
      return elementCase_ == 4;
    }
    /**
     * .io.arthas.api.NullValue nullValue = 4;
     * @return The nullValue.
     */
    public io.arthas.api.ArthasServices.NullValue getNullValue() {
      if (elementCase_ == 4) {
         return (io.arthas.api.ArthasServices.NullValue) element_;
      }
      return io.arthas.api.ArthasServices.NullValue.getDefaultInstance();
    }
    /**
     * .io.arthas.api.NullValue nullValue = 4;
     */
    public io.arthas.api.ArthasServices.NullValueOrBuilder getNullValueOrBuilder() {
      if (elementCase_ == 4) {
         return (io.arthas.api.ArthasServices.NullValue) element_;
      }
      return io.arthas.api.ArthasServices.NullValue.getDefaultInstance();
    }

    public static final int UNEXPANDEDOBJECT_FIELD_NUMBER = 5;
    /**
     * .io.arthas.api.UnexpandedObject unexpandedObject = 5;
     * @return Whether the unexpandedObject field is set.
     */
    public boolean hasUnexpandedObject() {
      return elementCase_ == 5;
    }
    /**
     * .io.arthas.api.UnexpandedObject unexpandedObject = 5;
     * @return The unexpandedObject.
     */
    public io.arthas.api.ArthasServices.UnexpandedObject getUnexpandedObject() {
      if (elementCase_ == 5) {
         return (io.arthas.api.ArthasServices.UnexpandedObject) element_;
      }
      return io.arthas.api.ArthasServices.UnexpandedObject.getDefaultInstance();
    }
    /**
     * .io.arthas.api.UnexpandedObject unexpandedObject = 5;
     */
    public io.arthas.api.ArthasServices.UnexpandedObjectOrBuilder getUnexpandedObjectOrBuilder() {
      if (elementCase_ == 5) {
         return (io.arthas.api.ArthasServices.UnexpandedObject) element_;
      }
      return io.arthas.api.ArthasServices.UnexpandedObject.getDefaultInstance();
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (elementCase_ == 1) {
        output.writeMessage(1, (io.arthas.api.ArthasServices.BasicValue) element_);
      }
      if (elementCase_ == 2) {
        output.writeMessage(2, (io.arthas.api.ArthasServices.JavaObject) element_);
      }
      if (elementCase_ == 3) {
        output.writeMessage(3, (io.arthas.api.ArthasServices.ArrayValue) element_);
      }
      if (elementCase_ == 4) {
        output.writeMessage(4, (io.arthas.api.ArthasServices.NullValue) element_);
      }
      if (elementCase_ == 5) {
        output.writeMessage(5, (io.arthas.api.ArthasServices.UnexpandedObject) element_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (elementCase_ == 1) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, (io.arthas.api.ArthasServices.BasicValue) element_);
      }
      if (elementCase_ == 2) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, (io.arthas.api.ArthasServices.JavaObject) element_);
      }
      if (elementCase_ == 3) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, (io.arthas.api.ArthasServices.ArrayValue) element_);
      }
      if (elementCase_ == 4) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, (io.arthas.api.ArthasServices.NullValue) element_);
      }
      if (elementCase_ == 5) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, (io.arthas.api.ArthasServices.UnexpandedObject) element_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof io.arthas.api.ArthasServices.ArrayElement)) {
        return super.equals(obj);
      }
      io.arthas.api.ArthasServices.ArrayElement other = (io.arthas.api.ArthasServices.ArrayElement) obj;

      if (!getElementCase().equals(other.getElementCase())) return false;
      switch (elementCase_) {
        case 1:
          if (!getBasicValue()
              .equals(other.getBasicValue())) return false;
          break;
        case 2:
          if (!getObjectValue()
              .equals(other.getObjectValue())) return false;
          break;
        case 3:
          if (!getArrayValue()
              .equals(other.getArrayValue())) return false;
          break;
        case 4:
          if (!getNullValue()
              .equals(other.getNullValue())) return false;
          break;
        case 5:
          if (!getUnexpandedObject()
              .equals(other.getUnexpandedObject())) return false;
          break;
        case 0:
        default:
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      switch (elementCase_) {
        case 1:
          hash = (37 * hash) + BASICVALUE_FIELD_NUMBER;
          hash = (53 * hash) + getBasicValue().hashCode();
          break;
        case 2:
          hash = (37 * hash) + OBJECTVALUE_FIELD_NUMBER;
          hash = (53 * hash) + getObjectValue().hashCode();
          break;
        case 3:
          hash = (37 * hash) + ARRAYVALUE_FIELD_NUMBER;
          hash = (53 * hash) + getArrayValue().hashCode();
          break;
        case 4:
          hash = (37 * hash) + NULLVALUE_FIELD_NUMBER;
          hash = (53 * hash) + getNullValue().hashCode();
          break;
        case 5:
          hash = (37 * hash) + UNEXPANDEDOBJECT_FIELD_NUMBER;
          hash = (53 * hash) + getUnexpandedObject().hashCode();
          break;
        case 0:
        default:
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.arthas.api.ArthasServices.ArrayElement parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.arthas.api.ArthasServices.ArrayElement parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.arthas.api.ArthasServices.ArrayElement parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.arthas.api.ArthasServices.ArrayElement parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.arthas.api.ArthasServices.ArrayElement parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.arthas.api.ArthasServices.ArrayElement parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.arthas.api.ArthasServices.ArrayElement parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.arthas.api.ArthasServices.ArrayElement 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 io.arthas.api.ArthasServices.ArrayElement parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static io.arthas.api.ArthasServices.ArrayElement 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 io.arthas.api.ArthasServices.ArrayElement parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.arthas.api.ArthasServices.ArrayElement parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(io.arthas.api.ArthasServices.ArrayElement prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    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 io.arthas.api.ArrayElement}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:io.arthas.api.ArrayElement)
        io.arthas.api.ArthasServices.ArrayElementOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.arthas.api.ArthasServices.internal_static_io_arthas_api_ArrayElement_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.arthas.api.ArthasServices.internal_static_io_arthas_api_ArrayElement_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.arthas.api.ArthasServices.ArrayElement.class, io.arthas.api.ArthasServices.ArrayElement.Builder.class);
      }

      // Construct using io.arthas.api.ArthasServices.ArrayElement.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        elementCase_ = 0;
        element_ = null;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.arthas.api.ArthasServices.internal_static_io_arthas_api_ArrayElement_descriptor;
      }

      @java.lang.Override
      public io.arthas.api.ArthasServices.ArrayElement getDefaultInstanceForType() {
        return io.arthas.api.ArthasServices.ArrayElement.getDefaultInstance();
      }

      @java.lang.Override
      public io.arthas.api.ArthasServices.ArrayElement build() {
        io.arthas.api.ArthasServices.ArrayElement result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.arthas.api.ArthasServices.ArrayElement buildPartial() {
        io.arthas.api.ArthasServices.ArrayElement result = new io.arthas.api.ArthasServices.ArrayElement(this);
        if (elementCase_ == 1) {
          if (basicValueBuilder_ == null) {
            result.element_ = element_;
          } else {
            result.element_ = basicValueBuilder_.build();
          }
        }
        if (elementCase_ == 2) {
          if (objectValueBuilder_ == null) {
            result.element_ = element_;
          } else {
            result.element_ = objectValueBuilder_.build();
          }
        }
        if (elementCase_ == 3) {
          if (arrayValueBuilder_ == null) {
            result.element_ = element_;
          } else {
            result.element_ = arrayValueBuilder_.build();
          }
        }
        if (elementCase_ == 4) {
          if (nullValueBuilder_ == null) {
            result.element_ = element_;
          } else {
            result.element_ = nullValueBuilder_.build();
          }
        }
        if (elementCase_ == 5) {
          if (unexpandedObjectBuilder_ == null) {
            result.element_ = element_;
          } else {
            result.element_ = unexpandedObjectBuilder_.build();
          }
        }
        result.elementCase_ = elementCase_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.arthas.api.ArthasServices.ArrayElement) {
          return mergeFrom((io.arthas.api.ArthasServices.ArrayElement)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.arthas.api.ArthasServices.ArrayElement other) {
        if (other == io.arthas.api.ArthasServices.ArrayElement.getDefaultInstance()) return this;
        switch (other.getElementCase()) {
          case BASICVALUE: {
            mergeBasicValue(other.getBasicValue());
            break;
          }
          case OBJECTVALUE: {
            mergeObjectValue(other.getObjectValue());
            break;
          }
          case ARRAYVALUE: {
            mergeArrayValue(other.getArrayValue());
            break;
          }
          case NULLVALUE: {
            mergeNullValue(other.getNullValue());
            break;
          }
          case UNEXPANDEDOBJECT: {
            mergeUnexpandedObject(other.getUnexpandedObject());
            break;
          }
          case ELEMENT_NOT_SET: {
            break;
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        io.arthas.api.ArthasServices.ArrayElement parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (io.arthas.api.ArthasServices.ArrayElement) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int elementCase_ = 0;
      private java.lang.Object element_;
      public ElementCase
          getElementCase() {
        return ElementCase.forNumber(
            elementCase_);
      }

      public Builder clearElement() {
        elementCase_ = 0;
        element_ = null;
        onChanged();
        return this;
      }


      private com.google.protobuf.SingleFieldBuilderV3<
          io.arthas.api.ArthasServices.BasicValue, io.arthas.api.ArthasServices.BasicValue.Builder, io.arthas.api.ArthasServices.BasicValueOrBuilder> basicValueBuilder_;
      /**
       * .io.arthas.api.BasicValue basicValue = 1;
       * @return Whether the basicValue field is set.
       */
      public boolean hasBasicValue() {
        return elementCase_ == 1;
      }
      /**
       * .io.arthas.api.BasicValue basicValue = 1;
       * @return The basicValue.
       */
      public io.arthas.api.ArthasServices.BasicValue getBasicValue() {
        if (basicValueBuilder_ == null) {
          if (elementCase_ == 1) {
            return (io.arthas.api.ArthasServices.BasicValue) element_;
          }
          return io.arthas.api.ArthasServices.BasicValue.getDefaultInstance();
        } else {
          if (elementCase_ == 1) {
            return basicValueBuilder_.getMessage();
          }
          return io.arthas.api.ArthasServices.BasicValue.getDefaultInstance();
        }
      }
      /**
       * .io.arthas.api.BasicValue basicValue = 1;
       */
      public Builder setBasicValue(io.arthas.api.ArthasServices.BasicValue value) {
        if (basicValueBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          element_ = value;
          onChanged();
        } else {
          basicValueBuilder_.setMessage(value);
        }
        elementCase_ = 1;
        return this;
      }
      /**
       * .io.arthas.api.BasicValue basicValue = 1;
       */
      public Builder setBasicValue(
          io.arthas.api.ArthasServices.BasicValue.Builder builderForValue) {
        if (basicValueBuilder_ == null) {
          element_ = builderForValue.build();
          onChanged();
        } else {
          basicValueBuilder_.setMessage(builderForValue.build());
        }
        elementCase_ = 1;
        return this;
      }
      /**
       * .io.arthas.api.BasicValue basicValue = 1;
       */
      public Builder mergeBasicValue(io.arthas.api.ArthasServices.BasicValue value) {
        if (basicValueBuilder_ == null) {
          if (elementCase_ == 1 &&
              element_ != io.arthas.api.ArthasServices.BasicValue.getDefaultInstance()) {
            element_ = io.arthas.api.ArthasServices.BasicValue.newBuilder((io.arthas.api.ArthasServices.BasicValue) element_)
                .mergeFrom(value).buildPartial();
          } else {
            element_ = value;
          }
          onChanged();
        } else {
          if (elementCase_ == 1) {
            basicValueBuilder_.mergeFrom(value);
          }
          basicValueBuilder_.setMessage(value);
        }
        elementCase_ = 1;
        return this;
      }
      /**
       * .io.arthas.api.BasicValue basicValue = 1;
       */
      public Builder clearBasicValue() {
        if (basicValueBuilder_ == null) {
          if (elementCase_ == 1) {
            elementCase_ = 0;
            element_ = null;
            onChanged();
          }
        } else {
          if (elementCase_ == 1) {
            elementCase_ = 0;
            element_ = null;
          }
          basicValueBuilder_.clear();
        }
        return this;
      }
      /**
       * .io.arthas.api.BasicValue basicValue = 1;
       */
      public io.arthas.api.ArthasServices.BasicValue.Builder getBasicValueBuilder() {
        return getBasicValueFieldBuilder().getBuilder();
      }
      /**
       * .io.arthas.api.BasicValue basicValue = 1;
       */
      public io.arthas.api.ArthasServices.BasicValueOrBuilder getBasicValueOrBuilder() {
        if ((elementCase_ == 1) && (basicValueBuilder_ != null)) {
          return basicValueBuilder_.getMessageOrBuilder();
        } else {
          if (elementCase_ == 1) {
            return (io.arthas.api.ArthasServices.BasicValue) element_;
          }
          return io.arthas.api.ArthasServices.BasicValue.getDefaultInstance();
        }
      }
      /**
       * .io.arthas.api.BasicValue basicValue = 1;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          io.arthas.api.ArthasServices.BasicValue, io.arthas.api.ArthasServices.BasicValue.Builder, io.arthas.api.ArthasServices.BasicValueOrBuilder> 
          getBasicValueFieldBuilder() {
        if (basicValueBuilder_ == null) {
          if (!(elementCase_ == 1)) {
            element_ = io.arthas.api.ArthasServices.BasicValue.getDefaultInstance();
          }
          basicValueBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              io.arthas.api.ArthasServices.BasicValue, io.arthas.api.ArthasServices.BasicValue.Builder, io.arthas.api.ArthasServices.BasicValueOrBuilder>(
                  (io.arthas.api.ArthasServices.BasicValue) element_,
                  getParentForChildren(),
                  isClean());
          element_ = null;
        }
        elementCase_ = 1;
        onChanged();;
        return basicValueBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          io.arthas.api.ArthasServices.JavaObject, io.arthas.api.ArthasServices.JavaObject.Builder, io.arthas.api.ArthasServices.JavaObjectOrBuilder> objectValueBuilder_;
      /**
       * .io.arthas.api.JavaObject objectValue = 2;
       * @return Whether the objectValue field is set.
       */
      public boolean hasObjectValue() {
        return elementCase_ == 2;
      }
      /**
       * .io.arthas.api.JavaObject objectValue = 2;
       * @return The objectValue.
       */
      public io.arthas.api.ArthasServices.JavaObject getObjectValue() {
        if (objectValueBuilder_ == null) {
          if (elementCase_ == 2) {
            return (io.arthas.api.ArthasServices.JavaObject) element_;
          }
          return io.arthas.api.ArthasServices.JavaObject.getDefaultInstance();
        } else {
          if (elementCase_ == 2) {
            return objectValueBuilder_.getMessage();
          }
          return io.arthas.api.ArthasServices.JavaObject.getDefaultInstance();
        }
      }
      /**
       * .io.arthas.api.JavaObject objectValue = 2;
       */
      public Builder setObjectValue(io.arthas.api.ArthasServices.JavaObject value) {
        if (objectValueBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          element_ = value;
          onChanged();
        } else {
          objectValueBuilder_.setMessage(value);
        }
        elementCase_ = 2;
        return this;
      }
      /**
       * .io.arthas.api.JavaObject objectValue = 2;
       */
      public Builder setObjectValue(
          io.arthas.api.ArthasServices.JavaObject.Builder builderForValue) {
        if (objectValueBuilder_ == null) {
          element_ = builderForValue.build();
          onChanged();
        } else {
          objectValueBuilder_.setMessage(builderForValue.build());
        }
        elementCase_ = 2;
        return this;
      }
      /**
       * .io.arthas.api.JavaObject objectValue = 2;
       */
      public Builder mergeObjectValue(io.arthas.api.ArthasServices.JavaObject value) {
        if (objectValueBuilder_ == null) {
          if (elementCase_ == 2 &&
              element_ != io.arthas.api.ArthasServices.JavaObject.getDefaultInstance()) {
            element_ = io.arthas.api.ArthasServices.JavaObject.newBuilder((io.arthas.api.ArthasServices.JavaObject) element_)
                .mergeFrom(value).buildPartial();
          } else {
            element_ = value;
          }
          onChanged();
        } else {
          if (elementCase_ == 2) {
            objectValueBuilder_.mergeFrom(value);
          }
          objectValueBuilder_.setMessage(value);
        }
        elementCase_ = 2;
        return this;
      }
      /**
       * .io.arthas.api.JavaObject objectValue = 2;
       */
      public Builder clearObjectValue() {
        if (objectValueBuilder_ == null) {
          if (elementCase_ == 2) {
            elementCase_ = 0;
            element_ = null;
            onChanged();
          }
        } else {
          if (elementCase_ == 2) {
            elementCase_ = 0;
            element_ = null;
          }
          objectValueBuilder_.clear();
        }
        return this;
      }
      /**
       * .io.arthas.api.JavaObject objectValue = 2;
       */
      public io.arthas.api.ArthasServices.JavaObject.Builder getObjectValueBuilder() {
        return getObjectValueFieldBuilder().getBuilder();
      }
      /**
       * .io.arthas.api.JavaObject objectValue = 2;
       */
      public io.arthas.api.ArthasServices.JavaObjectOrBuilder getObjectValueOrBuilder() {
        if ((elementCase_ == 2) && (objectValueBuilder_ != null)) {
          return objectValueBuilder_.getMessageOrBuilder();
        } else {
          if (elementCase_ == 2) {
            return (io.arthas.api.ArthasServices.JavaObject) element_;
          }
          return io.arthas.api.ArthasServices.JavaObject.getDefaultInstance();
        }
      }
      /**
       * .io.arthas.api.JavaObject objectValue = 2;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          io.arthas.api.ArthasServices.JavaObject, io.arthas.api.ArthasServices.JavaObject.Builder, io.arthas.api.ArthasServices.JavaObjectOrBuilder> 
          getObjectValueFieldBuilder() {
        if (objectValueBuilder_ == null) {
          if (!(elementCase_ == 2)) {
            element_ = io.arthas.api.ArthasServices.JavaObject.getDefaultInstance();
          }
          objectValueBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              io.arthas.api.ArthasServices.JavaObject, io.arthas.api.ArthasServices.JavaObject.Builder, io.arthas.api.ArthasServices.JavaObjectOrBuilder>(
                  (io.arthas.api.ArthasServices.JavaObject) element_,
                  getParentForChildren(),
                  isClean());
          element_ = null;
        }
        elementCase_ = 2;
        onChanged();;
        return objectValueBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          io.arthas.api.ArthasServices.ArrayValue, io.arthas.api.ArthasServices.ArrayValue.Builder, io.arthas.api.ArthasServices.ArrayValueOrBuilder> arrayValueBuilder_;
      /**
       * .io.arthas.api.ArrayValue arrayValue = 3;
       * @return Whether the arrayValue field is set.
       */
      public boolean hasArrayValue() {
        return elementCase_ == 3;
      }
      /**
       * .io.arthas.api.ArrayValue arrayValue = 3;
       * @return The arrayValue.
       */
      public io.arthas.api.ArthasServices.ArrayValue getArrayValue() {
        if (arrayValueBuilder_ == null) {
          if (elementCase_ == 3) {
            return (io.arthas.api.ArthasServices.ArrayValue) element_;
          }
          return io.arthas.api.ArthasServices.ArrayValue.getDefaultInstance();
        } else {
          if (elementCase_ == 3) {
            return arrayValueBuilder_.getMessage();
          }
          return io.arthas.api.ArthasServices.ArrayValue.getDefaultInstance();
        }
      }
      /**
       * .io.arthas.api.ArrayValue arrayValue = 3;
       */
      public Builder setArrayValue(io.arthas.api.ArthasServices.ArrayValue value) {
        if (arrayValueBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          element_ = value;
          onChanged();
        } else {
          arrayValueBuilder_.setMessage(value);
        }
        elementCase_ = 3;
        return this;
      }
      /**
       * .io.arthas.api.ArrayValue arrayValue = 3;
       */
      public Builder setArrayValue(
          io.arthas.api.ArthasServices.ArrayValue.Builder builderForValue) {
        if (arrayValueBuilder_ == null) {
          element_ = builderForValue.build();
          onChanged();
        } else {
          arrayValueBuilder_.setMessage(builderForValue.build());
        }
        elementCase_ = 3;
        return this;
      }
      /**
       * .io.arthas.api.ArrayValue arrayValue = 3;
       */
      public Builder mergeArrayValue(io.arthas.api.ArthasServices.ArrayValue value) {
        if (arrayValueBuilder_ == null) {
          if (elementCase_ == 3 &&
              element_ != io.arthas.api.ArthasServices.ArrayValue.getDefaultInstance()) {
            element_ = io.arthas.api.ArthasServices.ArrayValue.newBuilder((io.arthas.api.ArthasServices.ArrayValue) element_)
                .mergeFrom(value).buildPartial();
          } else {
            element_ = value;
          }
          onChanged();
        } else {
          if (elementCase_ == 3) {
            arrayValueBuilder_.mergeFrom(value);
          }
          arrayValueBuilder_.setMessage(value);
        }
        elementCase_ = 3;
        return this;
      }
      /**
       * .io.arthas.api.ArrayValue arrayValue = 3;
       */
      public Builder clearArrayValue() {
        if (arrayValueBuilder_ == null) {
          if (elementCase_ == 3) {
            elementCase_ = 0;
            element_ = null;
            onChanged();
          }
        } else {
          if (elementCase_ == 3) {
            elementCase_ = 0;
            element_ = null;
          }
          arrayValueBuilder_.clear();
        }
        return this;
      }
      /**
       * .io.arthas.api.ArrayValue arrayValue = 3;
       */
      public io.arthas.api.ArthasServices.ArrayValue.Builder getArrayValueBuilder() {
        return getArrayValueFieldBuilder().getBuilder();
      }
      /**
       * .io.arthas.api.ArrayValue arrayValue = 3;
       */
      public io.arthas.api.ArthasServices.ArrayValueOrBuilder getArrayValueOrBuilder() {
        if ((elementCase_ == 3) && (arrayValueBuilder_ != null)) {
          return arrayValueBuilder_.getMessageOrBuilder();
        } else {
          if (elementCase_ == 3) {
            return (io.arthas.api.ArthasServices.ArrayValue) element_;
          }
          return io.arthas.api.ArthasServices.ArrayValue.getDefaultInstance();
        }
      }
      /**
       * .io.arthas.api.ArrayValue arrayValue = 3;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          io.arthas.api.ArthasServices.ArrayValue, io.arthas.api.ArthasServices.ArrayValue.Builder, io.arthas.api.ArthasServices.ArrayValueOrBuilder> 
          getArrayValueFieldBuilder() {
        if (arrayValueBuilder_ == null) {
          if (!(elementCase_ == 3)) {
            element_ = io.arthas.api.ArthasServices.ArrayValue.getDefaultInstance();
          }
          arrayValueBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              io.arthas.api.ArthasServices.ArrayValue, io.arthas.api.ArthasServices.ArrayValue.Builder, io.arthas.api.ArthasServices.ArrayValueOrBuilder>(
                  (io.arthas.api.ArthasServices.ArrayValue) element_,
                  getParentForChildren(),
                  isClean());
          element_ = null;
        }
        elementCase_ = 3;
        onChanged();;
        return arrayValueBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          io.arthas.api.ArthasServices.NullValue, io.arthas.api.ArthasServices.NullValue.Builder, io.arthas.api.ArthasServices.NullValueOrBuilder> nullValueBuilder_;
      /**
       * .io.arthas.api.NullValue nullValue = 4;
       * @return Whether the nullValue field is set.
       */
      public boolean hasNullValue() {
        return elementCase_ == 4;
      }
      /**
       * .io.arthas.api.NullValue nullValue = 4;
       * @return The nullValue.
       */
      public io.arthas.api.ArthasServices.NullValue getNullValue() {
        if (nullValueBuilder_ == null) {
          if (elementCase_ == 4) {
            return (io.arthas.api.ArthasServices.NullValue) element_;
          }
          return io.arthas.api.ArthasServices.NullValue.getDefaultInstance();
        } else {
          if (elementCase_ == 4) {
            return nullValueBuilder_.getMessage();
          }
          return io.arthas.api.ArthasServices.NullValue.getDefaultInstance();
        }
      }
      /**
       * .io.arthas.api.NullValue nullValue = 4;
       */
      public Builder setNullValue(io.arthas.api.ArthasServices.NullValue value) {
        if (nullValueBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          element_ = value;
          onChanged();
        } else {
          nullValueBuilder_.setMessage(value);
        }
        elementCase_ = 4;
        return this;
      }
      /**
       * .io.arthas.api.NullValue nullValue = 4;
       */
      public Builder setNullValue(
          io.arthas.api.ArthasServices.NullValue.Builder builderForValue) {
        if (nullValueBuilder_ == null) {
          element_ = builderForValue.build();
          onChanged();
        } else {
          nullValueBuilder_.setMessage(builderForValue.build());
        }
        elementCase_ = 4;
        return this;
      }
      /**
       * .io.arthas.api.NullValue nullValue = 4;
       */
      public Builder mergeNullValue(io.arthas.api.ArthasServices.NullValue value) {
        if (nullValueBuilder_ == null) {
          if (elementCase_ == 4 &&
              element_ != io.arthas.api.ArthasServices.NullValue.getDefaultInstance()) {
            element_ = io.arthas.api.ArthasServices.NullValue.newBuilder((io.arthas.api.ArthasServices.NullValue) element_)
                .mergeFrom(value).buildPartial();
          } else {
            element_ = value;
          }
          onChanged();
        } else {
          if (elementCase_ == 4) {
            nullValueBuilder_.mergeFrom(value);
          }
          nullValueBuilder_.setMessage(value);
        }
        elementCase_ = 4;
        return this;
      }
      /**
       * .io.arthas.api.NullValue nullValue = 4;
       */
      public Builder clearNullValue() {
        if (nullValueBuilder_ == null) {
          if (elementCase_ == 4) {
            elementCase_ = 0;
            element_ = null;
            onChanged();
          }
        } else {
          if (elementCase_ == 4) {
            elementCase_ = 0;
            element_ = null;
          }
          nullValueBuilder_.clear();
        }
        return this;
      }
      /**
       * .io.arthas.api.NullValue nullValue = 4;
       */
      public io.arthas.api.ArthasServices.NullValue.Builder getNullValueBuilder() {
        return getNullValueFieldBuilder().getBuilder();
      }
      /**
       * .io.arthas.api.NullValue nullValue = 4;
       */
      public io.arthas.api.ArthasServices.NullValueOrBuilder getNullValueOrBuilder() {
        if ((elementCase_ == 4) && (nullValueBuilder_ != null)) {
          return nullValueBuilder_.getMessageOrBuilder();
        } else {
          if (elementCase_ == 4) {
            return (io.arthas.api.ArthasServices.NullValue) element_;
          }
          return io.arthas.api.ArthasServices.NullValue.getDefaultInstance();
        }
      }
      /**
       * .io.arthas.api.NullValue nullValue = 4;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          io.arthas.api.ArthasServices.NullValue, io.arthas.api.ArthasServices.NullValue.Builder, io.arthas.api.ArthasServices.NullValueOrBuilder> 
          getNullValueFieldBuilder() {
        if (nullValueBuilder_ == null) {
          if (!(elementCase_ == 4)) {
            element_ = io.arthas.api.ArthasServices.NullValue.getDefaultInstance();
          }
          nullValueBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              io.arthas.api.ArthasServices.NullValue, io.arthas.api.ArthasServices.NullValue.Builder, io.arthas.api.ArthasServices.NullValueOrBuilder>(
                  (io.arthas.api.ArthasServices.NullValue) element_,
                  getParentForChildren(),
                  isClean());
          element_ = null;
        }
        elementCase_ = 4;
        onChanged();;
        return nullValueBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          io.arthas.api.ArthasServices.UnexpandedObject, io.arthas.api.ArthasServices.UnexpandedObject.Builder, io.arthas.api.ArthasServices.UnexpandedObjectOrBuilder> unexpandedObjectBuilder_;
      /**
       * .io.arthas.api.UnexpandedObject unexpandedObject = 5;
       * @return Whether the unexpandedObject field is set.
       */
      public boolean hasUnexpandedObject() {
        return elementCase_ == 5;
      }
      /**
       * .io.arthas.api.UnexpandedObject unexpandedObject = 5;
       * @return The unexpandedObject.
       */
      public io.arthas.api.ArthasServices.UnexpandedObject getUnexpandedObject() {
        if (unexpandedObjectBuilder_ == null) {
          if (elementCase_ == 5) {
            return (io.arthas.api.ArthasServices.UnexpandedObject) element_;
          }
          return io.arthas.api.ArthasServices.UnexpandedObject.getDefaultInstance();
        } else {
          if (elementCase_ == 5) {
            return unexpandedObjectBuilder_.getMessage();
          }
          return io.arthas.api.ArthasServices.UnexpandedObject.getDefaultInstance();
        }
      }
      /**
       * .io.arthas.api.UnexpandedObject unexpandedObject = 5;
       */
      public Builder setUnexpandedObject(io.arthas.api.ArthasServices.UnexpandedObject value) {
        if (unexpandedObjectBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          element_ = value;
          onChanged();
        } else {
          unexpandedObjectBuilder_.setMessage(value);
        }
        elementCase_ = 5;
        return this;
      }
      /**
       * .io.arthas.api.UnexpandedObject unexpandedObject = 5;
       */
      public Builder setUnexpandedObject(
          io.arthas.api.ArthasServices.UnexpandedObject.Builder builderForValue) {
        if (unexpandedObjectBuilder_ == null) {
          element_ = builderForValue.build();
          onChanged();
        } else {
          unexpandedObjectBuilder_.setMessage(builderForValue.build());
        }
        elementCase_ = 5;
        return this;
      }
      /**
       * .io.arthas.api.UnexpandedObject unexpandedObject = 5;
       */
      public Builder mergeUnexpandedObject(io.arthas.api.ArthasServices.UnexpandedObject value) {
        if (unexpandedObjectBuilder_ == null) {
          if (elementCase_ == 5 &&
              element_ != io.arthas.api.ArthasServices.UnexpandedObject.getDefaultInstance()) {
            element_ = io.arthas.api.ArthasServices.UnexpandedObject.newBuilder((io.arthas.api.ArthasServices.UnexpandedObject) element_)
                .mergeFrom(value).buildPartial();
          } else {
            element_ = value;
          }
          onChanged();
        } else {
          if (elementCase_ == 5) {
            unexpandedObjectBuilder_.mergeFrom(value);
          }
          unexpandedObjectBuilder_.setMessage(value);
        }
        elementCase_ = 5;
        return this;
      }
      /**
       * .io.arthas.api.UnexpandedObject unexpandedObject = 5;
       */
      public Builder clearUnexpandedObject() {
        if (unexpandedObjectBuilder_ == null) {
          if (elementCase_ == 5) {
            elementCase_ = 0;
            element_ = null;
            onChanged();
          }
        } else {
          if (elementCase_ == 5) {
            elementCase_ = 0;
            element_ = null;
          }
          unexpandedObjectBuilder_.clear();
        }
        return this;
      }
      /**
       * .io.arthas.api.UnexpandedObject unexpandedObject = 5;
       */
      public io.arthas.api.ArthasServices.UnexpandedObject.Builder getUnexpandedObjectBuilder() {
        return getUnexpandedObjectFieldBuilder().getBuilder();
      }
      /**
       * .io.arthas.api.UnexpandedObject unexpandedObject = 5;
       */
      public io.arthas.api.ArthasServices.UnexpandedObjectOrBuilder getUnexpandedObjectOrBuilder() {
        if ((elementCase_ == 5) && (unexpandedObjectBuilder_ != null)) {
          return unexpandedObjectBuilder_.getMessageOrBuilder();
        } else {
          if (elementCase_ == 5) {
            return (io.arthas.api.ArthasServices.UnexpandedObject) element_;
          }
          return io.arthas.api.ArthasServices.UnexpandedObject.getDefaultInstance();
        }
      }
      /**
       * .io.arthas.api.UnexpandedObject unexpandedObject = 5;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          io.arthas.api.ArthasServices.UnexpandedObject, io.arthas.api.ArthasServices.UnexpandedObject.Builder, io.arthas.api.ArthasServices.UnexpandedObjectOrBuilder> 
          getUnexpandedObjectFieldBuilder() {
        if (unexpandedObjectBuilder_ == null) {
          if (!(elementCase_ == 5)) {
            element_ = io.arthas.api.ArthasServices.UnexpandedObject.getDefaultInstance();
          }
          unexpandedObjectBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              io.arthas.api.ArthasServices.UnexpandedObject, io.arthas.api.ArthasServices.UnexpandedObject.Builder, io.arthas.api.ArthasServices.UnexpandedObjectOrBuilder>(
                  (io.arthas.api.ArthasServices.UnexpandedObject) element_,
                  getParentForChildren(),
                  isClean());
          element_ = null;
        }
        elementCase_ = 5;
        onChanged();;
        return unexpandedObjectBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:io.arthas.api.ArrayElement)
    }

    // @@protoc_insertion_point(class_scope:io.arthas.api.ArrayElement)
    private static final io.arthas.api.ArthasServices.ArrayElement DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.arthas.api.ArthasServices.ArrayElement();
    }

    public static io.arthas.api.ArthasServices.ArrayElement getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public ArrayElement parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new ArrayElement(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.arthas.api.ArthasServices.ArrayElement getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ArrayValueOrBuilder extends
      // @@protoc_insertion_point(interface_extends:io.arthas.api.ArrayValue)
      com.google.protobuf.MessageOrBuilder {

    /**
     * string className = 1;
     * @return The className.
     */
    java.lang.String getClassName();
    /**
     * string className = 1;
     * @return The bytes for className.
     */
    com.google.protobuf.ByteString
        getClassNameBytes();

    /**
     * repeated .io.arthas.api.ArrayElement elements = 2;
     */
    java.util.List 
        getElementsList();
    /**
     * repeated .io.arthas.api.ArrayElement elements = 2;
     */
    io.arthas.api.ArthasServices.ArrayElement getElements(int index);
    /**
     * repeated .io.arthas.api.ArrayElement elements = 2;
     */
    int getElementsCount();
    /**
     * repeated .io.arthas.api.ArrayElement elements = 2;
     */
    java.util.List 
        getElementsOrBuilderList();
    /**
     * repeated .io.arthas.api.ArrayElement elements = 2;
     */
    io.arthas.api.ArthasServices.ArrayElementOrBuilder getElementsOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code io.arthas.api.ArrayValue}
   */
  public  static final class ArrayValue extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:io.arthas.api.ArrayValue)
      ArrayValueOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ArrayValue.newBuilder() to construct.
    private ArrayValue(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private ArrayValue() {
      className_ = "";
      elements_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ArrayValue();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private ArrayValue(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

              className_ = s;
              break;
            }
            case 18: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                elements_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000001;
              }
              elements_.add(
                  input.readMessage(io.arthas.api.ArthasServices.ArrayElement.parser(), extensionRegistry));
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              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) != 0)) {
          elements_ = java.util.Collections.unmodifiableList(elements_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.arthas.api.ArthasServices.internal_static_io_arthas_api_ArrayValue_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.arthas.api.ArthasServices.internal_static_io_arthas_api_ArrayValue_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.arthas.api.ArthasServices.ArrayValue.class, io.arthas.api.ArthasServices.ArrayValue.Builder.class);
    }

    public static final int CLASSNAME_FIELD_NUMBER = 1;
    private volatile java.lang.Object className_;
    /**
     * string className = 1;
     * @return The className.
     */
    public java.lang.String getClassName() {
      java.lang.Object ref = className_;
      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();
        className_ = s;
        return s;
      }
    }
    /**
     * string className = 1;
     * @return The bytes for className.
     */
    public com.google.protobuf.ByteString
        getClassNameBytes() {
      java.lang.Object ref = className_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        className_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int ELEMENTS_FIELD_NUMBER = 2;
    private java.util.List elements_;
    /**
     * repeated .io.arthas.api.ArrayElement elements = 2;
     */
    public java.util.List getElementsList() {
      return elements_;
    }
    /**
     * repeated .io.arthas.api.ArrayElement elements = 2;
     */
    public java.util.List 
        getElementsOrBuilderList() {
      return elements_;
    }
    /**
     * repeated .io.arthas.api.ArrayElement elements = 2;
     */
    public int getElementsCount() {
      return elements_.size();
    }
    /**
     * repeated .io.arthas.api.ArrayElement elements = 2;
     */
    public io.arthas.api.ArthasServices.ArrayElement getElements(int index) {
      return elements_.get(index);
    }
    /**
     * repeated .io.arthas.api.ArrayElement elements = 2;
     */
    public io.arthas.api.ArthasServices.ArrayElementOrBuilder getElementsOrBuilder(
        int index) {
      return elements_.get(index);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getClassNameBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, className_);
      }
      for (int i = 0; i < elements_.size(); i++) {
        output.writeMessage(2, elements_.get(i));
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!getClassNameBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, className_);
      }
      for (int i = 0; i < elements_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, elements_.get(i));
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof io.arthas.api.ArthasServices.ArrayValue)) {
        return super.equals(obj);
      }
      io.arthas.api.ArthasServices.ArrayValue other = (io.arthas.api.ArthasServices.ArrayValue) obj;

      if (!getClassName()
          .equals(other.getClassName())) return false;
      if (!getElementsList()
          .equals(other.getElementsList())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + CLASSNAME_FIELD_NUMBER;
      hash = (53 * hash) + getClassName().hashCode();
      if (getElementsCount() > 0) {
        hash = (37 * hash) + ELEMENTS_FIELD_NUMBER;
        hash = (53 * hash) + getElementsList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.arthas.api.ArthasServices.ArrayValue parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.arthas.api.ArthasServices.ArrayValue parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.arthas.api.ArthasServices.ArrayValue parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.arthas.api.ArthasServices.ArrayValue parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.arthas.api.ArthasServices.ArrayValue parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.arthas.api.ArthasServices.ArrayValue parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.arthas.api.ArthasServices.ArrayValue parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.arthas.api.ArthasServices.ArrayValue 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 io.arthas.api.ArthasServices.ArrayValue parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static io.arthas.api.ArthasServices.ArrayValue 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 io.arthas.api.ArthasServices.ArrayValue parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.arthas.api.ArthasServices.ArrayValue parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(io.arthas.api.ArthasServices.ArrayValue prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    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 io.arthas.api.ArrayValue}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:io.arthas.api.ArrayValue)
        io.arthas.api.ArthasServices.ArrayValueOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.arthas.api.ArthasServices.internal_static_io_arthas_api_ArrayValue_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.arthas.api.ArthasServices.internal_static_io_arthas_api_ArrayValue_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.arthas.api.ArthasServices.ArrayValue.class, io.arthas.api.ArthasServices.ArrayValue.Builder.class);
      }

      // Construct using io.arthas.api.ArthasServices.ArrayValue.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getElementsFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        className_ = "";

        if (elementsBuilder_ == null) {
          elements_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          elementsBuilder_.clear();
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.arthas.api.ArthasServices.internal_static_io_arthas_api_ArrayValue_descriptor;
      }

      @java.lang.Override
      public io.arthas.api.ArthasServices.ArrayValue getDefaultInstanceForType() {
        return io.arthas.api.ArthasServices.ArrayValue.getDefaultInstance();
      }

      @java.lang.Override
      public io.arthas.api.ArthasServices.ArrayValue build() {
        io.arthas.api.ArthasServices.ArrayValue result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.arthas.api.ArthasServices.ArrayValue buildPartial() {
        io.arthas.api.ArthasServices.ArrayValue result = new io.arthas.api.ArthasServices.ArrayValue(this);
        int from_bitField0_ = bitField0_;
        result.className_ = className_;
        if (elementsBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            elements_ = java.util.Collections.unmodifiableList(elements_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.elements_ = elements_;
        } else {
          result.elements_ = elementsBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.arthas.api.ArthasServices.ArrayValue) {
          return mergeFrom((io.arthas.api.ArthasServices.ArrayValue)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.arthas.api.ArthasServices.ArrayValue other) {
        if (other == io.arthas.api.ArthasServices.ArrayValue.getDefaultInstance()) return this;
        if (!other.getClassName().isEmpty()) {
          className_ = other.className_;
          onChanged();
        }
        if (elementsBuilder_ == null) {
          if (!other.elements_.isEmpty()) {
            if (elements_.isEmpty()) {
              elements_ = other.elements_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureElementsIsMutable();
              elements_.addAll(other.elements_);
            }
            onChanged();
          }
        } else {
          if (!other.elements_.isEmpty()) {
            if (elementsBuilder_.isEmpty()) {
              elementsBuilder_.dispose();
              elementsBuilder_ = null;
              elements_ = other.elements_;
              bitField0_ = (bitField0_ & ~0x00000001);
              elementsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getElementsFieldBuilder() : null;
            } else {
              elementsBuilder_.addAllMessages(other.elements_);
            }
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        io.arthas.api.ArthasServices.ArrayValue parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (io.arthas.api.ArthasServices.ArrayValue) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.lang.Object className_ = "";
      /**
       * string className = 1;
       * @return The className.
       */
      public java.lang.String getClassName() {
        java.lang.Object ref = className_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          className_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string className = 1;
       * @return The bytes for className.
       */
      public com.google.protobuf.ByteString
          getClassNameBytes() {
        java.lang.Object ref = className_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          className_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string className = 1;
       * @param value The className to set.
       * @return This builder for chaining.
       */
      public Builder setClassName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        className_ = value;
        onChanged();
        return this;
      }
      /**
       * string className = 1;
       * @return This builder for chaining.
       */
      public Builder clearClassName() {
        
        className_ = getDefaultInstance().getClassName();
        onChanged();
        return this;
      }
      /**
       * string className = 1;
       * @param value The bytes for className to set.
       * @return This builder for chaining.
       */
      public Builder setClassNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        className_ = value;
        onChanged();
        return this;
      }

      private java.util.List elements_ =
        java.util.Collections.emptyList();
      private void ensureElementsIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          elements_ = new java.util.ArrayList(elements_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          io.arthas.api.ArthasServices.ArrayElement, io.arthas.api.ArthasServices.ArrayElement.Builder, io.arthas.api.ArthasServices.ArrayElementOrBuilder> elementsBuilder_;

      /**
       * repeated .io.arthas.api.ArrayElement elements = 2;
       */
      public java.util.List getElementsList() {
        if (elementsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(elements_);
        } else {
          return elementsBuilder_.getMessageList();
        }
      }
      /**
       * repeated .io.arthas.api.ArrayElement elements = 2;
       */
      public int getElementsCount() {
        if (elementsBuilder_ == null) {
          return elements_.size();
        } else {
          return elementsBuilder_.getCount();
        }
      }
      /**
       * repeated .io.arthas.api.ArrayElement elements = 2;
       */
      public io.arthas.api.ArthasServices.ArrayElement getElements(int index) {
        if (elementsBuilder_ == null) {
          return elements_.get(index);
        } else {
          return elementsBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .io.arthas.api.ArrayElement elements = 2;
       */
      public Builder setElements(
          int index, io.arthas.api.ArthasServices.ArrayElement value) {
        if (elementsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureElementsIsMutable();
          elements_.set(index, value);
          onChanged();
        } else {
          elementsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .io.arthas.api.ArrayElement elements = 2;
       */
      public Builder setElements(
          int index, io.arthas.api.ArthasServices.ArrayElement.Builder builderForValue) {
        if (elementsBuilder_ == null) {
          ensureElementsIsMutable();
          elements_.set(index, builderForValue.build());
          onChanged();
        } else {
          elementsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .io.arthas.api.ArrayElement elements = 2;
       */
      public Builder addElements(io.arthas.api.ArthasServices.ArrayElement value) {
        if (elementsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureElementsIsMutable();
          elements_.add(value);
          onChanged();
        } else {
          elementsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .io.arthas.api.ArrayElement elements = 2;
       */
      public Builder addElements(
          int index, io.arthas.api.ArthasServices.ArrayElement value) {
        if (elementsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureElementsIsMutable();
          elements_.add(index, value);
          onChanged();
        } else {
          elementsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .io.arthas.api.ArrayElement elements = 2;
       */
      public Builder addElements(
          io.arthas.api.ArthasServices.ArrayElement.Builder builderForValue) {
        if (elementsBuilder_ == null) {
          ensureElementsIsMutable();
          elements_.add(builderForValue.build());
          onChanged();
        } else {
          elementsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .io.arthas.api.ArrayElement elements = 2;
       */
      public Builder addElements(
          int index, io.arthas.api.ArthasServices.ArrayElement.Builder builderForValue) {
        if (elementsBuilder_ == null) {
          ensureElementsIsMutable();
          elements_.add(index, builderForValue.build());
          onChanged();
        } else {
          elementsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .io.arthas.api.ArrayElement elements = 2;
       */
      public Builder addAllElements(
          java.lang.Iterable values) {
        if (elementsBuilder_ == null) {
          ensureElementsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, elements_);
          onChanged();
        } else {
          elementsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .io.arthas.api.ArrayElement elements = 2;
       */
      public Builder clearElements() {
        if (elementsBuilder_ == null) {
          elements_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          elementsBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .io.arthas.api.ArrayElement elements = 2;
       */
      public Builder removeElements(int index) {
        if (elementsBuilder_ == null) {
          ensureElementsIsMutable();
          elements_.remove(index);
          onChanged();
        } else {
          elementsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .io.arthas.api.ArrayElement elements = 2;
       */
      public io.arthas.api.ArthasServices.ArrayElement.Builder getElementsBuilder(
          int index) {
        return getElementsFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .io.arthas.api.ArrayElement elements = 2;
       */
      public io.arthas.api.ArthasServices.ArrayElementOrBuilder getElementsOrBuilder(
          int index) {
        if (elementsBuilder_ == null) {
          return elements_.get(index);  } else {
          return elementsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .io.arthas.api.ArrayElement elements = 2;
       */
      public java.util.List 
           getElementsOrBuilderList() {
        if (elementsBuilder_ != null) {
          return elementsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(elements_);
        }
      }
      /**
       * repeated .io.arthas.api.ArrayElement elements = 2;
       */
      public io.arthas.api.ArthasServices.ArrayElement.Builder addElementsBuilder() {
        return getElementsFieldBuilder().addBuilder(
            io.arthas.api.ArthasServices.ArrayElement.getDefaultInstance());
      }
      /**
       * repeated .io.arthas.api.ArrayElement elements = 2;
       */
      public io.arthas.api.ArthasServices.ArrayElement.Builder addElementsBuilder(
          int index) {
        return getElementsFieldBuilder().addBuilder(
            index, io.arthas.api.ArthasServices.ArrayElement.getDefaultInstance());
      }
      /**
       * repeated .io.arthas.api.ArrayElement elements = 2;
       */
      public java.util.List 
           getElementsBuilderList() {
        return getElementsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          io.arthas.api.ArthasServices.ArrayElement, io.arthas.api.ArthasServices.ArrayElement.Builder, io.arthas.api.ArthasServices.ArrayElementOrBuilder> 
          getElementsFieldBuilder() {
        if (elementsBuilder_ == null) {
          elementsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              io.arthas.api.ArthasServices.ArrayElement, io.arthas.api.ArthasServices.ArrayElement.Builder, io.arthas.api.ArthasServices.ArrayElementOrBuilder>(
                  elements_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          elements_ = null;
        }
        return elementsBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:io.arthas.api.ArrayValue)
    }

    // @@protoc_insertion_point(class_scope:io.arthas.api.ArrayValue)
    private static final io.arthas.api.ArthasServices.ArrayValue DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.arthas.api.ArthasServices.ArrayValue();
    }

    public static io.arthas.api.ArthasServices.ArrayValue getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public ArrayValue parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new ArrayValue(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.arthas.api.ArthasServices.ArrayValue getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface NullValueOrBuilder extends
      // @@protoc_insertion_point(interface_extends:io.arthas.api.NullValue)
      com.google.protobuf.MessageOrBuilder {

    /**
     * string className = 1;
     * @return The className.
     */
    java.lang.String getClassName();
    /**
     * string className = 1;
     * @return The bytes for className.
     */
    com.google.protobuf.ByteString
        getClassNameBytes();
  }
  /**
   * Protobuf type {@code io.arthas.api.NullValue}
   */
  public  static final class NullValue extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:io.arthas.api.NullValue)
      NullValueOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use NullValue.newBuilder() to construct.
    private NullValue(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private NullValue() {
      className_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new NullValue();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private NullValue(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

              className_ = s;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              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 io.arthas.api.ArthasServices.internal_static_io_arthas_api_NullValue_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.arthas.api.ArthasServices.internal_static_io_arthas_api_NullValue_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.arthas.api.ArthasServices.NullValue.class, io.arthas.api.ArthasServices.NullValue.Builder.class);
    }

    public static final int CLASSNAME_FIELD_NUMBER = 1;
    private volatile java.lang.Object className_;
    /**
     * string className = 1;
     * @return The className.
     */
    public java.lang.String getClassName() {
      java.lang.Object ref = className_;
      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();
        className_ = s;
        return s;
      }
    }
    /**
     * string className = 1;
     * @return The bytes for className.
     */
    public com.google.protobuf.ByteString
        getClassNameBytes() {
      java.lang.Object ref = className_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        className_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getClassNameBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, className_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!getClassNameBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, className_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof io.arthas.api.ArthasServices.NullValue)) {
        return super.equals(obj);
      }
      io.arthas.api.ArthasServices.NullValue other = (io.arthas.api.ArthasServices.NullValue) obj;

      if (!getClassName()
          .equals(other.getClassName())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + CLASSNAME_FIELD_NUMBER;
      hash = (53 * hash) + getClassName().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.arthas.api.ArthasServices.NullValue parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.arthas.api.ArthasServices.NullValue parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.arthas.api.ArthasServices.NullValue parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.arthas.api.ArthasServices.NullValue parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.arthas.api.ArthasServices.NullValue parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.arthas.api.ArthasServices.NullValue parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.arthas.api.ArthasServices.NullValue parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.arthas.api.ArthasServices.NullValue 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 io.arthas.api.ArthasServices.NullValue parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static io.arthas.api.ArthasServices.NullValue 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 io.arthas.api.ArthasServices.NullValue parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.arthas.api.ArthasServices.NullValue parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(io.arthas.api.ArthasServices.NullValue prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    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 io.arthas.api.NullValue}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:io.arthas.api.NullValue)
        io.arthas.api.ArthasServices.NullValueOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.arthas.api.ArthasServices.internal_static_io_arthas_api_NullValue_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.arthas.api.ArthasServices.internal_static_io_arthas_api_NullValue_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.arthas.api.ArthasServices.NullValue.class, io.arthas.api.ArthasServices.NullValue.Builder.class);
      }

      // Construct using io.arthas.api.ArthasServices.NullValue.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        className_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.arthas.api.ArthasServices.internal_static_io_arthas_api_NullValue_descriptor;
      }

      @java.lang.Override
      public io.arthas.api.ArthasServices.NullValue getDefaultInstanceForType() {
        return io.arthas.api.ArthasServices.NullValue.getDefaultInstance();
      }

      @java.lang.Override
      public io.arthas.api.ArthasServices.NullValue build() {
        io.arthas.api.ArthasServices.NullValue result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.arthas.api.ArthasServices.NullValue buildPartial() {
        io.arthas.api.ArthasServices.NullValue result = new io.arthas.api.ArthasServices.NullValue(this);
        result.className_ = className_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.arthas.api.ArthasServices.NullValue) {
          return mergeFrom((io.arthas.api.ArthasServices.NullValue)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.arthas.api.ArthasServices.NullValue other) {
        if (other == io.arthas.api.ArthasServices.NullValue.getDefaultInstance()) return this;
        if (!other.getClassName().isEmpty()) {
          className_ = other.className_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        io.arthas.api.ArthasServices.NullValue parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (io.arthas.api.ArthasServices.NullValue) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object className_ = "";
      /**
       * string className = 1;
       * @return The className.
       */
      public java.lang.String getClassName() {
        java.lang.Object ref = className_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          className_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string className = 1;
       * @return The bytes for className.
       */
      public com.google.protobuf.ByteString
          getClassNameBytes() {
        java.lang.Object ref = className_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          className_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string className = 1;
       * @param value The className to set.
       * @return This builder for chaining.
       */
      public Builder setClassName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        className_ = value;
        onChanged();
        return this;
      }
      /**
       * string className = 1;
       * @return This builder for chaining.
       */
      public Builder clearClassName() {
        
        className_ = getDefaultInstance().getClassName();
        onChanged();
        return this;
      }
      /**
       * string className = 1;
       * @param value The bytes for className to set.
       * @return This builder for chaining.
       */
      public Builder setClassNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        className_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:io.arthas.api.NullValue)
    }

    // @@protoc_insertion_point(class_scope:io.arthas.api.NullValue)
    private static final io.arthas.api.ArthasServices.NullValue DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.arthas.api.ArthasServices.NullValue();
    }

    public static io.arthas.api.ArthasServices.NullValue getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public NullValue parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new NullValue(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.arthas.api.ArthasServices.NullValue getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface UnexpandedObjectOrBuilder extends
      // @@protoc_insertion_point(interface_extends:io.arthas.api.UnexpandedObject)
      com.google.protobuf.MessageOrBuilder {

    /**
     * string className = 1;
     * @return The className.
     */
    java.lang.String getClassName();
    /**
     * string className = 1;
     * @return The bytes for className.
     */
    com.google.protobuf.ByteString
        getClassNameBytes();
  }
  /**
   * Protobuf type {@code io.arthas.api.UnexpandedObject}
   */
  public  static final class UnexpandedObject extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:io.arthas.api.UnexpandedObject)
      UnexpandedObjectOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use UnexpandedObject.newBuilder() to construct.
    private UnexpandedObject(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private UnexpandedObject() {
      className_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new UnexpandedObject();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private UnexpandedObject(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

              className_ = s;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              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 io.arthas.api.ArthasServices.internal_static_io_arthas_api_UnexpandedObject_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.arthas.api.ArthasServices.internal_static_io_arthas_api_UnexpandedObject_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.arthas.api.ArthasServices.UnexpandedObject.class, io.arthas.api.ArthasServices.UnexpandedObject.Builder.class);
    }

    public static final int CLASSNAME_FIELD_NUMBER = 1;
    private volatile java.lang.Object className_;
    /**
     * string className = 1;
     * @return The className.
     */
    public java.lang.String getClassName() {
      java.lang.Object ref = className_;
      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();
        className_ = s;
        return s;
      }
    }
    /**
     * string className = 1;
     * @return The bytes for className.
     */
    public com.google.protobuf.ByteString
        getClassNameBytes() {
      java.lang.Object ref = className_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        className_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getClassNameBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, className_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!getClassNameBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, className_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof io.arthas.api.ArthasServices.UnexpandedObject)) {
        return super.equals(obj);
      }
      io.arthas.api.ArthasServices.UnexpandedObject other = (io.arthas.api.ArthasServices.UnexpandedObject) obj;

      if (!getClassName()
          .equals(other.getClassName())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + CLASSNAME_FIELD_NUMBER;
      hash = (53 * hash) + getClassName().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.arthas.api.ArthasServices.UnexpandedObject parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.arthas.api.ArthasServices.UnexpandedObject parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.arthas.api.ArthasServices.UnexpandedObject parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.arthas.api.ArthasServices.UnexpandedObject parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.arthas.api.ArthasServices.UnexpandedObject parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.arthas.api.ArthasServices.UnexpandedObject parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.arthas.api.ArthasServices.UnexpandedObject parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.arthas.api.ArthasServices.UnexpandedObject 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 io.arthas.api.ArthasServices.UnexpandedObject parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static io.arthas.api.ArthasServices.UnexpandedObject 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 io.arthas.api.ArthasServices.UnexpandedObject parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.arthas.api.ArthasServices.UnexpandedObject parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(io.arthas.api.ArthasServices.UnexpandedObject prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    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 io.arthas.api.UnexpandedObject}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:io.arthas.api.UnexpandedObject)
        io.arthas.api.ArthasServices.UnexpandedObjectOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.arthas.api.ArthasServices.internal_static_io_arthas_api_UnexpandedObject_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.arthas.api.ArthasServices.internal_static_io_arthas_api_UnexpandedObject_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.arthas.api.ArthasServices.UnexpandedObject.class, io.arthas.api.ArthasServices.UnexpandedObject.Builder.class);
      }

      // Construct using io.arthas.api.ArthasServices.UnexpandedObject.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        className_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.arthas.api.ArthasServices.internal_static_io_arthas_api_UnexpandedObject_descriptor;
      }

      @java.lang.Override
      public io.arthas.api.ArthasServices.UnexpandedObject getDefaultInstanceForType() {
        return io.arthas.api.ArthasServices.UnexpandedObject.getDefaultInstance();
      }

      @java.lang.Override
      public io.arthas.api.ArthasServices.UnexpandedObject build() {
        io.arthas.api.ArthasServices.UnexpandedObject result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.arthas.api.ArthasServices.UnexpandedObject buildPartial() {
        io.arthas.api.ArthasServices.UnexpandedObject result = new io.arthas.api.ArthasServices.UnexpandedObject(this);
        result.className_ = className_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.arthas.api.ArthasServices.UnexpandedObject) {
          return mergeFrom((io.arthas.api.ArthasServices.UnexpandedObject)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.arthas.api.ArthasServices.UnexpandedObject other) {
        if (other == io.arthas.api.ArthasServices.UnexpandedObject.getDefaultInstance()) return this;
        if (!other.getClassName().isEmpty()) {
          className_ = other.className_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        io.arthas.api.ArthasServices.UnexpandedObject parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (io.arthas.api.ArthasServices.UnexpandedObject) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object className_ = "";
      /**
       * string className = 1;
       * @return The className.
       */
      public java.lang.String getClassName() {
        java.lang.Object ref = className_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          className_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string className = 1;
       * @return The bytes for className.
       */
      public com.google.protobuf.ByteString
          getClassNameBytes() {
        java.lang.Object ref = className_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          className_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string className = 1;
       * @param value The className to set.
       * @return This builder for chaining.
       */
      public Builder setClassName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        className_ = value;
        onChanged();
        return this;
      }
      /**
       * string className = 1;
       * @return This builder for chaining.
       */
      public Builder clearClassName() {
        
        className_ = getDefaultInstance().getClassName();
        onChanged();
        return this;
      }
      /**
       * string className = 1;
       * @param value The bytes for className to set.
       * @return This builder for chaining.
       */
      public Builder setClassNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        className_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:io.arthas.api.UnexpandedObject)
    }

    // @@protoc_insertion_point(class_scope:io.arthas.api.UnexpandedObject)
    private static final io.arthas.api.ArthasServices.UnexpandedObject DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.arthas.api.ArthasServices.UnexpandedObject();
    }

    public static io.arthas.api.ArthasServices.UnexpandedObject getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public UnexpandedObject parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new UnexpandedObject(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.arthas.api.ArthasServices.UnexpandedObject getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface CollectionValueOrBuilder extends
      // @@protoc_insertion_point(interface_extends:io.arthas.api.CollectionValue)
      com.google.protobuf.MessageOrBuilder {

    /**
     * string className = 1;
     * @return The className.
     */
    java.lang.String getClassName();
    /**
     * string className = 1;
     * @return The bytes for className.
     */
    com.google.protobuf.ByteString
        getClassNameBytes();

    /**
     * repeated .io.arthas.api.JavaObject elements = 2;
     */
    java.util.List 
        getElementsList();
    /**
     * repeated .io.arthas.api.JavaObject elements = 2;
     */
    io.arthas.api.ArthasServices.JavaObject getElements(int index);
    /**
     * repeated .io.arthas.api.JavaObject elements = 2;
     */
    int getElementsCount();
    /**
     * repeated .io.arthas.api.JavaObject elements = 2;
     */
    java.util.List 
        getElementsOrBuilderList();
    /**
     * repeated .io.arthas.api.JavaObject elements = 2;
     */
    io.arthas.api.ArthasServices.JavaObjectOrBuilder getElementsOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code io.arthas.api.CollectionValue}
   */
  public  static final class CollectionValue extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:io.arthas.api.CollectionValue)
      CollectionValueOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use CollectionValue.newBuilder() to construct.
    private CollectionValue(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private CollectionValue() {
      className_ = "";
      elements_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new CollectionValue();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private CollectionValue(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

              className_ = s;
              break;
            }
            case 18: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                elements_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000001;
              }
              elements_.add(
                  input.readMessage(io.arthas.api.ArthasServices.JavaObject.parser(), extensionRegistry));
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              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) != 0)) {
          elements_ = java.util.Collections.unmodifiableList(elements_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.arthas.api.ArthasServices.internal_static_io_arthas_api_CollectionValue_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.arthas.api.ArthasServices.internal_static_io_arthas_api_CollectionValue_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.arthas.api.ArthasServices.CollectionValue.class, io.arthas.api.ArthasServices.CollectionValue.Builder.class);
    }

    public static final int CLASSNAME_FIELD_NUMBER = 1;
    private volatile java.lang.Object className_;
    /**
     * string className = 1;
     * @return The className.
     */
    public java.lang.String getClassName() {
      java.lang.Object ref = className_;
      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();
        className_ = s;
        return s;
      }
    }
    /**
     * string className = 1;
     * @return The bytes for className.
     */
    public com.google.protobuf.ByteString
        getClassNameBytes() {
      java.lang.Object ref = className_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        className_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int ELEMENTS_FIELD_NUMBER = 2;
    private java.util.List elements_;
    /**
     * repeated .io.arthas.api.JavaObject elements = 2;
     */
    public java.util.List getElementsList() {
      return elements_;
    }
    /**
     * repeated .io.arthas.api.JavaObject elements = 2;
     */
    public java.util.List 
        getElementsOrBuilderList() {
      return elements_;
    }
    /**
     * repeated .io.arthas.api.JavaObject elements = 2;
     */
    public int getElementsCount() {
      return elements_.size();
    }
    /**
     * repeated .io.arthas.api.JavaObject elements = 2;
     */
    public io.arthas.api.ArthasServices.JavaObject getElements(int index) {
      return elements_.get(index);
    }
    /**
     * repeated .io.arthas.api.JavaObject elements = 2;
     */
    public io.arthas.api.ArthasServices.JavaObjectOrBuilder getElementsOrBuilder(
        int index) {
      return elements_.get(index);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getClassNameBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, className_);
      }
      for (int i = 0; i < elements_.size(); i++) {
        output.writeMessage(2, elements_.get(i));
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!getClassNameBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, className_);
      }
      for (int i = 0; i < elements_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, elements_.get(i));
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof io.arthas.api.ArthasServices.CollectionValue)) {
        return super.equals(obj);
      }
      io.arthas.api.ArthasServices.CollectionValue other = (io.arthas.api.ArthasServices.CollectionValue) obj;

      if (!getClassName()
          .equals(other.getClassName())) return false;
      if (!getElementsList()
          .equals(other.getElementsList())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + CLASSNAME_FIELD_NUMBER;
      hash = (53 * hash) + getClassName().hashCode();
      if (getElementsCount() > 0) {
        hash = (37 * hash) + ELEMENTS_FIELD_NUMBER;
        hash = (53 * hash) + getElementsList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.arthas.api.ArthasServices.CollectionValue parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.arthas.api.ArthasServices.CollectionValue parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.arthas.api.ArthasServices.CollectionValue parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.arthas.api.ArthasServices.CollectionValue parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.arthas.api.ArthasServices.CollectionValue parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.arthas.api.ArthasServices.CollectionValue parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.arthas.api.ArthasServices.CollectionValue parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.arthas.api.ArthasServices.CollectionValue 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 io.arthas.api.ArthasServices.CollectionValue parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static io.arthas.api.ArthasServices.CollectionValue 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 io.arthas.api.ArthasServices.CollectionValue parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.arthas.api.ArthasServices.CollectionValue parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(io.arthas.api.ArthasServices.CollectionValue prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    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 io.arthas.api.CollectionValue}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:io.arthas.api.CollectionValue)
        io.arthas.api.ArthasServices.CollectionValueOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.arthas.api.ArthasServices.internal_static_io_arthas_api_CollectionValue_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.arthas.api.ArthasServices.internal_static_io_arthas_api_CollectionValue_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.arthas.api.ArthasServices.CollectionValue.class, io.arthas.api.ArthasServices.CollectionValue.Builder.class);
      }

      // Construct using io.arthas.api.ArthasServices.CollectionValue.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getElementsFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        className_ = "";

        if (elementsBuilder_ == null) {
          elements_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          elementsBuilder_.clear();
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.arthas.api.ArthasServices.internal_static_io_arthas_api_CollectionValue_descriptor;
      }

      @java.lang.Override
      public io.arthas.api.ArthasServices.CollectionValue getDefaultInstanceForType() {
        return io.arthas.api.ArthasServices.CollectionValue.getDefaultInstance();
      }

      @java.lang.Override
      public io.arthas.api.ArthasServices.CollectionValue build() {
        io.arthas.api.ArthasServices.CollectionValue result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.arthas.api.ArthasServices.CollectionValue buildPartial() {
        io.arthas.api.ArthasServices.CollectionValue result = new io.arthas.api.ArthasServices.CollectionValue(this);
        int from_bitField0_ = bitField0_;
        result.className_ = className_;
        if (elementsBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            elements_ = java.util.Collections.unmodifiableList(elements_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.elements_ = elements_;
        } else {
          result.elements_ = elementsBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.arthas.api.ArthasServices.CollectionValue) {
          return mergeFrom((io.arthas.api.ArthasServices.CollectionValue)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.arthas.api.ArthasServices.CollectionValue other) {
        if (other == io.arthas.api.ArthasServices.CollectionValue.getDefaultInstance()) return this;
        if (!other.getClassName().isEmpty()) {
          className_ = other.className_;
          onChanged();
        }
        if (elementsBuilder_ == null) {
          if (!other.elements_.isEmpty()) {
            if (elements_.isEmpty()) {
              elements_ = other.elements_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureElementsIsMutable();
              elements_.addAll(other.elements_);
            }
            onChanged();
          }
        } else {
          if (!other.elements_.isEmpty()) {
            if (elementsBuilder_.isEmpty()) {
              elementsBuilder_.dispose();
              elementsBuilder_ = null;
              elements_ = other.elements_;
              bitField0_ = (bitField0_ & ~0x00000001);
              elementsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getElementsFieldBuilder() : null;
            } else {
              elementsBuilder_.addAllMessages(other.elements_);
            }
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        io.arthas.api.ArthasServices.CollectionValue parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (io.arthas.api.ArthasServices.CollectionValue) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.lang.Object className_ = "";
      /**
       * string className = 1;
       * @return The className.
       */
      public java.lang.String getClassName() {
        java.lang.Object ref = className_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          className_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string className = 1;
       * @return The bytes for className.
       */
      public com.google.protobuf.ByteString
          getClassNameBytes() {
        java.lang.Object ref = className_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          className_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string className = 1;
       * @param value The className to set.
       * @return This builder for chaining.
       */
      public Builder setClassName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        className_ = value;
        onChanged();
        return this;
      }
      /**
       * string className = 1;
       * @return This builder for chaining.
       */
      public Builder clearClassName() {
        
        className_ = getDefaultInstance().getClassName();
        onChanged();
        return this;
      }
      /**
       * string className = 1;
       * @param value The bytes for className to set.
       * @return This builder for chaining.
       */
      public Builder setClassNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        className_ = value;
        onChanged();
        return this;
      }

      private java.util.List elements_ =
        java.util.Collections.emptyList();
      private void ensureElementsIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          elements_ = new java.util.ArrayList(elements_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          io.arthas.api.ArthasServices.JavaObject, io.arthas.api.ArthasServices.JavaObject.Builder, io.arthas.api.ArthasServices.JavaObjectOrBuilder> elementsBuilder_;

      /**
       * repeated .io.arthas.api.JavaObject elements = 2;
       */
      public java.util.List getElementsList() {
        if (elementsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(elements_);
        } else {
          return elementsBuilder_.getMessageList();
        }
      }
      /**
       * repeated .io.arthas.api.JavaObject elements = 2;
       */
      public int getElementsCount() {
        if (elementsBuilder_ == null) {
          return elements_.size();
        } else {
          return elementsBuilder_.getCount();
        }
      }
      /**
       * repeated .io.arthas.api.JavaObject elements = 2;
       */
      public io.arthas.api.ArthasServices.JavaObject getElements(int index) {
        if (elementsBuilder_ == null) {
          return elements_.get(index);
        } else {
          return elementsBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .io.arthas.api.JavaObject elements = 2;
       */
      public Builder setElements(
          int index, io.arthas.api.ArthasServices.JavaObject value) {
        if (elementsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureElementsIsMutable();
          elements_.set(index, value);
          onChanged();
        } else {
          elementsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .io.arthas.api.JavaObject elements = 2;
       */
      public Builder setElements(
          int index, io.arthas.api.ArthasServices.JavaObject.Builder builderForValue) {
        if (elementsBuilder_ == null) {
          ensureElementsIsMutable();
          elements_.set(index, builderForValue.build());
          onChanged();
        } else {
          elementsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .io.arthas.api.JavaObject elements = 2;
       */
      public Builder addElements(io.arthas.api.ArthasServices.JavaObject value) {
        if (elementsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureElementsIsMutable();
          elements_.add(value);
          onChanged();
        } else {
          elementsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .io.arthas.api.JavaObject elements = 2;
       */
      public Builder addElements(
          int index, io.arthas.api.ArthasServices.JavaObject value) {
        if (elementsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureElementsIsMutable();
          elements_.add(index, value);
          onChanged();
        } else {
          elementsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .io.arthas.api.JavaObject elements = 2;
       */
      public Builder addElements(
          io.arthas.api.ArthasServices.JavaObject.Builder builderForValue) {
        if (elementsBuilder_ == null) {
          ensureElementsIsMutable();
          elements_.add(builderForValue.build());
          onChanged();
        } else {
          elementsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .io.arthas.api.JavaObject elements = 2;
       */
      public Builder addElements(
          int index, io.arthas.api.ArthasServices.JavaObject.Builder builderForValue) {
        if (elementsBuilder_ == null) {
          ensureElementsIsMutable();
          elements_.add(index, builderForValue.build());
          onChanged();
        } else {
          elementsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .io.arthas.api.JavaObject elements = 2;
       */
      public Builder addAllElements(
          java.lang.Iterable values) {
        if (elementsBuilder_ == null) {
          ensureElementsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, elements_);
          onChanged();
        } else {
          elementsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .io.arthas.api.JavaObject elements = 2;
       */
      public Builder clearElements() {
        if (elementsBuilder_ == null) {
          elements_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          elementsBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .io.arthas.api.JavaObject elements = 2;
       */
      public Builder removeElements(int index) {
        if (elementsBuilder_ == null) {
          ensureElementsIsMutable();
          elements_.remove(index);
          onChanged();
        } else {
          elementsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .io.arthas.api.JavaObject elements = 2;
       */
      public io.arthas.api.ArthasServices.JavaObject.Builder getElementsBuilder(
          int index) {
        return getElementsFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .io.arthas.api.JavaObject elements = 2;
       */
      public io.arthas.api.ArthasServices.JavaObjectOrBuilder getElementsOrBuilder(
          int index) {
        if (elementsBuilder_ == null) {
          return elements_.get(index);  } else {
          return elementsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .io.arthas.api.JavaObject elements = 2;
       */
      public java.util.List 
           getElementsOrBuilderList() {
        if (elementsBuilder_ != null) {
          return elementsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(elements_);
        }
      }
      /**
       * repeated .io.arthas.api.JavaObject elements = 2;
       */
      public io.arthas.api.ArthasServices.JavaObject.Builder addElementsBuilder() {
        return getElementsFieldBuilder().addBuilder(
            io.arthas.api.ArthasServices.JavaObject.getDefaultInstance());
      }
      /**
       * repeated .io.arthas.api.JavaObject elements = 2;
       */
      public io.arthas.api.ArthasServices.JavaObject.Builder addElementsBuilder(
          int index) {
        return getElementsFieldBuilder().addBuilder(
            index, io.arthas.api.ArthasServices.JavaObject.getDefaultInstance());
      }
      /**
       * repeated .io.arthas.api.JavaObject elements = 2;
       */
      public java.util.List 
           getElementsBuilderList() {
        return getElementsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          io.arthas.api.ArthasServices.JavaObject, io.arthas.api.ArthasServices.JavaObject.Builder, io.arthas.api.ArthasServices.JavaObjectOrBuilder> 
          getElementsFieldBuilder() {
        if (elementsBuilder_ == null) {
          elementsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              io.arthas.api.ArthasServices.JavaObject, io.arthas.api.ArthasServices.JavaObject.Builder, io.arthas.api.ArthasServices.JavaObjectOrBuilder>(
                  elements_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          elements_ = null;
        }
        return elementsBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:io.arthas.api.CollectionValue)
    }

    // @@protoc_insertion_point(class_scope:io.arthas.api.CollectionValue)
    private static final io.arthas.api.ArthasServices.CollectionValue DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.arthas.api.ArthasServices.CollectionValue();
    }

    public static io.arthas.api.ArthasServices.CollectionValue getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public CollectionValue parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new CollectionValue(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.arthas.api.ArthasServices.CollectionValue getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface MapEntryOrBuilder extends
      // @@protoc_insertion_point(interface_extends:io.arthas.api.MapEntry)
      com.google.protobuf.MessageOrBuilder {

    /**
     * .io.arthas.api.JavaObject key = 1;
     * @return Whether the key field is set.
     */
    boolean hasKey();
    /**
     * .io.arthas.api.JavaObject key = 1;
     * @return The key.
     */
    io.arthas.api.ArthasServices.JavaObject getKey();
    /**
     * .io.arthas.api.JavaObject key = 1;
     */
    io.arthas.api.ArthasServices.JavaObjectOrBuilder getKeyOrBuilder();

    /**
     * .io.arthas.api.JavaObject value = 2;
     * @return Whether the value field is set.
     */
    boolean hasValue();
    /**
     * .io.arthas.api.JavaObject value = 2;
     * @return The value.
     */
    io.arthas.api.ArthasServices.JavaObject getValue();
    /**
     * .io.arthas.api.JavaObject value = 2;
     */
    io.arthas.api.ArthasServices.JavaObjectOrBuilder getValueOrBuilder();
  }
  /**
   * Protobuf type {@code io.arthas.api.MapEntry}
   */
  public  static final class MapEntry extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:io.arthas.api.MapEntry)
      MapEntryOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use MapEntry.newBuilder() to construct.
    private MapEntry(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private MapEntry() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new MapEntry();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private MapEntry(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 10: {
              io.arthas.api.ArthasServices.JavaObject.Builder subBuilder = null;
              if (key_ != null) {
                subBuilder = key_.toBuilder();
              }
              key_ = input.readMessage(io.arthas.api.ArthasServices.JavaObject.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(key_);
                key_ = subBuilder.buildPartial();
              }

              break;
            }
            case 18: {
              io.arthas.api.ArthasServices.JavaObject.Builder subBuilder = null;
              if (value_ != null) {
                subBuilder = value_.toBuilder();
              }
              value_ = input.readMessage(io.arthas.api.ArthasServices.JavaObject.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(value_);
                value_ = subBuilder.buildPartial();
              }

              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              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 io.arthas.api.ArthasServices.internal_static_io_arthas_api_MapEntry_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.arthas.api.ArthasServices.internal_static_io_arthas_api_MapEntry_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.arthas.api.ArthasServices.MapEntry.class, io.arthas.api.ArthasServices.MapEntry.Builder.class);
    }

    public static final int KEY_FIELD_NUMBER = 1;
    private io.arthas.api.ArthasServices.JavaObject key_;
    /**
     * .io.arthas.api.JavaObject key = 1;
     * @return Whether the key field is set.
     */
    public boolean hasKey() {
      return key_ != null;
    }
    /**
     * .io.arthas.api.JavaObject key = 1;
     * @return The key.
     */
    public io.arthas.api.ArthasServices.JavaObject getKey() {
      return key_ == null ? io.arthas.api.ArthasServices.JavaObject.getDefaultInstance() : key_;
    }
    /**
     * .io.arthas.api.JavaObject key = 1;
     */
    public io.arthas.api.ArthasServices.JavaObjectOrBuilder getKeyOrBuilder() {
      return getKey();
    }

    public static final int VALUE_FIELD_NUMBER = 2;
    private io.arthas.api.ArthasServices.JavaObject value_;
    /**
     * .io.arthas.api.JavaObject value = 2;
     * @return Whether the value field is set.
     */
    public boolean hasValue() {
      return value_ != null;
    }
    /**
     * .io.arthas.api.JavaObject value = 2;
     * @return The value.
     */
    public io.arthas.api.ArthasServices.JavaObject getValue() {
      return value_ == null ? io.arthas.api.ArthasServices.JavaObject.getDefaultInstance() : value_;
    }
    /**
     * .io.arthas.api.JavaObject value = 2;
     */
    public io.arthas.api.ArthasServices.JavaObjectOrBuilder getValueOrBuilder() {
      return getValue();
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (key_ != null) {
        output.writeMessage(1, getKey());
      }
      if (value_ != null) {
        output.writeMessage(2, getValue());
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (key_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getKey());
      }
      if (value_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getValue());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof io.arthas.api.ArthasServices.MapEntry)) {
        return super.equals(obj);
      }
      io.arthas.api.ArthasServices.MapEntry other = (io.arthas.api.ArthasServices.MapEntry) obj;

      if (hasKey() != other.hasKey()) return false;
      if (hasKey()) {
        if (!getKey()
            .equals(other.getKey())) return false;
      }
      if (hasValue() != other.hasValue()) return false;
      if (hasValue()) {
        if (!getValue()
            .equals(other.getValue())) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasKey()) {
        hash = (37 * hash) + KEY_FIELD_NUMBER;
        hash = (53 * hash) + getKey().hashCode();
      }
      if (hasValue()) {
        hash = (37 * hash) + VALUE_FIELD_NUMBER;
        hash = (53 * hash) + getValue().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.arthas.api.ArthasServices.MapEntry parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.arthas.api.ArthasServices.MapEntry parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.arthas.api.ArthasServices.MapEntry parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.arthas.api.ArthasServices.MapEntry parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.arthas.api.ArthasServices.MapEntry parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.arthas.api.ArthasServices.MapEntry parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.arthas.api.ArthasServices.MapEntry parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.arthas.api.ArthasServices.MapEntry 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 io.arthas.api.ArthasServices.MapEntry parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static io.arthas.api.ArthasServices.MapEntry 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 io.arthas.api.ArthasServices.MapEntry parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.arthas.api.ArthasServices.MapEntry parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(io.arthas.api.ArthasServices.MapEntry prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    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 io.arthas.api.MapEntry}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:io.arthas.api.MapEntry)
        io.arthas.api.ArthasServices.MapEntryOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.arthas.api.ArthasServices.internal_static_io_arthas_api_MapEntry_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.arthas.api.ArthasServices.internal_static_io_arthas_api_MapEntry_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.arthas.api.ArthasServices.MapEntry.class, io.arthas.api.ArthasServices.MapEntry.Builder.class);
      }

      // Construct using io.arthas.api.ArthasServices.MapEntry.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (keyBuilder_ == null) {
          key_ = null;
        } else {
          key_ = null;
          keyBuilder_ = null;
        }
        if (valueBuilder_ == null) {
          value_ = null;
        } else {
          value_ = null;
          valueBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.arthas.api.ArthasServices.internal_static_io_arthas_api_MapEntry_descriptor;
      }

      @java.lang.Override
      public io.arthas.api.ArthasServices.MapEntry getDefaultInstanceForType() {
        return io.arthas.api.ArthasServices.MapEntry.getDefaultInstance();
      }

      @java.lang.Override
      public io.arthas.api.ArthasServices.MapEntry build() {
        io.arthas.api.ArthasServices.MapEntry result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.arthas.api.ArthasServices.MapEntry buildPartial() {
        io.arthas.api.ArthasServices.MapEntry result = new io.arthas.api.ArthasServices.MapEntry(this);
        if (keyBuilder_ == null) {
          result.key_ = key_;
        } else {
          result.key_ = keyBuilder_.build();
        }
        if (valueBuilder_ == null) {
          result.value_ = value_;
        } else {
          result.value_ = valueBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.arthas.api.ArthasServices.MapEntry) {
          return mergeFrom((io.arthas.api.ArthasServices.MapEntry)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.arthas.api.ArthasServices.MapEntry other) {
        if (other == io.arthas.api.ArthasServices.MapEntry.getDefaultInstance()) return this;
        if (other.hasKey()) {
          mergeKey(other.getKey());
        }
        if (other.hasValue()) {
          mergeValue(other.getValue());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        io.arthas.api.ArthasServices.MapEntry parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (io.arthas.api.ArthasServices.MapEntry) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private io.arthas.api.ArthasServices.JavaObject key_;
      private com.google.protobuf.SingleFieldBuilderV3<
          io.arthas.api.ArthasServices.JavaObject, io.arthas.api.ArthasServices.JavaObject.Builder, io.arthas.api.ArthasServices.JavaObjectOrBuilder> keyBuilder_;
      /**
       * .io.arthas.api.JavaObject key = 1;
       * @return Whether the key field is set.
       */
      public boolean hasKey() {
        return keyBuilder_ != null || key_ != null;
      }
      /**
       * .io.arthas.api.JavaObject key = 1;
       * @return The key.
       */
      public io.arthas.api.ArthasServices.JavaObject getKey() {
        if (keyBuilder_ == null) {
          return key_ == null ? io.arthas.api.ArthasServices.JavaObject.getDefaultInstance() : key_;
        } else {
          return keyBuilder_.getMessage();
        }
      }
      /**
       * .io.arthas.api.JavaObject key = 1;
       */
      public Builder setKey(io.arthas.api.ArthasServices.JavaObject value) {
        if (keyBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          key_ = value;
          onChanged();
        } else {
          keyBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * .io.arthas.api.JavaObject key = 1;
       */
      public Builder setKey(
          io.arthas.api.ArthasServices.JavaObject.Builder builderForValue) {
        if (keyBuilder_ == null) {
          key_ = builderForValue.build();
          onChanged();
        } else {
          keyBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * .io.arthas.api.JavaObject key = 1;
       */
      public Builder mergeKey(io.arthas.api.ArthasServices.JavaObject value) {
        if (keyBuilder_ == null) {
          if (key_ != null) {
            key_ =
              io.arthas.api.ArthasServices.JavaObject.newBuilder(key_).mergeFrom(value).buildPartial();
          } else {
            key_ = value;
          }
          onChanged();
        } else {
          keyBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * .io.arthas.api.JavaObject key = 1;
       */
      public Builder clearKey() {
        if (keyBuilder_ == null) {
          key_ = null;
          onChanged();
        } else {
          key_ = null;
          keyBuilder_ = null;
        }

        return this;
      }
      /**
       * .io.arthas.api.JavaObject key = 1;
       */
      public io.arthas.api.ArthasServices.JavaObject.Builder getKeyBuilder() {
        
        onChanged();
        return getKeyFieldBuilder().getBuilder();
      }
      /**
       * .io.arthas.api.JavaObject key = 1;
       */
      public io.arthas.api.ArthasServices.JavaObjectOrBuilder getKeyOrBuilder() {
        if (keyBuilder_ != null) {
          return keyBuilder_.getMessageOrBuilder();
        } else {
          return key_ == null ?
              io.arthas.api.ArthasServices.JavaObject.getDefaultInstance() : key_;
        }
      }
      /**
       * .io.arthas.api.JavaObject key = 1;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          io.arthas.api.ArthasServices.JavaObject, io.arthas.api.ArthasServices.JavaObject.Builder, io.arthas.api.ArthasServices.JavaObjectOrBuilder> 
          getKeyFieldBuilder() {
        if (keyBuilder_ == null) {
          keyBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              io.arthas.api.ArthasServices.JavaObject, io.arthas.api.ArthasServices.JavaObject.Builder, io.arthas.api.ArthasServices.JavaObjectOrBuilder>(
                  getKey(),
                  getParentForChildren(),
                  isClean());
          key_ = null;
        }
        return keyBuilder_;
      }

      private io.arthas.api.ArthasServices.JavaObject value_;
      private com.google.protobuf.SingleFieldBuilderV3<
          io.arthas.api.ArthasServices.JavaObject, io.arthas.api.ArthasServices.JavaObject.Builder, io.arthas.api.ArthasServices.JavaObjectOrBuilder> valueBuilder_;
      /**
       * .io.arthas.api.JavaObject value = 2;
       * @return Whether the value field is set.
       */
      public boolean hasValue() {
        return valueBuilder_ != null || value_ != null;
      }
      /**
       * .io.arthas.api.JavaObject value = 2;
       * @return The value.
       */
      public io.arthas.api.ArthasServices.JavaObject getValue() {
        if (valueBuilder_ == null) {
          return value_ == null ? io.arthas.api.ArthasServices.JavaObject.getDefaultInstance() : value_;
        } else {
          return valueBuilder_.getMessage();
        }
      }
      /**
       * .io.arthas.api.JavaObject value = 2;
       */
      public Builder setValue(io.arthas.api.ArthasServices.JavaObject value) {
        if (valueBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          value_ = value;
          onChanged();
        } else {
          valueBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * .io.arthas.api.JavaObject value = 2;
       */
      public Builder setValue(
          io.arthas.api.ArthasServices.JavaObject.Builder builderForValue) {
        if (valueBuilder_ == null) {
          value_ = builderForValue.build();
          onChanged();
        } else {
          valueBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * .io.arthas.api.JavaObject value = 2;
       */
      public Builder mergeValue(io.arthas.api.ArthasServices.JavaObject value) {
        if (valueBuilder_ == null) {
          if (value_ != null) {
            value_ =
              io.arthas.api.ArthasServices.JavaObject.newBuilder(value_).mergeFrom(value).buildPartial();
          } else {
            value_ = value;
          }
          onChanged();
        } else {
          valueBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * .io.arthas.api.JavaObject value = 2;
       */
      public Builder clearValue() {
        if (valueBuilder_ == null) {
          value_ = null;
          onChanged();
        } else {
          value_ = null;
          valueBuilder_ = null;
        }

        return this;
      }
      /**
       * .io.arthas.api.JavaObject value = 2;
       */
      public io.arthas.api.ArthasServices.JavaObject.Builder getValueBuilder() {
        
        onChanged();
        return getValueFieldBuilder().getBuilder();
      }
      /**
       * .io.arthas.api.JavaObject value = 2;
       */
      public io.arthas.api.ArthasServices.JavaObjectOrBuilder getValueOrBuilder() {
        if (valueBuilder_ != null) {
          return valueBuilder_.getMessageOrBuilder();
        } else {
          return value_ == null ?
              io.arthas.api.ArthasServices.JavaObject.getDefaultInstance() : value_;
        }
      }
      /**
       * .io.arthas.api.JavaObject value = 2;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          io.arthas.api.ArthasServices.JavaObject, io.arthas.api.ArthasServices.JavaObject.Builder, io.arthas.api.ArthasServices.JavaObjectOrBuilder> 
          getValueFieldBuilder() {
        if (valueBuilder_ == null) {
          valueBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              io.arthas.api.ArthasServices.JavaObject, io.arthas.api.ArthasServices.JavaObject.Builder, io.arthas.api.ArthasServices.JavaObjectOrBuilder>(
                  getValue(),
                  getParentForChildren(),
                  isClean());
          value_ = null;
        }
        return valueBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:io.arthas.api.MapEntry)
    }

    // @@protoc_insertion_point(class_scope:io.arthas.api.MapEntry)
    private static final io.arthas.api.ArthasServices.MapEntry DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.arthas.api.ArthasServices.MapEntry();
    }

    public static io.arthas.api.ArthasServices.MapEntry getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public MapEntry parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new MapEntry(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.arthas.api.ArthasServices.MapEntry getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface MapValueOrBuilder extends
      // @@protoc_insertion_point(interface_extends:io.arthas.api.MapValue)
      com.google.protobuf.MessageOrBuilder {

    /**
     * string className = 1;
     * @return The className.
     */
    java.lang.String getClassName();
    /**
     * string className = 1;
     * @return The bytes for className.
     */
    com.google.protobuf.ByteString
        getClassNameBytes();

    /**
     * repeated .io.arthas.api.MapEntry entries = 2;
     */
    java.util.List 
        getEntriesList();
    /**
     * repeated .io.arthas.api.MapEntry entries = 2;
     */
    io.arthas.api.ArthasServices.MapEntry getEntries(int index);
    /**
     * repeated .io.arthas.api.MapEntry entries = 2;
     */
    int getEntriesCount();
    /**
     * repeated .io.arthas.api.MapEntry entries = 2;
     */
    java.util.List 
        getEntriesOrBuilderList();
    /**
     * repeated .io.arthas.api.MapEntry entries = 2;
     */
    io.arthas.api.ArthasServices.MapEntryOrBuilder getEntriesOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code io.arthas.api.MapValue}
   */
  public  static final class MapValue extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:io.arthas.api.MapValue)
      MapValueOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use MapValue.newBuilder() to construct.
    private MapValue(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private MapValue() {
      className_ = "";
      entries_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new MapValue();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private MapValue(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

              className_ = s;
              break;
            }
            case 18: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                entries_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000001;
              }
              entries_.add(
                  input.readMessage(io.arthas.api.ArthasServices.MapEntry.parser(), extensionRegistry));
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              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) != 0)) {
          entries_ = java.util.Collections.unmodifiableList(entries_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.arthas.api.ArthasServices.internal_static_io_arthas_api_MapValue_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.arthas.api.ArthasServices.internal_static_io_arthas_api_MapValue_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.arthas.api.ArthasServices.MapValue.class, io.arthas.api.ArthasServices.MapValue.Builder.class);
    }

    public static final int CLASSNAME_FIELD_NUMBER = 1;
    private volatile java.lang.Object className_;
    /**
     * string className = 1;
     * @return The className.
     */
    public java.lang.String getClassName() {
      java.lang.Object ref = className_;
      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();
        className_ = s;
        return s;
      }
    }
    /**
     * string className = 1;
     * @return The bytes for className.
     */
    public com.google.protobuf.ByteString
        getClassNameBytes() {
      java.lang.Object ref = className_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        className_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int ENTRIES_FIELD_NUMBER = 2;
    private java.util.List entries_;
    /**
     * repeated .io.arthas.api.MapEntry entries = 2;
     */
    public java.util.List getEntriesList() {
      return entries_;
    }
    /**
     * repeated .io.arthas.api.MapEntry entries = 2;
     */
    public java.util.List 
        getEntriesOrBuilderList() {
      return entries_;
    }
    /**
     * repeated .io.arthas.api.MapEntry entries = 2;
     */
    public int getEntriesCount() {
      return entries_.size();
    }
    /**
     * repeated .io.arthas.api.MapEntry entries = 2;
     */
    public io.arthas.api.ArthasServices.MapEntry getEntries(int index) {
      return entries_.get(index);
    }
    /**
     * repeated .io.arthas.api.MapEntry entries = 2;
     */
    public io.arthas.api.ArthasServices.MapEntryOrBuilder getEntriesOrBuilder(
        int index) {
      return entries_.get(index);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getClassNameBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, className_);
      }
      for (int i = 0; i < entries_.size(); i++) {
        output.writeMessage(2, entries_.get(i));
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!getClassNameBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, className_);
      }
      for (int i = 0; i < entries_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, entries_.get(i));
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof io.arthas.api.ArthasServices.MapValue)) {
        return super.equals(obj);
      }
      io.arthas.api.ArthasServices.MapValue other = (io.arthas.api.ArthasServices.MapValue) obj;

      if (!getClassName()
          .equals(other.getClassName())) return false;
      if (!getEntriesList()
          .equals(other.getEntriesList())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + CLASSNAME_FIELD_NUMBER;
      hash = (53 * hash) + getClassName().hashCode();
      if (getEntriesCount() > 0) {
        hash = (37 * hash) + ENTRIES_FIELD_NUMBER;
        hash = (53 * hash) + getEntriesList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.arthas.api.ArthasServices.MapValue parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.arthas.api.ArthasServices.MapValue parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.arthas.api.ArthasServices.MapValue parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.arthas.api.ArthasServices.MapValue parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.arthas.api.ArthasServices.MapValue parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.arthas.api.ArthasServices.MapValue parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.arthas.api.ArthasServices.MapValue parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.arthas.api.ArthasServices.MapValue 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 io.arthas.api.ArthasServices.MapValue parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static io.arthas.api.ArthasServices.MapValue 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 io.arthas.api.ArthasServices.MapValue parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.arthas.api.ArthasServices.MapValue parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(io.arthas.api.ArthasServices.MapValue prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    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 io.arthas.api.MapValue}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:io.arthas.api.MapValue)
        io.arthas.api.ArthasServices.MapValueOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.arthas.api.ArthasServices.internal_static_io_arthas_api_MapValue_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.arthas.api.ArthasServices.internal_static_io_arthas_api_MapValue_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.arthas.api.ArthasServices.MapValue.class, io.arthas.api.ArthasServices.MapValue.Builder.class);
      }

      // Construct using io.arthas.api.ArthasServices.MapValue.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getEntriesFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        className_ = "";

        if (entriesBuilder_ == null) {
          entries_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          entriesBuilder_.clear();
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.arthas.api.ArthasServices.internal_static_io_arthas_api_MapValue_descriptor;
      }

      @java.lang.Override
      public io.arthas.api.ArthasServices.MapValue getDefaultInstanceForType() {
        return io.arthas.api.ArthasServices.MapValue.getDefaultInstance();
      }

      @java.lang.Override
      public io.arthas.api.ArthasServices.MapValue build() {
        io.arthas.api.ArthasServices.MapValue result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.arthas.api.ArthasServices.MapValue buildPartial() {
        io.arthas.api.ArthasServices.MapValue result = new io.arthas.api.ArthasServices.MapValue(this);
        int from_bitField0_ = bitField0_;
        result.className_ = className_;
        if (entriesBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            entries_ = java.util.Collections.unmodifiableList(entries_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.entries_ = entries_;
        } else {
          result.entries_ = entriesBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.arthas.api.ArthasServices.MapValue) {
          return mergeFrom((io.arthas.api.ArthasServices.MapValue)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.arthas.api.ArthasServices.MapValue other) {
        if (other == io.arthas.api.ArthasServices.MapValue.getDefaultInstance()) return this;
        if (!other.getClassName().isEmpty()) {
          className_ = other.className_;
          onChanged();
        }
        if (entriesBuilder_ == null) {
          if (!other.entries_.isEmpty()) {
            if (entries_.isEmpty()) {
              entries_ = other.entries_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureEntriesIsMutable();
              entries_.addAll(other.entries_);
            }
            onChanged();
          }
        } else {
          if (!other.entries_.isEmpty()) {
            if (entriesBuilder_.isEmpty()) {
              entriesBuilder_.dispose();
              entriesBuilder_ = null;
              entries_ = other.entries_;
              bitField0_ = (bitField0_ & ~0x00000001);
              entriesBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getEntriesFieldBuilder() : null;
            } else {
              entriesBuilder_.addAllMessages(other.entries_);
            }
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        io.arthas.api.ArthasServices.MapValue parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (io.arthas.api.ArthasServices.MapValue) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.lang.Object className_ = "";
      /**
       * string className = 1;
       * @return The className.
       */
      public java.lang.String getClassName() {
        java.lang.Object ref = className_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          className_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string className = 1;
       * @return The bytes for className.
       */
      public com.google.protobuf.ByteString
          getClassNameBytes() {
        java.lang.Object ref = className_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          className_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string className = 1;
       * @param value The className to set.
       * @return This builder for chaining.
       */
      public Builder setClassName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        className_ = value;
        onChanged();
        return this;
      }
      /**
       * string className = 1;
       * @return This builder for chaining.
       */
      public Builder clearClassName() {
        
        className_ = getDefaultInstance().getClassName();
        onChanged();
        return this;
      }
      /**
       * string className = 1;
       * @param value The bytes for className to set.
       * @return This builder for chaining.
       */
      public Builder setClassNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        className_ = value;
        onChanged();
        return this;
      }

      private java.util.List entries_ =
        java.util.Collections.emptyList();
      private void ensureEntriesIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          entries_ = new java.util.ArrayList(entries_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          io.arthas.api.ArthasServices.MapEntry, io.arthas.api.ArthasServices.MapEntry.Builder, io.arthas.api.ArthasServices.MapEntryOrBuilder> entriesBuilder_;

      /**
       * repeated .io.arthas.api.MapEntry entries = 2;
       */
      public java.util.List getEntriesList() {
        if (entriesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(entries_);
        } else {
          return entriesBuilder_.getMessageList();
        }
      }
      /**
       * repeated .io.arthas.api.MapEntry entries = 2;
       */
      public int getEntriesCount() {
        if (entriesBuilder_ == null) {
          return entries_.size();
        } else {
          return entriesBuilder_.getCount();
        }
      }
      /**
       * repeated .io.arthas.api.MapEntry entries = 2;
       */
      public io.arthas.api.ArthasServices.MapEntry getEntries(int index) {
        if (entriesBuilder_ == null) {
          return entries_.get(index);
        } else {
          return entriesBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .io.arthas.api.MapEntry entries = 2;
       */
      public Builder setEntries(
          int index, io.arthas.api.ArthasServices.MapEntry value) {
        if (entriesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureEntriesIsMutable();
          entries_.set(index, value);
          onChanged();
        } else {
          entriesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .io.arthas.api.MapEntry entries = 2;
       */
      public Builder setEntries(
          int index, io.arthas.api.ArthasServices.MapEntry.Builder builderForValue) {
        if (entriesBuilder_ == null) {
          ensureEntriesIsMutable();
          entries_.set(index, builderForValue.build());
          onChanged();
        } else {
          entriesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .io.arthas.api.MapEntry entries = 2;
       */
      public Builder addEntries(io.arthas.api.ArthasServices.MapEntry value) {
        if (entriesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureEntriesIsMutable();
          entries_.add(value);
          onChanged();
        } else {
          entriesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .io.arthas.api.MapEntry entries = 2;
       */
      public Builder addEntries(
          int index, io.arthas.api.ArthasServices.MapEntry value) {
        if (entriesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureEntriesIsMutable();
          entries_.add(index, value);
          onChanged();
        } else {
          entriesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .io.arthas.api.MapEntry entries = 2;
       */
      public Builder addEntries(
          io.arthas.api.ArthasServices.MapEntry.Builder builderForValue) {
        if (entriesBuilder_ == null) {
          ensureEntriesIsMutable();
          entries_.add(builderForValue.build());
          onChanged();
        } else {
          entriesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .io.arthas.api.MapEntry entries = 2;
       */
      public Builder addEntries(
          int index, io.arthas.api.ArthasServices.MapEntry.Builder builderForValue) {
        if (entriesBuilder_ == null) {
          ensureEntriesIsMutable();
          entries_.add(index, builderForValue.build());
          onChanged();
        } else {
          entriesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .io.arthas.api.MapEntry entries = 2;
       */
      public Builder addAllEntries(
          java.lang.Iterable values) {
        if (entriesBuilder_ == null) {
          ensureEntriesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, entries_);
          onChanged();
        } else {
          entriesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .io.arthas.api.MapEntry entries = 2;
       */
      public Builder clearEntries() {
        if (entriesBuilder_ == null) {
          entries_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          entriesBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .io.arthas.api.MapEntry entries = 2;
       */
      public Builder removeEntries(int index) {
        if (entriesBuilder_ == null) {
          ensureEntriesIsMutable();
          entries_.remove(index);
          onChanged();
        } else {
          entriesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .io.arthas.api.MapEntry entries = 2;
       */
      public io.arthas.api.ArthasServices.MapEntry.Builder getEntriesBuilder(
          int index) {
        return getEntriesFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .io.arthas.api.MapEntry entries = 2;
       */
      public io.arthas.api.ArthasServices.MapEntryOrBuilder getEntriesOrBuilder(
          int index) {
        if (entriesBuilder_ == null) {
          return entries_.get(index);  } else {
          return entriesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .io.arthas.api.MapEntry entries = 2;
       */
      public java.util.List 
           getEntriesOrBuilderList() {
        if (entriesBuilder_ != null) {
          return entriesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(entries_);
        }
      }
      /**
       * repeated .io.arthas.api.MapEntry entries = 2;
       */
      public io.arthas.api.ArthasServices.MapEntry.Builder addEntriesBuilder() {
        return getEntriesFieldBuilder().addBuilder(
            io.arthas.api.ArthasServices.MapEntry.getDefaultInstance());
      }
      /**
       * repeated .io.arthas.api.MapEntry entries = 2;
       */
      public io.arthas.api.ArthasServices.MapEntry.Builder addEntriesBuilder(
          int index) {
        return getEntriesFieldBuilder().addBuilder(
            index, io.arthas.api.ArthasServices.MapEntry.getDefaultInstance());
      }
      /**
       * repeated .io.arthas.api.MapEntry entries = 2;
       */
      public java.util.List 
           getEntriesBuilderList() {
        return getEntriesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          io.arthas.api.ArthasServices.MapEntry, io.arthas.api.ArthasServices.MapEntry.Builder, io.arthas.api.ArthasServices.MapEntryOrBuilder> 
          getEntriesFieldBuilder() {
        if (entriesBuilder_ == null) {
          entriesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              io.arthas.api.ArthasServices.MapEntry, io.arthas.api.ArthasServices.MapEntry.Builder, io.arthas.api.ArthasServices.MapEntryOrBuilder>(
                  entries_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          entries_ = null;
        }
        return entriesBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:io.arthas.api.MapValue)
    }

    // @@protoc_insertion_point(class_scope:io.arthas.api.MapValue)
    private static final io.arthas.api.ArthasServices.MapValue DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.arthas.api.ArthasServices.MapValue();
    }

    public static io.arthas.api.ArthasServices.MapValue getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public MapValue parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new MapValue(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.arthas.api.ArthasServices.MapValue getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface JavaFieldOrBuilder extends
      // @@protoc_insertion_point(interface_extends:io.arthas.api.JavaField)
      com.google.protobuf.MessageOrBuilder {

    /**
     * string name = 1;
     * @return The name.
     */
    java.lang.String getName();
    /**
     * string name = 1;
     * @return The bytes for name.
     */
    com.google.protobuf.ByteString
        getNameBytes();

    /**
     * .io.arthas.api.JavaObject objectValue = 2;
     * @return Whether the objectValue field is set.
     */
    boolean hasObjectValue();
    /**
     * .io.arthas.api.JavaObject objectValue = 2;
     * @return The objectValue.
     */
    io.arthas.api.ArthasServices.JavaObject getObjectValue();
    /**
     * .io.arthas.api.JavaObject objectValue = 2;
     */
    io.arthas.api.ArthasServices.JavaObjectOrBuilder getObjectValueOrBuilder();

    /**
     * .io.arthas.api.BasicValue basicValue = 3;
     * @return Whether the basicValue field is set.
     */
    boolean hasBasicValue();
    /**
     * .io.arthas.api.BasicValue basicValue = 3;
     * @return The basicValue.
     */
    io.arthas.api.ArthasServices.BasicValue getBasicValue();
    /**
     * .io.arthas.api.BasicValue basicValue = 3;
     */
    io.arthas.api.ArthasServices.BasicValueOrBuilder getBasicValueOrBuilder();

    /**
     * .io.arthas.api.ArrayValue arrayValue = 4;
     * @return Whether the arrayValue field is set.
     */
    boolean hasArrayValue();
    /**
     * .io.arthas.api.ArrayValue arrayValue = 4;
     * @return The arrayValue.
     */
    io.arthas.api.ArthasServices.ArrayValue getArrayValue();
    /**
     * .io.arthas.api.ArrayValue arrayValue = 4;
     */
    io.arthas.api.ArthasServices.ArrayValueOrBuilder getArrayValueOrBuilder();

    /**
     * .io.arthas.api.NullValue nullValue = 5;
     * @return Whether the nullValue field is set.
     */
    boolean hasNullValue();
    /**
     * .io.arthas.api.NullValue nullValue = 5;
     * @return The nullValue.
     */
    io.arthas.api.ArthasServices.NullValue getNullValue();
    /**
     * .io.arthas.api.NullValue nullValue = 5;
     */
    io.arthas.api.ArthasServices.NullValueOrBuilder getNullValueOrBuilder();

    /**
     * .io.arthas.api.CollectionValue collection = 6;
     * @return Whether the collection field is set.
     */
    boolean hasCollection();
    /**
     * .io.arthas.api.CollectionValue collection = 6;
     * @return The collection.
     */
    io.arthas.api.ArthasServices.CollectionValue getCollection();
    /**
     * .io.arthas.api.CollectionValue collection = 6;
     */
    io.arthas.api.ArthasServices.CollectionValueOrBuilder getCollectionOrBuilder();

    /**
     * .io.arthas.api.MapValue map = 7;
     * @return Whether the map field is set.
     */
    boolean hasMap();
    /**
     * .io.arthas.api.MapValue map = 7;
     * @return The map.
     */
    io.arthas.api.ArthasServices.MapValue getMap();
    /**
     * .io.arthas.api.MapValue map = 7;
     */
    io.arthas.api.ArthasServices.MapValueOrBuilder getMapOrBuilder();

    /**
     * .io.arthas.api.UnexpandedObject unexpandedObject = 8;
     * @return Whether the unexpandedObject field is set.
     */
    boolean hasUnexpandedObject();
    /**
     * .io.arthas.api.UnexpandedObject unexpandedObject = 8;
     * @return The unexpandedObject.
     */
    io.arthas.api.ArthasServices.UnexpandedObject getUnexpandedObject();
    /**
     * .io.arthas.api.UnexpandedObject unexpandedObject = 8;
     */
    io.arthas.api.ArthasServices.UnexpandedObjectOrBuilder getUnexpandedObjectOrBuilder();

    public io.arthas.api.ArthasServices.JavaField.ValueCase getValueCase();
  }
  /**
   * Protobuf type {@code io.arthas.api.JavaField}
   */
  public  static final class JavaField extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:io.arthas.api.JavaField)
      JavaFieldOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use JavaField.newBuilder() to construct.
    private JavaField(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private JavaField() {
      name_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new JavaField();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private JavaField(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

              name_ = s;
              break;
            }
            case 18: {
              io.arthas.api.ArthasServices.JavaObject.Builder subBuilder = null;
              if (valueCase_ == 2) {
                subBuilder = ((io.arthas.api.ArthasServices.JavaObject) value_).toBuilder();
              }
              value_ =
                  input.readMessage(io.arthas.api.ArthasServices.JavaObject.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((io.arthas.api.ArthasServices.JavaObject) value_);
                value_ = subBuilder.buildPartial();
              }
              valueCase_ = 2;
              break;
            }
            case 26: {
              io.arthas.api.ArthasServices.BasicValue.Builder subBuilder = null;
              if (valueCase_ == 3) {
                subBuilder = ((io.arthas.api.ArthasServices.BasicValue) value_).toBuilder();
              }
              value_ =
                  input.readMessage(io.arthas.api.ArthasServices.BasicValue.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((io.arthas.api.ArthasServices.BasicValue) value_);
                value_ = subBuilder.buildPartial();
              }
              valueCase_ = 3;
              break;
            }
            case 34: {
              io.arthas.api.ArthasServices.ArrayValue.Builder subBuilder = null;
              if (valueCase_ == 4) {
                subBuilder = ((io.arthas.api.ArthasServices.ArrayValue) value_).toBuilder();
              }
              value_ =
                  input.readMessage(io.arthas.api.ArthasServices.ArrayValue.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((io.arthas.api.ArthasServices.ArrayValue) value_);
                value_ = subBuilder.buildPartial();
              }
              valueCase_ = 4;
              break;
            }
            case 42: {
              io.arthas.api.ArthasServices.NullValue.Builder subBuilder = null;
              if (valueCase_ == 5) {
                subBuilder = ((io.arthas.api.ArthasServices.NullValue) value_).toBuilder();
              }
              value_ =
                  input.readMessage(io.arthas.api.ArthasServices.NullValue.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((io.arthas.api.ArthasServices.NullValue) value_);
                value_ = subBuilder.buildPartial();
              }
              valueCase_ = 5;
              break;
            }
            case 50: {
              io.arthas.api.ArthasServices.CollectionValue.Builder subBuilder = null;
              if (valueCase_ == 6) {
                subBuilder = ((io.arthas.api.ArthasServices.CollectionValue) value_).toBuilder();
              }
              value_ =
                  input.readMessage(io.arthas.api.ArthasServices.CollectionValue.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((io.arthas.api.ArthasServices.CollectionValue) value_);
                value_ = subBuilder.buildPartial();
              }
              valueCase_ = 6;
              break;
            }
            case 58: {
              io.arthas.api.ArthasServices.MapValue.Builder subBuilder = null;
              if (valueCase_ == 7) {
                subBuilder = ((io.arthas.api.ArthasServices.MapValue) value_).toBuilder();
              }
              value_ =
                  input.readMessage(io.arthas.api.ArthasServices.MapValue.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((io.arthas.api.ArthasServices.MapValue) value_);
                value_ = subBuilder.buildPartial();
              }
              valueCase_ = 7;
              break;
            }
            case 66: {
              io.arthas.api.ArthasServices.UnexpandedObject.Builder subBuilder = null;
              if (valueCase_ == 8) {
                subBuilder = ((io.arthas.api.ArthasServices.UnexpandedObject) value_).toBuilder();
              }
              value_ =
                  input.readMessage(io.arthas.api.ArthasServices.UnexpandedObject.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((io.arthas.api.ArthasServices.UnexpandedObject) value_);
                value_ = subBuilder.buildPartial();
              }
              valueCase_ = 8;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              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 io.arthas.api.ArthasServices.internal_static_io_arthas_api_JavaField_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.arthas.api.ArthasServices.internal_static_io_arthas_api_JavaField_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.arthas.api.ArthasServices.JavaField.class, io.arthas.api.ArthasServices.JavaField.Builder.class);
    }

    private int valueCase_ = 0;
    private java.lang.Object value_;
    public enum ValueCase
        implements com.google.protobuf.Internal.EnumLite,
            com.google.protobuf.AbstractMessage.InternalOneOfEnum {
      OBJECTVALUE(2),
      BASICVALUE(3),
      ARRAYVALUE(4),
      NULLVALUE(5),
      COLLECTION(6),
      MAP(7),
      UNEXPANDEDOBJECT(8),
      VALUE_NOT_SET(0);
      private final int value;
      private ValueCase(int value) {
        this.value = value;
      }
      /**
       * @param value The number of the enum to look for.
       * @return The enum associated with the given number.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static ValueCase valueOf(int value) {
        return forNumber(value);
      }

      public static ValueCase forNumber(int value) {
        switch (value) {
          case 2: return OBJECTVALUE;
          case 3: return BASICVALUE;
          case 4: return ARRAYVALUE;
          case 5: return NULLVALUE;
          case 6: return COLLECTION;
          case 7: return MAP;
          case 8: return UNEXPANDEDOBJECT;
          case 0: return VALUE_NOT_SET;
          default: return null;
        }
      }
      public int getNumber() {
        return this.value;
      }
    };

    public ValueCase
    getValueCase() {
      return ValueCase.forNumber(
          valueCase_);
    }

    public static final int NAME_FIELD_NUMBER = 1;
    private volatile java.lang.Object name_;
    /**
     * string name = 1;
     * @return The name.
     */
    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();
        name_ = s;
        return s;
      }
    }
    /**
     * string name = 1;
     * @return The bytes for name.
     */
    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 OBJECTVALUE_FIELD_NUMBER = 2;
    /**
     * .io.arthas.api.JavaObject objectValue = 2;
     * @return Whether the objectValue field is set.
     */
    public boolean hasObjectValue() {
      return valueCase_ == 2;
    }
    /**
     * .io.arthas.api.JavaObject objectValue = 2;
     * @return The objectValue.
     */
    public io.arthas.api.ArthasServices.JavaObject getObjectValue() {
      if (valueCase_ == 2) {
         return (io.arthas.api.ArthasServices.JavaObject) value_;
      }
      return io.arthas.api.ArthasServices.JavaObject.getDefaultInstance();
    }
    /**
     * .io.arthas.api.JavaObject objectValue = 2;
     */
    public io.arthas.api.ArthasServices.JavaObjectOrBuilder getObjectValueOrBuilder() {
      if (valueCase_ == 2) {
         return (io.arthas.api.ArthasServices.JavaObject) value_;
      }
      return io.arthas.api.ArthasServices.JavaObject.getDefaultInstance();
    }

    public static final int BASICVALUE_FIELD_NUMBER = 3;
    /**
     * .io.arthas.api.BasicValue basicValue = 3;
     * @return Whether the basicValue field is set.
     */
    public boolean hasBasicValue() {
      return valueCase_ == 3;
    }
    /**
     * .io.arthas.api.BasicValue basicValue = 3;
     * @return The basicValue.
     */
    public io.arthas.api.ArthasServices.BasicValue getBasicValue() {
      if (valueCase_ == 3) {
         return (io.arthas.api.ArthasServices.BasicValue) value_;
      }
      return io.arthas.api.ArthasServices.BasicValue.getDefaultInstance();
    }
    /**
     * .io.arthas.api.BasicValue basicValue = 3;
     */
    public io.arthas.api.ArthasServices.BasicValueOrBuilder getBasicValueOrBuilder() {
      if (valueCase_ == 3) {
         return (io.arthas.api.ArthasServices.BasicValue) value_;
      }
      return io.arthas.api.ArthasServices.BasicValue.getDefaultInstance();
    }

    public static final int ARRAYVALUE_FIELD_NUMBER = 4;
    /**
     * .io.arthas.api.ArrayValue arrayValue = 4;
     * @return Whether the arrayValue field is set.
     */
    public boolean hasArrayValue() {
      return valueCase_ == 4;
    }
    /**
     * .io.arthas.api.ArrayValue arrayValue = 4;
     * @return The arrayValue.
     */
    public io.arthas.api.ArthasServices.ArrayValue getArrayValue() {
      if (valueCase_ == 4) {
         return (io.arthas.api.ArthasServices.ArrayValue) value_;
      }
      return io.arthas.api.ArthasServices.ArrayValue.getDefaultInstance();
    }
    /**
     * .io.arthas.api.ArrayValue arrayValue = 4;
     */
    public io.arthas.api.ArthasServices.ArrayValueOrBuilder getArrayValueOrBuilder() {
      if (valueCase_ == 4) {
         return (io.arthas.api.ArthasServices.ArrayValue) value_;
      }
      return io.arthas.api.ArthasServices.ArrayValue.getDefaultInstance();
    }

    public static final int NULLVALUE_FIELD_NUMBER = 5;
    /**
     * .io.arthas.api.NullValue nullValue = 5;
     * @return Whether the nullValue field is set.
     */
    public boolean hasNullValue() {
      return valueCase_ == 5;
    }
    /**
     * .io.arthas.api.NullValue nullValue = 5;
     * @return The nullValue.
     */
    public io.arthas.api.ArthasServices.NullValue getNullValue() {
      if (valueCase_ == 5) {
         return (io.arthas.api.ArthasServices.NullValue) value_;
      }
      return io.arthas.api.ArthasServices.NullValue.getDefaultInstance();
    }
    /**
     * .io.arthas.api.NullValue nullValue = 5;
     */
    public io.arthas.api.ArthasServices.NullValueOrBuilder getNullValueOrBuilder() {
      if (valueCase_ == 5) {
         return (io.arthas.api.ArthasServices.NullValue) value_;
      }
      return io.arthas.api.ArthasServices.NullValue.getDefaultInstance();
    }

    public static final int COLLECTION_FIELD_NUMBER = 6;
    /**
     * .io.arthas.api.CollectionValue collection = 6;
     * @return Whether the collection field is set.
     */
    public boolean hasCollection() {
      return valueCase_ == 6;
    }
    /**
     * .io.arthas.api.CollectionValue collection = 6;
     * @return The collection.
     */
    public io.arthas.api.ArthasServices.CollectionValue getCollection() {
      if (valueCase_ == 6) {
         return (io.arthas.api.ArthasServices.CollectionValue) value_;
      }
      return io.arthas.api.ArthasServices.CollectionValue.getDefaultInstance();
    }
    /**
     * .io.arthas.api.CollectionValue collection = 6;
     */
    public io.arthas.api.ArthasServices.CollectionValueOrBuilder getCollectionOrBuilder() {
      if (valueCase_ == 6) {
         return (io.arthas.api.ArthasServices.CollectionValue) value_;
      }
      return io.arthas.api.ArthasServices.CollectionValue.getDefaultInstance();
    }

    public static final int MAP_FIELD_NUMBER = 7;
    /**
     * .io.arthas.api.MapValue map = 7;
     * @return Whether the map field is set.
     */
    public boolean hasMap() {
      return valueCase_ == 7;
    }
    /**
     * .io.arthas.api.MapValue map = 7;
     * @return The map.
     */
    public io.arthas.api.ArthasServices.MapValue getMap() {
      if (valueCase_ == 7) {
         return (io.arthas.api.ArthasServices.MapValue) value_;
      }
      return io.arthas.api.ArthasServices.MapValue.getDefaultInstance();
    }
    /**
     * .io.arthas.api.MapValue map = 7;
     */
    public io.arthas.api.ArthasServices.MapValueOrBuilder getMapOrBuilder() {
      if (valueCase_ == 7) {
         return (io.arthas.api.ArthasServices.MapValue) value_;
      }
      return io.arthas.api.ArthasServices.MapValue.getDefaultInstance();
    }

    public static final int UNEXPANDEDOBJECT_FIELD_NUMBER = 8;
    /**
     * .io.arthas.api.UnexpandedObject unexpandedObject = 8;
     * @return Whether the unexpandedObject field is set.
     */
    public boolean hasUnexpandedObject() {
      return valueCase_ == 8;
    }
    /**
     * .io.arthas.api.UnexpandedObject unexpandedObject = 8;
     * @return The unexpandedObject.
     */
    public io.arthas.api.ArthasServices.UnexpandedObject getUnexpandedObject() {
      if (valueCase_ == 8) {
         return (io.arthas.api.ArthasServices.UnexpandedObject) value_;
      }
      return io.arthas.api.ArthasServices.UnexpandedObject.getDefaultInstance();
    }
    /**
     * .io.arthas.api.UnexpandedObject unexpandedObject = 8;
     */
    public io.arthas.api.ArthasServices.UnexpandedObjectOrBuilder getUnexpandedObjectOrBuilder() {
      if (valueCase_ == 8) {
         return (io.arthas.api.ArthasServices.UnexpandedObject) value_;
      }
      return io.arthas.api.ArthasServices.UnexpandedObject.getDefaultInstance();
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getNameBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
      }
      if (valueCase_ == 2) {
        output.writeMessage(2, (io.arthas.api.ArthasServices.JavaObject) value_);
      }
      if (valueCase_ == 3) {
        output.writeMessage(3, (io.arthas.api.ArthasServices.BasicValue) value_);
      }
      if (valueCase_ == 4) {
        output.writeMessage(4, (io.arthas.api.ArthasServices.ArrayValue) value_);
      }
      if (valueCase_ == 5) {
        output.writeMessage(5, (io.arthas.api.ArthasServices.NullValue) value_);
      }
      if (valueCase_ == 6) {
        output.writeMessage(6, (io.arthas.api.ArthasServices.CollectionValue) value_);
      }
      if (valueCase_ == 7) {
        output.writeMessage(7, (io.arthas.api.ArthasServices.MapValue) value_);
      }
      if (valueCase_ == 8) {
        output.writeMessage(8, (io.arthas.api.ArthasServices.UnexpandedObject) value_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!getNameBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
      }
      if (valueCase_ == 2) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, (io.arthas.api.ArthasServices.JavaObject) value_);
      }
      if (valueCase_ == 3) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, (io.arthas.api.ArthasServices.BasicValue) value_);
      }
      if (valueCase_ == 4) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, (io.arthas.api.ArthasServices.ArrayValue) value_);
      }
      if (valueCase_ == 5) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, (io.arthas.api.ArthasServices.NullValue) value_);
      }
      if (valueCase_ == 6) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(6, (io.arthas.api.ArthasServices.CollectionValue) value_);
      }
      if (valueCase_ == 7) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(7, (io.arthas.api.ArthasServices.MapValue) value_);
      }
      if (valueCase_ == 8) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(8, (io.arthas.api.ArthasServices.UnexpandedObject) value_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof io.arthas.api.ArthasServices.JavaField)) {
        return super.equals(obj);
      }
      io.arthas.api.ArthasServices.JavaField other = (io.arthas.api.ArthasServices.JavaField) obj;

      if (!getName()
          .equals(other.getName())) return false;
      if (!getValueCase().equals(other.getValueCase())) return false;
      switch (valueCase_) {
        case 2:
          if (!getObjectValue()
              .equals(other.getObjectValue())) return false;
          break;
        case 3:
          if (!getBasicValue()
              .equals(other.getBasicValue())) return false;
          break;
        case 4:
          if (!getArrayValue()
              .equals(other.getArrayValue())) return false;
          break;
        case 5:
          if (!getNullValue()
              .equals(other.getNullValue())) return false;
          break;
        case 6:
          if (!getCollection()
              .equals(other.getCollection())) return false;
          break;
        case 7:
          if (!getMap()
              .equals(other.getMap())) return false;
          break;
        case 8:
          if (!getUnexpandedObject()
              .equals(other.getUnexpandedObject())) return false;
          break;
        case 0:
        default:
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + NAME_FIELD_NUMBER;
      hash = (53 * hash) + getName().hashCode();
      switch (valueCase_) {
        case 2:
          hash = (37 * hash) + OBJECTVALUE_FIELD_NUMBER;
          hash = (53 * hash) + getObjectValue().hashCode();
          break;
        case 3:
          hash = (37 * hash) + BASICVALUE_FIELD_NUMBER;
          hash = (53 * hash) + getBasicValue().hashCode();
          break;
        case 4:
          hash = (37 * hash) + ARRAYVALUE_FIELD_NUMBER;
          hash = (53 * hash) + getArrayValue().hashCode();
          break;
        case 5:
          hash = (37 * hash) + NULLVALUE_FIELD_NUMBER;
          hash = (53 * hash) + getNullValue().hashCode();
          break;
        case 6:
          hash = (37 * hash) + COLLECTION_FIELD_NUMBER;
          hash = (53 * hash) + getCollection().hashCode();
          break;
        case 7:
          hash = (37 * hash) + MAP_FIELD_NUMBER;
          hash = (53 * hash) + getMap().hashCode();
          break;
        case 8:
          hash = (37 * hash) + UNEXPANDEDOBJECT_FIELD_NUMBER;
          hash = (53 * hash) + getUnexpandedObject().hashCode();
          break;
        case 0:
        default:
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.arthas.api.ArthasServices.JavaField parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.arthas.api.ArthasServices.JavaField parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.arthas.api.ArthasServices.JavaField parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.arthas.api.ArthasServices.JavaField parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.arthas.api.ArthasServices.JavaField parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.arthas.api.ArthasServices.JavaField parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.arthas.api.ArthasServices.JavaField parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.arthas.api.ArthasServices.JavaField 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 io.arthas.api.ArthasServices.JavaField parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static io.arthas.api.ArthasServices.JavaField 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 io.arthas.api.ArthasServices.JavaField parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.arthas.api.ArthasServices.JavaField parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(io.arthas.api.ArthasServices.JavaField prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    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 io.arthas.api.JavaField}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:io.arthas.api.JavaField)
        io.arthas.api.ArthasServices.JavaFieldOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.arthas.api.ArthasServices.internal_static_io_arthas_api_JavaField_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.arthas.api.ArthasServices.internal_static_io_arthas_api_JavaField_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.arthas.api.ArthasServices.JavaField.class, io.arthas.api.ArthasServices.JavaField.Builder.class);
      }

      // Construct using io.arthas.api.ArthasServices.JavaField.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        name_ = "";

        valueCase_ = 0;
        value_ = null;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.arthas.api.ArthasServices.internal_static_io_arthas_api_JavaField_descriptor;
      }

      @java.lang.Override
      public io.arthas.api.ArthasServices.JavaField getDefaultInstanceForType() {
        return io.arthas.api.ArthasServices.JavaField.getDefaultInstance();
      }

      @java.lang.Override
      public io.arthas.api.ArthasServices.JavaField build() {
        io.arthas.api.ArthasServices.JavaField result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.arthas.api.ArthasServices.JavaField buildPartial() {
        io.arthas.api.ArthasServices.JavaField result = new io.arthas.api.ArthasServices.JavaField(this);
        result.name_ = name_;
        if (valueCase_ == 2) {
          if (objectValueBuilder_ == null) {
            result.value_ = value_;
          } else {
            result.value_ = objectValueBuilder_.build();
          }
        }
        if (valueCase_ == 3) {
          if (basicValueBuilder_ == null) {
            result.value_ = value_;
          } else {
            result.value_ = basicValueBuilder_.build();
          }
        }
        if (valueCase_ == 4) {
          if (arrayValueBuilder_ == null) {
            result.value_ = value_;
          } else {
            result.value_ = arrayValueBuilder_.build();
          }
        }
        if (valueCase_ == 5) {
          if (nullValueBuilder_ == null) {
            result.value_ = value_;
          } else {
            result.value_ = nullValueBuilder_.build();
          }
        }
        if (valueCase_ == 6) {
          if (collectionBuilder_ == null) {
            result.value_ = value_;
          } else {
            result.value_ = collectionBuilder_.build();
          }
        }
        if (valueCase_ == 7) {
          if (mapBuilder_ == null) {
            result.value_ = value_;
          } else {
            result.value_ = mapBuilder_.build();
          }
        }
        if (valueCase_ == 8) {
          if (unexpandedObjectBuilder_ == null) {
            result.value_ = value_;
          } else {
            result.value_ = unexpandedObjectBuilder_.build();
          }
        }
        result.valueCase_ = valueCase_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.arthas.api.ArthasServices.JavaField) {
          return mergeFrom((io.arthas.api.ArthasServices.JavaField)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.arthas.api.ArthasServices.JavaField other) {
        if (other == io.arthas.api.ArthasServices.JavaField.getDefaultInstance()) return this;
        if (!other.getName().isEmpty()) {
          name_ = other.name_;
          onChanged();
        }
        switch (other.getValueCase()) {
          case OBJECTVALUE: {
            mergeObjectValue(other.getObjectValue());
            break;
          }
          case BASICVALUE: {
            mergeBasicValue(other.getBasicValue());
            break;
          }
          case ARRAYVALUE: {
            mergeArrayValue(other.getArrayValue());
            break;
          }
          case NULLVALUE: {
            mergeNullValue(other.getNullValue());
            break;
          }
          case COLLECTION: {
            mergeCollection(other.getCollection());
            break;
          }
          case MAP: {
            mergeMap(other.getMap());
            break;
          }
          case UNEXPANDEDOBJECT: {
            mergeUnexpandedObject(other.getUnexpandedObject());
            break;
          }
          case VALUE_NOT_SET: {
            break;
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        io.arthas.api.ArthasServices.JavaField parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (io.arthas.api.ArthasServices.JavaField) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int valueCase_ = 0;
      private java.lang.Object value_;
      public ValueCase
          getValueCase() {
        return ValueCase.forNumber(
            valueCase_);
      }

      public Builder clearValue() {
        valueCase_ = 0;
        value_ = null;
        onChanged();
        return this;
      }


      private java.lang.Object name_ = "";
      /**
       * string name = 1;
       * @return The name.
       */
      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();
          name_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string name = 1;
       * @return The bytes for name.
       */
      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;
        }
      }
      /**
       * string name = 1;
       * @param value The name to set.
       * @return This builder for chaining.
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        name_ = value;
        onChanged();
        return this;
      }
      /**
       * string name = 1;
       * @return This builder for chaining.
       */
      public Builder clearName() {
        
        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      /**
       * string name = 1;
       * @param value The bytes for name to set.
       * @return This builder for chaining.
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        name_ = value;
        onChanged();
        return this;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          io.arthas.api.ArthasServices.JavaObject, io.arthas.api.ArthasServices.JavaObject.Builder, io.arthas.api.ArthasServices.JavaObjectOrBuilder> objectValueBuilder_;
      /**
       * .io.arthas.api.JavaObject objectValue = 2;
       * @return Whether the objectValue field is set.
       */
      public boolean hasObjectValue() {
        return valueCase_ == 2;
      }
      /**
       * .io.arthas.api.JavaObject objectValue = 2;
       * @return The objectValue.
       */
      public io.arthas.api.ArthasServices.JavaObject getObjectValue() {
        if (objectValueBuilder_ == null) {
          if (valueCase_ == 2) {
            return (io.arthas.api.ArthasServices.JavaObject) value_;
          }
          return io.arthas.api.ArthasServices.JavaObject.getDefaultInstance();
        } else {
          if (valueCase_ == 2) {
            return objectValueBuilder_.getMessage();
          }
          return io.arthas.api.ArthasServices.JavaObject.getDefaultInstance();
        }
      }
      /**
       * .io.arthas.api.JavaObject objectValue = 2;
       */
      public Builder setObjectValue(io.arthas.api.ArthasServices.JavaObject value) {
        if (objectValueBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          value_ = value;
          onChanged();
        } else {
          objectValueBuilder_.setMessage(value);
        }
        valueCase_ = 2;
        return this;
      }
      /**
       * .io.arthas.api.JavaObject objectValue = 2;
       */
      public Builder setObjectValue(
          io.arthas.api.ArthasServices.JavaObject.Builder builderForValue) {
        if (objectValueBuilder_ == null) {
          value_ = builderForValue.build();
          onChanged();
        } else {
          objectValueBuilder_.setMessage(builderForValue.build());
        }
        valueCase_ = 2;
        return this;
      }
      /**
       * .io.arthas.api.JavaObject objectValue = 2;
       */
      public Builder mergeObjectValue(io.arthas.api.ArthasServices.JavaObject value) {
        if (objectValueBuilder_ == null) {
          if (valueCase_ == 2 &&
              value_ != io.arthas.api.ArthasServices.JavaObject.getDefaultInstance()) {
            value_ = io.arthas.api.ArthasServices.JavaObject.newBuilder((io.arthas.api.ArthasServices.JavaObject) value_)
                .mergeFrom(value).buildPartial();
          } else {
            value_ = value;
          }
          onChanged();
        } else {
          if (valueCase_ == 2) {
            objectValueBuilder_.mergeFrom(value);
          }
          objectValueBuilder_.setMessage(value);
        }
        valueCase_ = 2;
        return this;
      }
      /**
       * .io.arthas.api.JavaObject objectValue = 2;
       */
      public Builder clearObjectValue() {
        if (objectValueBuilder_ == null) {
          if (valueCase_ == 2) {
            valueCase_ = 0;
            value_ = null;
            onChanged();
          }
        } else {
          if (valueCase_ == 2) {
            valueCase_ = 0;
            value_ = null;
          }
          objectValueBuilder_.clear();
        }
        return this;
      }
      /**
       * .io.arthas.api.JavaObject objectValue = 2;
       */
      public io.arthas.api.ArthasServices.JavaObject.Builder getObjectValueBuilder() {
        return getObjectValueFieldBuilder().getBuilder();
      }
      /**
       * .io.arthas.api.JavaObject objectValue = 2;
       */
      public io.arthas.api.ArthasServices.JavaObjectOrBuilder getObjectValueOrBuilder() {
        if ((valueCase_ == 2) && (objectValueBuilder_ != null)) {
          return objectValueBuilder_.getMessageOrBuilder();
        } else {
          if (valueCase_ == 2) {
            return (io.arthas.api.ArthasServices.JavaObject) value_;
          }
          return io.arthas.api.ArthasServices.JavaObject.getDefaultInstance();
        }
      }
      /**
       * .io.arthas.api.JavaObject objectValue = 2;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          io.arthas.api.ArthasServices.JavaObject, io.arthas.api.ArthasServices.JavaObject.Builder, io.arthas.api.ArthasServices.JavaObjectOrBuilder> 
          getObjectValueFieldBuilder() {
        if (objectValueBuilder_ == null) {
          if (!(valueCase_ == 2)) {
            value_ = io.arthas.api.ArthasServices.JavaObject.getDefaultInstance();
          }
          objectValueBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              io.arthas.api.ArthasServices.JavaObject, io.arthas.api.ArthasServices.JavaObject.Builder, io.arthas.api.ArthasServices.JavaObjectOrBuilder>(
                  (io.arthas.api.ArthasServices.JavaObject) value_,
                  getParentForChildren(),
                  isClean());
          value_ = null;
        }
        valueCase_ = 2;
        onChanged();;
        return objectValueBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          io.arthas.api.ArthasServices.BasicValue, io.arthas.api.ArthasServices.BasicValue.Builder, io.arthas.api.ArthasServices.BasicValueOrBuilder> basicValueBuilder_;
      /**
       * .io.arthas.api.BasicValue basicValue = 3;
       * @return Whether the basicValue field is set.
       */
      public boolean hasBasicValue() {
        return valueCase_ == 3;
      }
      /**
       * .io.arthas.api.BasicValue basicValue = 3;
       * @return The basicValue.
       */
      public io.arthas.api.ArthasServices.BasicValue getBasicValue() {
        if (basicValueBuilder_ == null) {
          if (valueCase_ == 3) {
            return (io.arthas.api.ArthasServices.BasicValue) value_;
          }
          return io.arthas.api.ArthasServices.BasicValue.getDefaultInstance();
        } else {
          if (valueCase_ == 3) {
            return basicValueBuilder_.getMessage();
          }
          return io.arthas.api.ArthasServices.BasicValue.getDefaultInstance();
        }
      }
      /**
       * .io.arthas.api.BasicValue basicValue = 3;
       */
      public Builder setBasicValue(io.arthas.api.ArthasServices.BasicValue value) {
        if (basicValueBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          value_ = value;
          onChanged();
        } else {
          basicValueBuilder_.setMessage(value);
        }
        valueCase_ = 3;
        return this;
      }
      /**
       * .io.arthas.api.BasicValue basicValue = 3;
       */
      public Builder setBasicValue(
          io.arthas.api.ArthasServices.BasicValue.Builder builderForValue) {
        if (basicValueBuilder_ == null) {
          value_ = builderForValue.build();
          onChanged();
        } else {
          basicValueBuilder_.setMessage(builderForValue.build());
        }
        valueCase_ = 3;
        return this;
      }
      /**
       * .io.arthas.api.BasicValue basicValue = 3;
       */
      public Builder mergeBasicValue(io.arthas.api.ArthasServices.BasicValue value) {
        if (basicValueBuilder_ == null) {
          if (valueCase_ == 3 &&
              value_ != io.arthas.api.ArthasServices.BasicValue.getDefaultInstance()) {
            value_ = io.arthas.api.ArthasServices.BasicValue.newBuilder((io.arthas.api.ArthasServices.BasicValue) value_)
                .mergeFrom(value).buildPartial();
          } else {
            value_ = value;
          }
          onChanged();
        } else {
          if (valueCase_ == 3) {
            basicValueBuilder_.mergeFrom(value);
          }
          basicValueBuilder_.setMessage(value);
        }
        valueCase_ = 3;
        return this;
      }
      /**
       * .io.arthas.api.BasicValue basicValue = 3;
       */
      public Builder clearBasicValue() {
        if (basicValueBuilder_ == null) {
          if (valueCase_ == 3) {
            valueCase_ = 0;
            value_ = null;
            onChanged();
          }
        } else {
          if (valueCase_ == 3) {
            valueCase_ = 0;
            value_ = null;
          }
          basicValueBuilder_.clear();
        }
        return this;
      }
      /**
       * .io.arthas.api.BasicValue basicValue = 3;
       */
      public io.arthas.api.ArthasServices.BasicValue.Builder getBasicValueBuilder() {
        return getBasicValueFieldBuilder().getBuilder();
      }
      /**
       * .io.arthas.api.BasicValue basicValue = 3;
       */
      public io.arthas.api.ArthasServices.BasicValueOrBuilder getBasicValueOrBuilder() {
        if ((valueCase_ == 3) && (basicValueBuilder_ != null)) {
          return basicValueBuilder_.getMessageOrBuilder();
        } else {
          if (valueCase_ == 3) {
            return (io.arthas.api.ArthasServices.BasicValue) value_;
          }
          return io.arthas.api.ArthasServices.BasicValue.getDefaultInstance();
        }
      }
      /**
       * .io.arthas.api.BasicValue basicValue = 3;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          io.arthas.api.ArthasServices.BasicValue, io.arthas.api.ArthasServices.BasicValue.Builder, io.arthas.api.ArthasServices.BasicValueOrBuilder> 
          getBasicValueFieldBuilder() {
        if (basicValueBuilder_ == null) {
          if (!(valueCase_ == 3)) {
            value_ = io.arthas.api.ArthasServices.BasicValue.getDefaultInstance();
          }
          basicValueBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              io.arthas.api.ArthasServices.BasicValue, io.arthas.api.ArthasServices.BasicValue.Builder, io.arthas.api.ArthasServices.BasicValueOrBuilder>(
                  (io.arthas.api.ArthasServices.BasicValue) value_,
                  getParentForChildren(),
                  isClean());
          value_ = null;
        }
        valueCase_ = 3;
        onChanged();;
        return basicValueBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          io.arthas.api.ArthasServices.ArrayValue, io.arthas.api.ArthasServices.ArrayValue.Builder, io.arthas.api.ArthasServices.ArrayValueOrBuilder> arrayValueBuilder_;
      /**
       * .io.arthas.api.ArrayValue arrayValue = 4;
       * @return Whether the arrayValue field is set.
       */
      public boolean hasArrayValue() {
        return valueCase_ == 4;
      }
      /**
       * .io.arthas.api.ArrayValue arrayValue = 4;
       * @return The arrayValue.
       */
      public io.arthas.api.ArthasServices.ArrayValue getArrayValue() {
        if (arrayValueBuilder_ == null) {
          if (valueCase_ == 4) {
            return (io.arthas.api.ArthasServices.ArrayValue) value_;
          }
          return io.arthas.api.ArthasServices.ArrayValue.getDefaultInstance();
        } else {
          if (valueCase_ == 4) {
            return arrayValueBuilder_.getMessage();
          }
          return io.arthas.api.ArthasServices.ArrayValue.getDefaultInstance();
        }
      }
      /**
       * .io.arthas.api.ArrayValue arrayValue = 4;
       */
      public Builder setArrayValue(io.arthas.api.ArthasServices.ArrayValue value) {
        if (arrayValueBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          value_ = value;
          onChanged();
        } else {
          arrayValueBuilder_.setMessage(value);
        }
        valueCase_ = 4;
        return this;
      }
      /**
       * .io.arthas.api.ArrayValue arrayValue = 4;
       */
      public Builder setArrayValue(
          io.arthas.api.ArthasServices.ArrayValue.Builder builderForValue) {
        if (arrayValueBuilder_ == null) {
          value_ = builderForValue.build();
          onChanged();
        } else {
          arrayValueBuilder_.setMessage(builderForValue.build());
        }
        valueCase_ = 4;
        return this;
      }
      /**
       * .io.arthas.api.ArrayValue arrayValue = 4;
       */
      public Builder mergeArrayValue(io.arthas.api.ArthasServices.ArrayValue value) {
        if (arrayValueBuilder_ == null) {
          if (valueCase_ == 4 &&
              value_ != io.arthas.api.ArthasServices.ArrayValue.getDefaultInstance()) {
            value_ = io.arthas.api.ArthasServices.ArrayValue.newBuilder((io.arthas.api.ArthasServices.ArrayValue) value_)
                .mergeFrom(value).buildPartial();
          } else {
            value_ = value;
          }
          onChanged();
        } else {
          if (valueCase_ == 4) {
            arrayValueBuilder_.mergeFrom(value);
          }
          arrayValueBuilder_.setMessage(value);
        }
        valueCase_ = 4;
        return this;
      }
      /**
       * .io.arthas.api.ArrayValue arrayValue = 4;
       */
      public Builder clearArrayValue() {
        if (arrayValueBuilder_ == null) {
          if (valueCase_ == 4) {
            valueCase_ = 0;
            value_ = null;
            onChanged();
          }
        } else {
          if (valueCase_ == 4) {
            valueCase_ = 0;
            value_ = null;
          }
          arrayValueBuilder_.clear();
        }
        return this;
      }
      /**
       * .io.arthas.api.ArrayValue arrayValue = 4;
       */
      public io.arthas.api.ArthasServices.ArrayValue.Builder getArrayValueBuilder() {
        return getArrayValueFieldBuilder().getBuilder();
      }
      /**
       * .io.arthas.api.ArrayValue arrayValue = 4;
       */
      public io.arthas.api.ArthasServices.ArrayValueOrBuilder getArrayValueOrBuilder() {
        if ((valueCase_ == 4) && (arrayValueBuilder_ != null)) {
          return arrayValueBuilder_.getMessageOrBuilder();
        } else {
          if (valueCase_ == 4) {
            return (io.arthas.api.ArthasServices.ArrayValue) value_;
          }
          return io.arthas.api.ArthasServices.ArrayValue.getDefaultInstance();
        }
      }
      /**
       * .io.arthas.api.ArrayValue arrayValue = 4;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          io.arthas.api.ArthasServices.ArrayValue, io.arthas.api.ArthasServices.ArrayValue.Builder, io.arthas.api.ArthasServices.ArrayValueOrBuilder> 
          getArrayValueFieldBuilder() {
        if (arrayValueBuilder_ == null) {
          if (!(valueCase_ == 4)) {
            value_ = io.arthas.api.ArthasServices.ArrayValue.getDefaultInstance();
          }
          arrayValueBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              io.arthas.api.ArthasServices.ArrayValue, io.arthas.api.ArthasServices.ArrayValue.Builder, io.arthas.api.ArthasServices.ArrayValueOrBuilder>(
                  (io.arthas.api.ArthasServices.ArrayValue) value_,
                  getParentForChildren(),
                  isClean());
          value_ = null;
        }
        valueCase_ = 4;
        onChanged();;
        return arrayValueBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          io.arthas.api.ArthasServices.NullValue, io.arthas.api.ArthasServices.NullValue.Builder, io.arthas.api.ArthasServices.NullValueOrBuilder> nullValueBuilder_;
      /**
       * .io.arthas.api.NullValue nullValue = 5;
       * @return Whether the nullValue field is set.
       */
      public boolean hasNullValue() {
        return valueCase_ == 5;
      }
      /**
       * .io.arthas.api.NullValue nullValue = 5;
       * @return The nullValue.
       */
      public io.arthas.api.ArthasServices.NullValue getNullValue() {
        if (nullValueBuilder_ == null) {
          if (valueCase_ == 5) {
            return (io.arthas.api.ArthasServices.NullValue) value_;
          }
          return io.arthas.api.ArthasServices.NullValue.getDefaultInstance();
        } else {
          if (valueCase_ == 5) {
            return nullValueBuilder_.getMessage();
          }
          return io.arthas.api.ArthasServices.NullValue.getDefaultInstance();
        }
      }
      /**
       * .io.arthas.api.NullValue nullValue = 5;
       */
      public Builder setNullValue(io.arthas.api.ArthasServices.NullValue value) {
        if (nullValueBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          value_ = value;
          onChanged();
        } else {
          nullValueBuilder_.setMessage(value);
        }
        valueCase_ = 5;
        return this;
      }
      /**
       * .io.arthas.api.NullValue nullValue = 5;
       */
      public Builder setNullValue(
          io.arthas.api.ArthasServices.NullValue.Builder builderForValue) {
        if (nullValueBuilder_ == null) {
          value_ = builderForValue.build();
          onChanged();
        } else {
          nullValueBuilder_.setMessage(builderForValue.build());
        }
        valueCase_ = 5;
        return this;
      }
      /**
       * .io.arthas.api.NullValue nullValue = 5;
       */
      public Builder mergeNullValue(io.arthas.api.ArthasServices.NullValue value) {
        if (nullValueBuilder_ == null) {
          if (valueCase_ == 5 &&
              value_ != io.arthas.api.ArthasServices.NullValue.getDefaultInstance()) {
            value_ = io.arthas.api.ArthasServices.NullValue.newBuilder((io.arthas.api.ArthasServices.NullValue) value_)
                .mergeFrom(value).buildPartial();
          } else {
            value_ = value;
          }
          onChanged();
        } else {
          if (valueCase_ == 5) {
            nullValueBuilder_.mergeFrom(value);
          }
          nullValueBuilder_.setMessage(value);
        }
        valueCase_ = 5;
        return this;
      }
      /**
       * .io.arthas.api.NullValue nullValue = 5;
       */
      public Builder clearNullValue() {
        if (nullValueBuilder_ == null) {
          if (valueCase_ == 5) {
            valueCase_ = 0;
            value_ = null;
            onChanged();
          }
        } else {
          if (valueCase_ == 5) {
            valueCase_ = 0;
            value_ = null;
          }
          nullValueBuilder_.clear();
        }
        return this;
      }
      /**
       * .io.arthas.api.NullValue nullValue = 5;
       */
      public io.arthas.api.ArthasServices.NullValue.Builder getNullValueBuilder() {
        return getNullValueFieldBuilder().getBuilder();
      }
      /**
       * .io.arthas.api.NullValue nullValue = 5;
       */
      public io.arthas.api.ArthasServices.NullValueOrBuilder getNullValueOrBuilder() {
        if ((valueCase_ == 5) && (nullValueBuilder_ != null)) {
          return nullValueBuilder_.getMessageOrBuilder();
        } else {
          if (valueCase_ == 5) {
            return (io.arthas.api.ArthasServices.NullValue) value_;
          }
          return io.arthas.api.ArthasServices.NullValue.getDefaultInstance();
        }
      }
      /**
       * .io.arthas.api.NullValue nullValue = 5;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          io.arthas.api.ArthasServices.NullValue, io.arthas.api.ArthasServices.NullValue.Builder, io.arthas.api.ArthasServices.NullValueOrBuilder> 
          getNullValueFieldBuilder() {
        if (nullValueBuilder_ == null) {
          if (!(valueCase_ == 5)) {
            value_ = io.arthas.api.ArthasServices.NullValue.getDefaultInstance();
          }
          nullValueBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              io.arthas.api.ArthasServices.NullValue, io.arthas.api.ArthasServices.NullValue.Builder, io.arthas.api.ArthasServices.NullValueOrBuilder>(
                  (io.arthas.api.ArthasServices.NullValue) value_,
                  getParentForChildren(),
                  isClean());
          value_ = null;
        }
        valueCase_ = 5;
        onChanged();;
        return nullValueBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          io.arthas.api.ArthasServices.CollectionValue, io.arthas.api.ArthasServices.CollectionValue.Builder, io.arthas.api.ArthasServices.CollectionValueOrBuilder> collectionBuilder_;
      /**
       * .io.arthas.api.CollectionValue collection = 6;
       * @return Whether the collection field is set.
       */
      public boolean hasCollection() {
        return valueCase_ == 6;
      }
      /**
       * .io.arthas.api.CollectionValue collection = 6;
       * @return The collection.
       */
      public io.arthas.api.ArthasServices.CollectionValue getCollection() {
        if (collectionBuilder_ == null) {
          if (valueCase_ == 6) {
            return (io.arthas.api.ArthasServices.CollectionValue) value_;
          }
          return io.arthas.api.ArthasServices.CollectionValue.getDefaultInstance();
        } else {
          if (valueCase_ == 6) {
            return collectionBuilder_.getMessage();
          }
          return io.arthas.api.ArthasServices.CollectionValue.getDefaultInstance();
        }
      }
      /**
       * .io.arthas.api.CollectionValue collection = 6;
       */
      public Builder setCollection(io.arthas.api.ArthasServices.CollectionValue value) {
        if (collectionBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          value_ = value;
          onChanged();
        } else {
          collectionBuilder_.setMessage(value);
        }
        valueCase_ = 6;
        return this;
      }
      /**
       * .io.arthas.api.CollectionValue collection = 6;
       */
      public Builder setCollection(
          io.arthas.api.ArthasServices.CollectionValue.Builder builderForValue) {
        if (collectionBuilder_ == null) {
          value_ = builderForValue.build();
          onChanged();
        } else {
          collectionBuilder_.setMessage(builderForValue.build());
        }
        valueCase_ = 6;
        return this;
      }
      /**
       * .io.arthas.api.CollectionValue collection = 6;
       */
      public Builder mergeCollection(io.arthas.api.ArthasServices.CollectionValue value) {
        if (collectionBuilder_ == null) {
          if (valueCase_ == 6 &&
              value_ != io.arthas.api.ArthasServices.CollectionValue.getDefaultInstance()) {
            value_ = io.arthas.api.ArthasServices.CollectionValue.newBuilder((io.arthas.api.ArthasServices.CollectionValue) value_)
                .mergeFrom(value).buildPartial();
          } else {
            value_ = value;
          }
          onChanged();
        } else {
          if (valueCase_ == 6) {
            collectionBuilder_.mergeFrom(value);
          }
          collectionBuilder_.setMessage(value);
        }
        valueCase_ = 6;
        return this;
      }
      /**
       * .io.arthas.api.CollectionValue collection = 6;
       */
      public Builder clearCollection() {
        if (collectionBuilder_ == null) {
          if (valueCase_ == 6) {
            valueCase_ = 0;
            value_ = null;
            onChanged();
          }
        } else {
          if (valueCase_ == 6) {
            valueCase_ = 0;
            value_ = null;
          }
          collectionBuilder_.clear();
        }
        return this;
      }
      /**
       * .io.arthas.api.CollectionValue collection = 6;
       */
      public io.arthas.api.ArthasServices.CollectionValue.Builder getCollectionBuilder() {
        return getCollectionFieldBuilder().getBuilder();
      }
      /**
       * .io.arthas.api.CollectionValue collection = 6;
       */
      public io.arthas.api.ArthasServices.CollectionValueOrBuilder getCollectionOrBuilder() {
        if ((valueCase_ == 6) && (collectionBuilder_ != null)) {
          return collectionBuilder_.getMessageOrBuilder();
        } else {
          if (valueCase_ == 6) {
            return (io.arthas.api.ArthasServices.CollectionValue) value_;
          }
          return io.arthas.api.ArthasServices.CollectionValue.getDefaultInstance();
        }
      }
      /**
       * .io.arthas.api.CollectionValue collection = 6;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          io.arthas.api.ArthasServices.CollectionValue, io.arthas.api.ArthasServices.CollectionValue.Builder, io.arthas.api.ArthasServices.CollectionValueOrBuilder> 
          getCollectionFieldBuilder() {
        if (collectionBuilder_ == null) {
          if (!(valueCase_ == 6)) {
            value_ = io.arthas.api.ArthasServices.CollectionValue.getDefaultInstance();
          }
          collectionBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              io.arthas.api.ArthasServices.CollectionValue, io.arthas.api.ArthasServices.CollectionValue.Builder, io.arthas.api.ArthasServices.CollectionValueOrBuilder>(
                  (io.arthas.api.ArthasServices.CollectionValue) value_,
                  getParentForChildren(),
                  isClean());
          value_ = null;
        }
        valueCase_ = 6;
        onChanged();;
        return collectionBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          io.arthas.api.ArthasServices.MapValue, io.arthas.api.ArthasServices.MapValue.Builder, io.arthas.api.ArthasServices.MapValueOrBuilder> mapBuilder_;
      /**
       * .io.arthas.api.MapValue map = 7;
       * @return Whether the map field is set.
       */
      public boolean hasMap() {
        return valueCase_ == 7;
      }
      /**
       * .io.arthas.api.MapValue map = 7;
       * @return The map.
       */
      public io.arthas.api.ArthasServices.MapValue getMap() {
        if (mapBuilder_ == null) {
          if (valueCase_ == 7) {
            return (io.arthas.api.ArthasServices.MapValue) value_;
          }
          return io.arthas.api.ArthasServices.MapValue.getDefaultInstance();
        } else {
          if (valueCase_ == 7) {
            return mapBuilder_.getMessage();
          }
          return io.arthas.api.ArthasServices.MapValue.getDefaultInstance();
        }
      }
      /**
       * .io.arthas.api.MapValue map = 7;
       */
      public Builder setMap(io.arthas.api.ArthasServices.MapValue value) {
        if (mapBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          value_ = value;
          onChanged();
        } else {
          mapBuilder_.setMessage(value);
        }
        valueCase_ = 7;
        return this;
      }
      /**
       * .io.arthas.api.MapValue map = 7;
       */
      public Builder setMap(
          io.arthas.api.ArthasServices.MapValue.Builder builderForValue) {
        if (mapBuilder_ == null) {
          value_ = builderForValue.build();
          onChanged();
        } else {
          mapBuilder_.setMessage(builderForValue.build());
        }
        valueCase_ = 7;
        return this;
      }
      /**
       * .io.arthas.api.MapValue map = 7;
       */
      public Builder mergeMap(io.arthas.api.ArthasServices.MapValue value) {
        if (mapBuilder_ == null) {
          if (valueCase_ == 7 &&
              value_ != io.arthas.api.ArthasServices.MapValue.getDefaultInstance()) {
            value_ = io.arthas.api.ArthasServices.MapValue.newBuilder((io.arthas.api.ArthasServices.MapValue) value_)
                .mergeFrom(value).buildPartial();
          } else {
            value_ = value;
          }
          onChanged();
        } else {
          if (valueCase_ == 7) {
            mapBuilder_.mergeFrom(value);
          }
          mapBuilder_.setMessage(value);
        }
        valueCase_ = 7;
        return this;
      }
      /**
       * .io.arthas.api.MapValue map = 7;
       */
      public Builder clearMap() {
        if (mapBuilder_ == null) {
          if (valueCase_ == 7) {
            valueCase_ = 0;
            value_ = null;
            onChanged();
          }
        } else {
          if (valueCase_ == 7) {
            valueCase_ = 0;
            value_ = null;
          }
          mapBuilder_.clear();
        }
        return this;
      }
      /**
       * .io.arthas.api.MapValue map = 7;
       */
      public io.arthas.api.ArthasServices.MapValue.Builder getMapBuilder() {
        return getMapFieldBuilder().getBuilder();
      }
      /**
       * .io.arthas.api.MapValue map = 7;
       */
      public io.arthas.api.ArthasServices.MapValueOrBuilder getMapOrBuilder() {
        if ((valueCase_ == 7) && (mapBuilder_ != null)) {
          return mapBuilder_.getMessageOrBuilder();
        } else {
          if (valueCase_ == 7) {
            return (io.arthas.api.ArthasServices.MapValue) value_;
          }
          return io.arthas.api.ArthasServices.MapValue.getDefaultInstance();
        }
      }
      /**
       * .io.arthas.api.MapValue map = 7;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          io.arthas.api.ArthasServices.MapValue, io.arthas.api.ArthasServices.MapValue.Builder, io.arthas.api.ArthasServices.MapValueOrBuilder> 
          getMapFieldBuilder() {
        if (mapBuilder_ == null) {
          if (!(valueCase_ == 7)) {
            value_ = io.arthas.api.ArthasServices.MapValue.getDefaultInstance();
          }
          mapBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              io.arthas.api.ArthasServices.MapValue, io.arthas.api.ArthasServices.MapValue.Builder, io.arthas.api.ArthasServices.MapValueOrBuilder>(
                  (io.arthas.api.ArthasServices.MapValue) value_,
                  getParentForChildren(),
                  isClean());
          value_ = null;
        }
        valueCase_ = 7;
        onChanged();;
        return mapBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          io.arthas.api.ArthasServices.UnexpandedObject, io.arthas.api.ArthasServices.UnexpandedObject.Builder, io.arthas.api.ArthasServices.UnexpandedObjectOrBuilder> unexpandedObjectBuilder_;
      /**
       * .io.arthas.api.UnexpandedObject unexpandedObject = 8;
       * @return Whether the unexpandedObject field is set.
       */
      public boolean hasUnexpandedObject() {
        return valueCase_ == 8;
      }
      /**
       * .io.arthas.api.UnexpandedObject unexpandedObject = 8;
       * @return The unexpandedObject.
       */
      public io.arthas.api.ArthasServices.UnexpandedObject getUnexpandedObject() {
        if (unexpandedObjectBuilder_ == null) {
          if (valueCase_ == 8) {
            return (io.arthas.api.ArthasServices.UnexpandedObject) value_;
          }
          return io.arthas.api.ArthasServices.UnexpandedObject.getDefaultInstance();
        } else {
          if (valueCase_ == 8) {
            return unexpandedObjectBuilder_.getMessage();
          }
          return io.arthas.api.ArthasServices.UnexpandedObject.getDefaultInstance();
        }
      }
      /**
       * .io.arthas.api.UnexpandedObject unexpandedObject = 8;
       */
      public Builder setUnexpandedObject(io.arthas.api.ArthasServices.UnexpandedObject value) {
        if (unexpandedObjectBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          value_ = value;
          onChanged();
        } else {
          unexpandedObjectBuilder_.setMessage(value);
        }
        valueCase_ = 8;
        return this;
      }
      /**
       * .io.arthas.api.UnexpandedObject unexpandedObject = 8;
       */
      public Builder setUnexpandedObject(
          io.arthas.api.ArthasServices.UnexpandedObject.Builder builderForValue) {
        if (unexpandedObjectBuilder_ == null) {
          value_ = builderForValue.build();
          onChanged();
        } else {
          unexpandedObjectBuilder_.setMessage(builderForValue.build());
        }
        valueCase_ = 8;
        return this;
      }
      /**
       * .io.arthas.api.UnexpandedObject unexpandedObject = 8;
       */
      public Builder mergeUnexpandedObject(io.arthas.api.ArthasServices.UnexpandedObject value) {
        if (unexpandedObjectBuilder_ == null) {
          if (valueCase_ == 8 &&
              value_ != io.arthas.api.ArthasServices.UnexpandedObject.getDefaultInstance()) {
            value_ = io.arthas.api.ArthasServices.UnexpandedObject.newBuilder((io.arthas.api.ArthasServices.UnexpandedObject) value_)
                .mergeFrom(value).buildPartial();
          } else {
            value_ = value;
          }
          onChanged();
        } else {
          if (valueCase_ == 8) {
            unexpandedObjectBuilder_.mergeFrom(value);
          }
          unexpandedObjectBuilder_.setMessage(value);
        }
        valueCase_ = 8;
        return this;
      }
      /**
       * .io.arthas.api.UnexpandedObject unexpandedObject = 8;
       */
      public Builder clearUnexpandedObject() {
        if (unexpandedObjectBuilder_ == null) {
          if (valueCase_ == 8) {
            valueCase_ = 0;
            value_ = null;
            onChanged();
          }
        } else {
          if (valueCase_ == 8) {
            valueCase_ = 0;
            value_ = null;
          }
          unexpandedObjectBuilder_.clear();
        }
        return this;
      }
      /**
       * .io.arthas.api.UnexpandedObject unexpandedObject = 8;
       */
      public io.arthas.api.ArthasServices.UnexpandedObject.Builder getUnexpandedObjectBuilder() {
        return getUnexpandedObjectFieldBuilder().getBuilder();
      }
      /**
       * .io.arthas.api.UnexpandedObject unexpandedObject = 8;
       */
      public io.arthas.api.ArthasServices.UnexpandedObjectOrBuilder getUnexpandedObjectOrBuilder() {
        if ((valueCase_ == 8) && (unexpandedObjectBuilder_ != null)) {
          return unexpandedObjectBuilder_.getMessageOrBuilder();
        } else {
          if (valueCase_ == 8) {
            return (io.arthas.api.ArthasServices.UnexpandedObject) value_;
          }
          return io.arthas.api.ArthasServices.UnexpandedObject.getDefaultInstance();
        }
      }
      /**
       * .io.arthas.api.UnexpandedObject unexpandedObject = 8;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          io.arthas.api.ArthasServices.UnexpandedObject, io.arthas.api.ArthasServices.UnexpandedObject.Builder, io.arthas.api.ArthasServices.UnexpandedObjectOrBuilder> 
          getUnexpandedObjectFieldBuilder() {
        if (unexpandedObjectBuilder_ == null) {
          if (!(valueCase_ == 8)) {
            value_ = io.arthas.api.ArthasServices.UnexpandedObject.getDefaultInstance();
          }
          unexpandedObjectBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              io.arthas.api.ArthasServices.UnexpandedObject, io.arthas.api.ArthasServices.UnexpandedObject.Builder, io.arthas.api.ArthasServices.UnexpandedObjectOrBuilder>(
                  (io.arthas.api.ArthasServices.UnexpandedObject) value_,
                  getParentForChildren(),
                  isClean());
          value_ = null;
        }
        valueCase_ = 8;
        onChanged();;
        return unexpandedObjectBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:io.arthas.api.JavaField)
    }

    // @@protoc_insertion_point(class_scope:io.arthas.api.JavaField)
    private static final io.arthas.api.ArthasServices.JavaField DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.arthas.api.ArthasServices.JavaField();
    }

    public static io.arthas.api.ArthasServices.JavaField getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public JavaField parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new JavaField(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.arthas.api.ArthasServices.JavaField getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface JavaFieldsOrBuilder extends
      // @@protoc_insertion_point(interface_extends:io.arthas.api.JavaFields)
      com.google.protobuf.MessageOrBuilder {

    /**
     * repeated .io.arthas.api.JavaField fields = 1;
     */
    java.util.List 
        getFieldsList();
    /**
     * repeated .io.arthas.api.JavaField fields = 1;
     */
    io.arthas.api.ArthasServices.JavaField getFields(int index);
    /**
     * repeated .io.arthas.api.JavaField fields = 1;
     */
    int getFieldsCount();
    /**
     * repeated .io.arthas.api.JavaField fields = 1;
     */
    java.util.List 
        getFieldsOrBuilderList();
    /**
     * repeated .io.arthas.api.JavaField fields = 1;
     */
    io.arthas.api.ArthasServices.JavaFieldOrBuilder getFieldsOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code io.arthas.api.JavaFields}
   */
  public  static final class JavaFields extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:io.arthas.api.JavaFields)
      JavaFieldsOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use JavaFields.newBuilder() to construct.
    private JavaFields(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private JavaFields() {
      fields_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new JavaFields();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private JavaFields(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                fields_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000001;
              }
              fields_.add(
                  input.readMessage(io.arthas.api.ArthasServices.JavaField.parser(), extensionRegistry));
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              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) != 0)) {
          fields_ = java.util.Collections.unmodifiableList(fields_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.arthas.api.ArthasServices.internal_static_io_arthas_api_JavaFields_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.arthas.api.ArthasServices.internal_static_io_arthas_api_JavaFields_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.arthas.api.ArthasServices.JavaFields.class, io.arthas.api.ArthasServices.JavaFields.Builder.class);
    }

    public static final int FIELDS_FIELD_NUMBER = 1;
    private java.util.List fields_;
    /**
     * repeated .io.arthas.api.JavaField fields = 1;
     */
    public java.util.List getFieldsList() {
      return fields_;
    }
    /**
     * repeated .io.arthas.api.JavaField fields = 1;
     */
    public java.util.List 
        getFieldsOrBuilderList() {
      return fields_;
    }
    /**
     * repeated .io.arthas.api.JavaField fields = 1;
     */
    public int getFieldsCount() {
      return fields_.size();
    }
    /**
     * repeated .io.arthas.api.JavaField fields = 1;
     */
    public io.arthas.api.ArthasServices.JavaField getFields(int index) {
      return fields_.get(index);
    }
    /**
     * repeated .io.arthas.api.JavaField fields = 1;
     */
    public io.arthas.api.ArthasServices.JavaFieldOrBuilder getFieldsOrBuilder(
        int index) {
      return fields_.get(index);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < fields_.size(); i++) {
        output.writeMessage(1, fields_.get(i));
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < fields_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, fields_.get(i));
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof io.arthas.api.ArthasServices.JavaFields)) {
        return super.equals(obj);
      }
      io.arthas.api.ArthasServices.JavaFields other = (io.arthas.api.ArthasServices.JavaFields) obj;

      if (!getFieldsList()
          .equals(other.getFieldsList())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getFieldsCount() > 0) {
        hash = (37 * hash) + FIELDS_FIELD_NUMBER;
        hash = (53 * hash) + getFieldsList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.arthas.api.ArthasServices.JavaFields parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.arthas.api.ArthasServices.JavaFields parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.arthas.api.ArthasServices.JavaFields parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.arthas.api.ArthasServices.JavaFields parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.arthas.api.ArthasServices.JavaFields parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.arthas.api.ArthasServices.JavaFields parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.arthas.api.ArthasServices.JavaFields parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.arthas.api.ArthasServices.JavaFields 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 io.arthas.api.ArthasServices.JavaFields parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static io.arthas.api.ArthasServices.JavaFields 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 io.arthas.api.ArthasServices.JavaFields parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.arthas.api.ArthasServices.JavaFields parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(io.arthas.api.ArthasServices.JavaFields prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    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 io.arthas.api.JavaFields}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:io.arthas.api.JavaFields)
        io.arthas.api.ArthasServices.JavaFieldsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.arthas.api.ArthasServices.internal_static_io_arthas_api_JavaFields_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.arthas.api.ArthasServices.internal_static_io_arthas_api_JavaFields_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.arthas.api.ArthasServices.JavaFields.class, io.arthas.api.ArthasServices.JavaFields.Builder.class);
      }

      // Construct using io.arthas.api.ArthasServices.JavaFields.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getFieldsFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (fieldsBuilder_ == null) {
          fields_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          fieldsBuilder_.clear();
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.arthas.api.ArthasServices.internal_static_io_arthas_api_JavaFields_descriptor;
      }

      @java.lang.Override
      public io.arthas.api.ArthasServices.JavaFields getDefaultInstanceForType() {
        return io.arthas.api.ArthasServices.JavaFields.getDefaultInstance();
      }

      @java.lang.Override
      public io.arthas.api.ArthasServices.JavaFields build() {
        io.arthas.api.ArthasServices.JavaFields result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.arthas.api.ArthasServices.JavaFields buildPartial() {
        io.arthas.api.ArthasServices.JavaFields result = new io.arthas.api.ArthasServices.JavaFields(this);
        int from_bitField0_ = bitField0_;
        if (fieldsBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            fields_ = java.util.Collections.unmodifiableList(fields_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.fields_ = fields_;
        } else {
          result.fields_ = fieldsBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.arthas.api.ArthasServices.JavaFields) {
          return mergeFrom((io.arthas.api.ArthasServices.JavaFields)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.arthas.api.ArthasServices.JavaFields other) {
        if (other == io.arthas.api.ArthasServices.JavaFields.getDefaultInstance()) return this;
        if (fieldsBuilder_ == null) {
          if (!other.fields_.isEmpty()) {
            if (fields_.isEmpty()) {
              fields_ = other.fields_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureFieldsIsMutable();
              fields_.addAll(other.fields_);
            }
            onChanged();
          }
        } else {
          if (!other.fields_.isEmpty()) {
            if (fieldsBuilder_.isEmpty()) {
              fieldsBuilder_.dispose();
              fieldsBuilder_ = null;
              fields_ = other.fields_;
              bitField0_ = (bitField0_ & ~0x00000001);
              fieldsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getFieldsFieldBuilder() : null;
            } else {
              fieldsBuilder_.addAllMessages(other.fields_);
            }
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        io.arthas.api.ArthasServices.JavaFields parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (io.arthas.api.ArthasServices.JavaFields) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.util.List fields_ =
        java.util.Collections.emptyList();
      private void ensureFieldsIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          fields_ = new java.util.ArrayList(fields_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          io.arthas.api.ArthasServices.JavaField, io.arthas.api.ArthasServices.JavaField.Builder, io.arthas.api.ArthasServices.JavaFieldOrBuilder> fieldsBuilder_;

      /**
       * repeated .io.arthas.api.JavaField fields = 1;
       */
      public java.util.List getFieldsList() {
        if (fieldsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(fields_);
        } else {
          return fieldsBuilder_.getMessageList();
        }
      }
      /**
       * repeated .io.arthas.api.JavaField fields = 1;
       */
      public int getFieldsCount() {
        if (fieldsBuilder_ == null) {
          return fields_.size();
        } else {
          return fieldsBuilder_.getCount();
        }
      }
      /**
       * repeated .io.arthas.api.JavaField fields = 1;
       */
      public io.arthas.api.ArthasServices.JavaField getFields(int index) {
        if (fieldsBuilder_ == null) {
          return fields_.get(index);
        } else {
          return fieldsBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .io.arthas.api.JavaField fields = 1;
       */
      public Builder setFields(
          int index, io.arthas.api.ArthasServices.JavaField value) {
        if (fieldsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFieldsIsMutable();
          fields_.set(index, value);
          onChanged();
        } else {
          fieldsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .io.arthas.api.JavaField fields = 1;
       */
      public Builder setFields(
          int index, io.arthas.api.ArthasServices.JavaField.Builder builderForValue) {
        if (fieldsBuilder_ == null) {
          ensureFieldsIsMutable();
          fields_.set(index, builderForValue.build());
          onChanged();
        } else {
          fieldsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .io.arthas.api.JavaField fields = 1;
       */
      public Builder addFields(io.arthas.api.ArthasServices.JavaField value) {
        if (fieldsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFieldsIsMutable();
          fields_.add(value);
          onChanged();
        } else {
          fieldsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .io.arthas.api.JavaField fields = 1;
       */
      public Builder addFields(
          int index, io.arthas.api.ArthasServices.JavaField value) {
        if (fieldsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFieldsIsMutable();
          fields_.add(index, value);
          onChanged();
        } else {
          fieldsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .io.arthas.api.JavaField fields = 1;
       */
      public Builder addFields(
          io.arthas.api.ArthasServices.JavaField.Builder builderForValue) {
        if (fieldsBuilder_ == null) {
          ensureFieldsIsMutable();
          fields_.add(builderForValue.build());
          onChanged();
        } else {
          fieldsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .io.arthas.api.JavaField fields = 1;
       */
      public Builder addFields(
          int index, io.arthas.api.ArthasServices.JavaField.Builder builderForValue) {
        if (fieldsBuilder_ == null) {
          ensureFieldsIsMutable();
          fields_.add(index, builderForValue.build());
          onChanged();
        } else {
          fieldsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .io.arthas.api.JavaField fields = 1;
       */
      public Builder addAllFields(
          java.lang.Iterable values) {
        if (fieldsBuilder_ == null) {
          ensureFieldsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, fields_);
          onChanged();
        } else {
          fieldsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .io.arthas.api.JavaField fields = 1;
       */
      public Builder clearFields() {
        if (fieldsBuilder_ == null) {
          fields_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          fieldsBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .io.arthas.api.JavaField fields = 1;
       */
      public Builder removeFields(int index) {
        if (fieldsBuilder_ == null) {
          ensureFieldsIsMutable();
          fields_.remove(index);
          onChanged();
        } else {
          fieldsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .io.arthas.api.JavaField fields = 1;
       */
      public io.arthas.api.ArthasServices.JavaField.Builder getFieldsBuilder(
          int index) {
        return getFieldsFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .io.arthas.api.JavaField fields = 1;
       */
      public io.arthas.api.ArthasServices.JavaFieldOrBuilder getFieldsOrBuilder(
          int index) {
        if (fieldsBuilder_ == null) {
          return fields_.get(index);  } else {
          return fieldsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .io.arthas.api.JavaField fields = 1;
       */
      public java.util.List 
           getFieldsOrBuilderList() {
        if (fieldsBuilder_ != null) {
          return fieldsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(fields_);
        }
      }
      /**
       * repeated .io.arthas.api.JavaField fields = 1;
       */
      public io.arthas.api.ArthasServices.JavaField.Builder addFieldsBuilder() {
        return getFieldsFieldBuilder().addBuilder(
            io.arthas.api.ArthasServices.JavaField.getDefaultInstance());
      }
      /**
       * repeated .io.arthas.api.JavaField fields = 1;
       */
      public io.arthas.api.ArthasServices.JavaField.Builder addFieldsBuilder(
          int index) {
        return getFieldsFieldBuilder().addBuilder(
            index, io.arthas.api.ArthasServices.JavaField.getDefaultInstance());
      }
      /**
       * repeated .io.arthas.api.JavaField fields = 1;
       */
      public java.util.List 
           getFieldsBuilderList() {
        return getFieldsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          io.arthas.api.ArthasServices.JavaField, io.arthas.api.ArthasServices.JavaField.Builder, io.arthas.api.ArthasServices.JavaFieldOrBuilder> 
          getFieldsFieldBuilder() {
        if (fieldsBuilder_ == null) {
          fieldsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              io.arthas.api.ArthasServices.JavaField, io.arthas.api.ArthasServices.JavaField.Builder, io.arthas.api.ArthasServices.JavaFieldOrBuilder>(
                  fields_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          fields_ = null;
        }
        return fieldsBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:io.arthas.api.JavaFields)
    }

    // @@protoc_insertion_point(class_scope:io.arthas.api.JavaFields)
    private static final io.arthas.api.ArthasServices.JavaFields DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.arthas.api.ArthasServices.JavaFields();
    }

    public static io.arthas.api.ArthasServices.JavaFields getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public JavaFields parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new JavaFields(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.arthas.api.ArthasServices.JavaFields getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface JavaObjectOrBuilder extends
      // @@protoc_insertion_point(interface_extends:io.arthas.api.JavaObject)
      com.google.protobuf.MessageOrBuilder {

    /**
     * string className = 1;
     * @return The className.
     */
    java.lang.String getClassName();
    /**
     * string className = 1;
     * @return The bytes for className.
     */
    com.google.protobuf.ByteString
        getClassNameBytes();

    /**
     * .io.arthas.api.JavaObject objectValue = 2;
     * @return Whether the objectValue field is set.
     */
    boolean hasObjectValue();
    /**
     * .io.arthas.api.JavaObject objectValue = 2;
     * @return The objectValue.
     */
    io.arthas.api.ArthasServices.JavaObject getObjectValue();
    /**
     * .io.arthas.api.JavaObject objectValue = 2;
     */
    io.arthas.api.ArthasServices.JavaObjectOrBuilder getObjectValueOrBuilder();

    /**
     * .io.arthas.api.BasicValue basicValue = 3;
     * @return Whether the basicValue field is set.
     */
    boolean hasBasicValue();
    /**
     * .io.arthas.api.BasicValue basicValue = 3;
     * @return The basicValue.
     */
    io.arthas.api.ArthasServices.BasicValue getBasicValue();
    /**
     * .io.arthas.api.BasicValue basicValue = 3;
     */
    io.arthas.api.ArthasServices.BasicValueOrBuilder getBasicValueOrBuilder();

    /**
     * .io.arthas.api.ArrayValue arrayValue = 4;
     * @return Whether the arrayValue field is set.
     */
    boolean hasArrayValue();
    /**
     * .io.arthas.api.ArrayValue arrayValue = 4;
     * @return The arrayValue.
     */
    io.arthas.api.ArthasServices.ArrayValue getArrayValue();
    /**
     * .io.arthas.api.ArrayValue arrayValue = 4;
     */
    io.arthas.api.ArthasServices.ArrayValueOrBuilder getArrayValueOrBuilder();

    /**
     * .io.arthas.api.NullValue nullValue = 5;
     * @return Whether the nullValue field is set.
     */
    boolean hasNullValue();
    /**
     * .io.arthas.api.NullValue nullValue = 5;
     * @return The nullValue.
     */
    io.arthas.api.ArthasServices.NullValue getNullValue();
    /**
     * .io.arthas.api.NullValue nullValue = 5;
     */
    io.arthas.api.ArthasServices.NullValueOrBuilder getNullValueOrBuilder();

    /**
     * .io.arthas.api.CollectionValue collection = 6;
     * @return Whether the collection field is set.
     */
    boolean hasCollection();
    /**
     * .io.arthas.api.CollectionValue collection = 6;
     * @return The collection.
     */
    io.arthas.api.ArthasServices.CollectionValue getCollection();
    /**
     * .io.arthas.api.CollectionValue collection = 6;
     */
    io.arthas.api.ArthasServices.CollectionValueOrBuilder getCollectionOrBuilder();

    /**
     * .io.arthas.api.MapValue map = 7;
     * @return Whether the map field is set.
     */
    boolean hasMap();
    /**
     * .io.arthas.api.MapValue map = 7;
     * @return The map.
     */
    io.arthas.api.ArthasServices.MapValue getMap();
    /**
     * .io.arthas.api.MapValue map = 7;
     */
    io.arthas.api.ArthasServices.MapValueOrBuilder getMapOrBuilder();

    /**
     * .io.arthas.api.UnexpandedObject unexpandedObject = 8;
     * @return Whether the unexpandedObject field is set.
     */
    boolean hasUnexpandedObject();
    /**
     * .io.arthas.api.UnexpandedObject unexpandedObject = 8;
     * @return The unexpandedObject.
     */
    io.arthas.api.ArthasServices.UnexpandedObject getUnexpandedObject();
    /**
     * .io.arthas.api.UnexpandedObject unexpandedObject = 8;
     */
    io.arthas.api.ArthasServices.UnexpandedObjectOrBuilder getUnexpandedObjectOrBuilder();

    /**
     * .io.arthas.api.JavaFields fields = 9;
     * @return Whether the fields field is set.
     */
    boolean hasFields();
    /**
     * .io.arthas.api.JavaFields fields = 9;
     * @return The fields.
     */
    io.arthas.api.ArthasServices.JavaFields getFields();
    /**
     * .io.arthas.api.JavaFields fields = 9;
     */
    io.arthas.api.ArthasServices.JavaFieldsOrBuilder getFieldsOrBuilder();

    public io.arthas.api.ArthasServices.JavaObject.ValueCase getValueCase();
  }
  /**
   * Protobuf type {@code io.arthas.api.JavaObject}
   */
  public  static final class JavaObject extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:io.arthas.api.JavaObject)
      JavaObjectOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use JavaObject.newBuilder() to construct.
    private JavaObject(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private JavaObject() {
      className_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new JavaObject();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private JavaObject(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

              className_ = s;
              break;
            }
            case 18: {
              io.arthas.api.ArthasServices.JavaObject.Builder subBuilder = null;
              if (valueCase_ == 2) {
                subBuilder = ((io.arthas.api.ArthasServices.JavaObject) value_).toBuilder();
              }
              value_ =
                  input.readMessage(io.arthas.api.ArthasServices.JavaObject.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((io.arthas.api.ArthasServices.JavaObject) value_);
                value_ = subBuilder.buildPartial();
              }
              valueCase_ = 2;
              break;
            }
            case 26: {
              io.arthas.api.ArthasServices.BasicValue.Builder subBuilder = null;
              if (valueCase_ == 3) {
                subBuilder = ((io.arthas.api.ArthasServices.BasicValue) value_).toBuilder();
              }
              value_ =
                  input.readMessage(io.arthas.api.ArthasServices.BasicValue.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((io.arthas.api.ArthasServices.BasicValue) value_);
                value_ = subBuilder.buildPartial();
              }
              valueCase_ = 3;
              break;
            }
            case 34: {
              io.arthas.api.ArthasServices.ArrayValue.Builder subBuilder = null;
              if (valueCase_ == 4) {
                subBuilder = ((io.arthas.api.ArthasServices.ArrayValue) value_).toBuilder();
              }
              value_ =
                  input.readMessage(io.arthas.api.ArthasServices.ArrayValue.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((io.arthas.api.ArthasServices.ArrayValue) value_);
                value_ = subBuilder.buildPartial();
              }
              valueCase_ = 4;
              break;
            }
            case 42: {
              io.arthas.api.ArthasServices.NullValue.Builder subBuilder = null;
              if (valueCase_ == 5) {
                subBuilder = ((io.arthas.api.ArthasServices.NullValue) value_).toBuilder();
              }
              value_ =
                  input.readMessage(io.arthas.api.ArthasServices.NullValue.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((io.arthas.api.ArthasServices.NullValue) value_);
                value_ = subBuilder.buildPartial();
              }
              valueCase_ = 5;
              break;
            }
            case 50: {
              io.arthas.api.ArthasServices.CollectionValue.Builder subBuilder = null;
              if (valueCase_ == 6) {
                subBuilder = ((io.arthas.api.ArthasServices.CollectionValue) value_).toBuilder();
              }
              value_ =
                  input.readMessage(io.arthas.api.ArthasServices.CollectionValue.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((io.arthas.api.ArthasServices.CollectionValue) value_);
                value_ = subBuilder.buildPartial();
              }
              valueCase_ = 6;
              break;
            }
            case 58: {
              io.arthas.api.ArthasServices.MapValue.Builder subBuilder = null;
              if (valueCase_ == 7) {
                subBuilder = ((io.arthas.api.ArthasServices.MapValue) value_).toBuilder();
              }
              value_ =
                  input.readMessage(io.arthas.api.ArthasServices.MapValue.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((io.arthas.api.ArthasServices.MapValue) value_);
                value_ = subBuilder.buildPartial();
              }
              valueCase_ = 7;
              break;
            }
            case 66: {
              io.arthas.api.ArthasServices.UnexpandedObject.Builder subBuilder = null;
              if (valueCase_ == 8) {
                subBuilder = ((io.arthas.api.ArthasServices.UnexpandedObject) value_).toBuilder();
              }
              value_ =
                  input.readMessage(io.arthas.api.ArthasServices.UnexpandedObject.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((io.arthas.api.ArthasServices.UnexpandedObject) value_);
                value_ = subBuilder.buildPartial();
              }
              valueCase_ = 8;
              break;
            }
            case 74: {
              io.arthas.api.ArthasServices.JavaFields.Builder subBuilder = null;
              if (valueCase_ == 9) {
                subBuilder = ((io.arthas.api.ArthasServices.JavaFields) value_).toBuilder();
              }
              value_ =
                  input.readMessage(io.arthas.api.ArthasServices.JavaFields.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((io.arthas.api.ArthasServices.JavaFields) value_);
                value_ = subBuilder.buildPartial();
              }
              valueCase_ = 9;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              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 io.arthas.api.ArthasServices.internal_static_io_arthas_api_JavaObject_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.arthas.api.ArthasServices.internal_static_io_arthas_api_JavaObject_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.arthas.api.ArthasServices.JavaObject.class, io.arthas.api.ArthasServices.JavaObject.Builder.class);
    }

    private int valueCase_ = 0;
    private java.lang.Object value_;
    public enum ValueCase
        implements com.google.protobuf.Internal.EnumLite,
            com.google.protobuf.AbstractMessage.InternalOneOfEnum {
      OBJECTVALUE(2),
      BASICVALUE(3),
      ARRAYVALUE(4),
      NULLVALUE(5),
      COLLECTION(6),
      MAP(7),
      UNEXPANDEDOBJECT(8),
      FIELDS(9),
      VALUE_NOT_SET(0);
      private final int value;
      private ValueCase(int value) {
        this.value = value;
      }
      /**
       * @param value The number of the enum to look for.
       * @return The enum associated with the given number.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static ValueCase valueOf(int value) {
        return forNumber(value);
      }

      public static ValueCase forNumber(int value) {
        switch (value) {
          case 2: return OBJECTVALUE;
          case 3: return BASICVALUE;
          case 4: return ARRAYVALUE;
          case 5: return NULLVALUE;
          case 6: return COLLECTION;
          case 7: return MAP;
          case 8: return UNEXPANDEDOBJECT;
          case 9: return FIELDS;
          case 0: return VALUE_NOT_SET;
          default: return null;
        }
      }
      public int getNumber() {
        return this.value;
      }
    };

    public ValueCase
    getValueCase() {
      return ValueCase.forNumber(
          valueCase_);
    }

    public static final int CLASSNAME_FIELD_NUMBER = 1;
    private volatile java.lang.Object className_;
    /**
     * string className = 1;
     * @return The className.
     */
    public java.lang.String getClassName() {
      java.lang.Object ref = className_;
      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();
        className_ = s;
        return s;
      }
    }
    /**
     * string className = 1;
     * @return The bytes for className.
     */
    public com.google.protobuf.ByteString
        getClassNameBytes() {
      java.lang.Object ref = className_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        className_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int OBJECTVALUE_FIELD_NUMBER = 2;
    /**
     * .io.arthas.api.JavaObject objectValue = 2;
     * @return Whether the objectValue field is set.
     */
    public boolean hasObjectValue() {
      return valueCase_ == 2;
    }
    /**
     * .io.arthas.api.JavaObject objectValue = 2;
     * @return The objectValue.
     */
    public io.arthas.api.ArthasServices.JavaObject getObjectValue() {
      if (valueCase_ == 2) {
         return (io.arthas.api.ArthasServices.JavaObject) value_;
      }
      return io.arthas.api.ArthasServices.JavaObject.getDefaultInstance();
    }
    /**
     * .io.arthas.api.JavaObject objectValue = 2;
     */
    public io.arthas.api.ArthasServices.JavaObjectOrBuilder getObjectValueOrBuilder() {
      if (valueCase_ == 2) {
         return (io.arthas.api.ArthasServices.JavaObject) value_;
      }
      return io.arthas.api.ArthasServices.JavaObject.getDefaultInstance();
    }

    public static final int BASICVALUE_FIELD_NUMBER = 3;
    /**
     * .io.arthas.api.BasicValue basicValue = 3;
     * @return Whether the basicValue field is set.
     */
    public boolean hasBasicValue() {
      return valueCase_ == 3;
    }
    /**
     * .io.arthas.api.BasicValue basicValue = 3;
     * @return The basicValue.
     */
    public io.arthas.api.ArthasServices.BasicValue getBasicValue() {
      if (valueCase_ == 3) {
         return (io.arthas.api.ArthasServices.BasicValue) value_;
      }
      return io.arthas.api.ArthasServices.BasicValue.getDefaultInstance();
    }
    /**
     * .io.arthas.api.BasicValue basicValue = 3;
     */
    public io.arthas.api.ArthasServices.BasicValueOrBuilder getBasicValueOrBuilder() {
      if (valueCase_ == 3) {
         return (io.arthas.api.ArthasServices.BasicValue) value_;
      }
      return io.arthas.api.ArthasServices.BasicValue.getDefaultInstance();
    }

    public static final int ARRAYVALUE_FIELD_NUMBER = 4;
    /**
     * .io.arthas.api.ArrayValue arrayValue = 4;
     * @return Whether the arrayValue field is set.
     */
    public boolean hasArrayValue() {
      return valueCase_ == 4;
    }
    /**
     * .io.arthas.api.ArrayValue arrayValue = 4;
     * @return The arrayValue.
     */
    public io.arthas.api.ArthasServices.ArrayValue getArrayValue() {
      if (valueCase_ == 4) {
         return (io.arthas.api.ArthasServices.ArrayValue) value_;
      }
      return io.arthas.api.ArthasServices.ArrayValue.getDefaultInstance();
    }
    /**
     * .io.arthas.api.ArrayValue arrayValue = 4;
     */
    public io.arthas.api.ArthasServices.ArrayValueOrBuilder getArrayValueOrBuilder() {
      if (valueCase_ == 4) {
         return (io.arthas.api.ArthasServices.ArrayValue) value_;
      }
      return io.arthas.api.ArthasServices.ArrayValue.getDefaultInstance();
    }

    public static final int NULLVALUE_FIELD_NUMBER = 5;
    /**
     * .io.arthas.api.NullValue nullValue = 5;
     * @return Whether the nullValue field is set.
     */
    public boolean hasNullValue() {
      return valueCase_ == 5;
    }
    /**
     * .io.arthas.api.NullValue nullValue = 5;
     * @return The nullValue.
     */
    public io.arthas.api.ArthasServices.NullValue getNullValue() {
      if (valueCase_ == 5) {
         return (io.arthas.api.ArthasServices.NullValue) value_;
      }
      return io.arthas.api.ArthasServices.NullValue.getDefaultInstance();
    }
    /**
     * .io.arthas.api.NullValue nullValue = 5;
     */
    public io.arthas.api.ArthasServices.NullValueOrBuilder getNullValueOrBuilder() {
      if (valueCase_ == 5) {
         return (io.arthas.api.ArthasServices.NullValue) value_;
      }
      return io.arthas.api.ArthasServices.NullValue.getDefaultInstance();
    }

    public static final int COLLECTION_FIELD_NUMBER = 6;
    /**
     * .io.arthas.api.CollectionValue collection = 6;
     * @return Whether the collection field is set.
     */
    public boolean hasCollection() {
      return valueCase_ == 6;
    }
    /**
     * .io.arthas.api.CollectionValue collection = 6;
     * @return The collection.
     */
    public io.arthas.api.ArthasServices.CollectionValue getCollection() {
      if (valueCase_ == 6) {
         return (io.arthas.api.ArthasServices.CollectionValue) value_;
      }
      return io.arthas.api.ArthasServices.CollectionValue.getDefaultInstance();
    }
    /**
     * .io.arthas.api.CollectionValue collection = 6;
     */
    public io.arthas.api.ArthasServices.CollectionValueOrBuilder getCollectionOrBuilder() {
      if (valueCase_ == 6) {
         return (io.arthas.api.ArthasServices.CollectionValue) value_;
      }
      return io.arthas.api.ArthasServices.CollectionValue.getDefaultInstance();
    }

    public static final int MAP_FIELD_NUMBER = 7;
    /**
     * .io.arthas.api.MapValue map = 7;
     * @return Whether the map field is set.
     */
    public boolean hasMap() {
      return valueCase_ == 7;
    }
    /**
     * .io.arthas.api.MapValue map = 7;
     * @return The map.
     */
    public io.arthas.api.ArthasServices.MapValue getMap() {
      if (valueCase_ == 7) {
         return (io.arthas.api.ArthasServices.MapValue) value_;
      }
      return io.arthas.api.ArthasServices.MapValue.getDefaultInstance();
    }
    /**
     * .io.arthas.api.MapValue map = 7;
     */
    public io.arthas.api.ArthasServices.MapValueOrBuilder getMapOrBuilder() {
      if (valueCase_ == 7) {
         return (io.arthas.api.ArthasServices.MapValue) value_;
      }
      return io.arthas.api.ArthasServices.MapValue.getDefaultInstance();
    }

    public static final int UNEXPANDEDOBJECT_FIELD_NUMBER = 8;
    /**
     * .io.arthas.api.UnexpandedObject unexpandedObject = 8;
     * @return Whether the unexpandedObject field is set.
     */
    public boolean hasUnexpandedObject() {
      return valueCase_ == 8;
    }
    /**
     * .io.arthas.api.UnexpandedObject unexpandedObject = 8;
     * @return The unexpandedObject.
     */
    public io.arthas.api.ArthasServices.UnexpandedObject getUnexpandedObject() {
      if (valueCase_ == 8) {
         return (io.arthas.api.ArthasServices.UnexpandedObject) value_;
      }
      return io.arthas.api.ArthasServices.UnexpandedObject.getDefaultInstance();
    }
    /**
     * .io.arthas.api.UnexpandedObject unexpandedObject = 8;
     */
    public io.arthas.api.ArthasServices.UnexpandedObjectOrBuilder getUnexpandedObjectOrBuilder() {
      if (valueCase_ == 8) {
         return (io.arthas.api.ArthasServices.UnexpandedObject) value_;
      }
      return io.arthas.api.ArthasServices.UnexpandedObject.getDefaultInstance();
    }

    public static final int FIELDS_FIELD_NUMBER = 9;
    /**
     * .io.arthas.api.JavaFields fields = 9;
     * @return Whether the fields field is set.
     */
    public boolean hasFields() {
      return valueCase_ == 9;
    }
    /**
     * .io.arthas.api.JavaFields fields = 9;
     * @return The fields.
     */
    public io.arthas.api.ArthasServices.JavaFields getFields() {
      if (valueCase_ == 9) {
         return (io.arthas.api.ArthasServices.JavaFields) value_;
      }
      return io.arthas.api.ArthasServices.JavaFields.getDefaultInstance();
    }
    /**
     * .io.arthas.api.JavaFields fields = 9;
     */
    public io.arthas.api.ArthasServices.JavaFieldsOrBuilder getFieldsOrBuilder() {
      if (valueCase_ == 9) {
         return (io.arthas.api.ArthasServices.JavaFields) value_;
      }
      return io.arthas.api.ArthasServices.JavaFields.getDefaultInstance();
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getClassNameBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, className_);
      }
      if (valueCase_ == 2) {
        output.writeMessage(2, (io.arthas.api.ArthasServices.JavaObject) value_);
      }
      if (valueCase_ == 3) {
        output.writeMessage(3, (io.arthas.api.ArthasServices.BasicValue) value_);
      }
      if (valueCase_ == 4) {
        output.writeMessage(4, (io.arthas.api.ArthasServices.ArrayValue) value_);
      }
      if (valueCase_ == 5) {
        output.writeMessage(5, (io.arthas.api.ArthasServices.NullValue) value_);
      }
      if (valueCase_ == 6) {
        output.writeMessage(6, (io.arthas.api.ArthasServices.CollectionValue) value_);
      }
      if (valueCase_ == 7) {
        output.writeMessage(7, (io.arthas.api.ArthasServices.MapValue) value_);
      }
      if (valueCase_ == 8) {
        output.writeMessage(8, (io.arthas.api.ArthasServices.UnexpandedObject) value_);
      }
      if (valueCase_ == 9) {
        output.writeMessage(9, (io.arthas.api.ArthasServices.JavaFields) value_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!getClassNameBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, className_);
      }
      if (valueCase_ == 2) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, (io.arthas.api.ArthasServices.JavaObject) value_);
      }
      if (valueCase_ == 3) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, (io.arthas.api.ArthasServices.BasicValue) value_);
      }
      if (valueCase_ == 4) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, (io.arthas.api.ArthasServices.ArrayValue) value_);
      }
      if (valueCase_ == 5) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, (io.arthas.api.ArthasServices.NullValue) value_);
      }
      if (valueCase_ == 6) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(6, (io.arthas.api.ArthasServices.CollectionValue) value_);
      }
      if (valueCase_ == 7) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(7, (io.arthas.api.ArthasServices.MapValue) value_);
      }
      if (valueCase_ == 8) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(8, (io.arthas.api.ArthasServices.UnexpandedObject) value_);
      }
      if (valueCase_ == 9) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(9, (io.arthas.api.ArthasServices.JavaFields) value_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof io.arthas.api.ArthasServices.JavaObject)) {
        return super.equals(obj);
      }
      io.arthas.api.ArthasServices.JavaObject other = (io.arthas.api.ArthasServices.JavaObject) obj;

      if (!getClassName()
          .equals(other.getClassName())) return false;
      if (!getValueCase().equals(other.getValueCase())) return false;
      switch (valueCase_) {
        case 2:
          if (!getObjectValue()
              .equals(other.getObjectValue())) return false;
          break;
        case 3:
          if (!getBasicValue()
              .equals(other.getBasicValue())) return false;
          break;
        case 4:
          if (!getArrayValue()
              .equals(other.getArrayValue())) return false;
          break;
        case 5:
          if (!getNullValue()
              .equals(other.getNullValue())) return false;
          break;
        case 6:
          if (!getCollection()
              .equals(other.getCollection())) return false;
          break;
        case 7:
          if (!getMap()
              .equals(other.getMap())) return false;
          break;
        case 8:
          if (!getUnexpandedObject()
              .equals(other.getUnexpandedObject())) return false;
          break;
        case 9:
          if (!getFields()
              .equals(other.getFields())) return false;
          break;
        case 0:
        default:
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + CLASSNAME_FIELD_NUMBER;
      hash = (53 * hash) + getClassName().hashCode();
      switch (valueCase_) {
        case 2:
          hash = (37 * hash) + OBJECTVALUE_FIELD_NUMBER;
          hash = (53 * hash) + getObjectValue().hashCode();
          break;
        case 3:
          hash = (37 * hash) + BASICVALUE_FIELD_NUMBER;
          hash = (53 * hash) + getBasicValue().hashCode();
          break;
        case 4:
          hash = (37 * hash) + ARRAYVALUE_FIELD_NUMBER;
          hash = (53 * hash) + getArrayValue().hashCode();
          break;
        case 5:
          hash = (37 * hash) + NULLVALUE_FIELD_NUMBER;
          hash = (53 * hash) + getNullValue().hashCode();
          break;
        case 6:
          hash = (37 * hash) + COLLECTION_FIELD_NUMBER;
          hash = (53 * hash) + getCollection().hashCode();
          break;
        case 7:
          hash = (37 * hash) + MAP_FIELD_NUMBER;
          hash = (53 * hash) + getMap().hashCode();
          break;
        case 8:
          hash = (37 * hash) + UNEXPANDEDOBJECT_FIELD_NUMBER;
          hash = (53 * hash) + getUnexpandedObject().hashCode();
          break;
        case 9:
          hash = (37 * hash) + FIELDS_FIELD_NUMBER;
          hash = (53 * hash) + getFields().hashCode();
          break;
        case 0:
        default:
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.arthas.api.ArthasServices.JavaObject parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.arthas.api.ArthasServices.JavaObject parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.arthas.api.ArthasServices.JavaObject parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.arthas.api.ArthasServices.JavaObject parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.arthas.api.ArthasServices.JavaObject parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.arthas.api.ArthasServices.JavaObject parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.arthas.api.ArthasServices.JavaObject parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.arthas.api.ArthasServices.JavaObject 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 io.arthas.api.ArthasServices.JavaObject parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static io.arthas.api.ArthasServices.JavaObject 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 io.arthas.api.ArthasServices.JavaObject parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.arthas.api.ArthasServices.JavaObject parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(io.arthas.api.ArthasServices.JavaObject prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    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 io.arthas.api.JavaObject}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:io.arthas.api.JavaObject)
        io.arthas.api.ArthasServices.JavaObjectOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.arthas.api.ArthasServices.internal_static_io_arthas_api_JavaObject_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.arthas.api.ArthasServices.internal_static_io_arthas_api_JavaObject_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.arthas.api.ArthasServices.JavaObject.class, io.arthas.api.ArthasServices.JavaObject.Builder.class);
      }

      // Construct using io.arthas.api.ArthasServices.JavaObject.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        className_ = "";

        valueCase_ = 0;
        value_ = null;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.arthas.api.ArthasServices.internal_static_io_arthas_api_JavaObject_descriptor;
      }

      @java.lang.Override
      public io.arthas.api.ArthasServices.JavaObject getDefaultInstanceForType() {
        return io.arthas.api.ArthasServices.JavaObject.getDefaultInstance();
      }

      @java.lang.Override
      public io.arthas.api.ArthasServices.JavaObject build() {
        io.arthas.api.ArthasServices.JavaObject result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.arthas.api.ArthasServices.JavaObject buildPartial() {
        io.arthas.api.ArthasServices.JavaObject result = new io.arthas.api.ArthasServices.JavaObject(this);
        result.className_ = className_;
        if (valueCase_ == 2) {
          if (objectValueBuilder_ == null) {
            result.value_ = value_;
          } else {
            result.value_ = objectValueBuilder_.build();
          }
        }
        if (valueCase_ == 3) {
          if (basicValueBuilder_ == null) {
            result.value_ = value_;
          } else {
            result.value_ = basicValueBuilder_.build();
          }
        }
        if (valueCase_ == 4) {
          if (arrayValueBuilder_ == null) {
            result.value_ = value_;
          } else {
            result.value_ = arrayValueBuilder_.build();
          }
        }
        if (valueCase_ == 5) {
          if (nullValueBuilder_ == null) {
            result.value_ = value_;
          } else {
            result.value_ = nullValueBuilder_.build();
          }
        }
        if (valueCase_ == 6) {
          if (collectionBuilder_ == null) {
            result.value_ = value_;
          } else {
            result.value_ = collectionBuilder_.build();
          }
        }
        if (valueCase_ == 7) {
          if (mapBuilder_ == null) {
            result.value_ = value_;
          } else {
            result.value_ = mapBuilder_.build();
          }
        }
        if (valueCase_ == 8) {
          if (unexpandedObjectBuilder_ == null) {
            result.value_ = value_;
          } else {
            result.value_ = unexpandedObjectBuilder_.build();
          }
        }
        if (valueCase_ == 9) {
          if (fieldsBuilder_ == null) {
            result.value_ = value_;
          } else {
            result.value_ = fieldsBuilder_.build();
          }
        }
        result.valueCase_ = valueCase_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.arthas.api.ArthasServices.JavaObject) {
          return mergeFrom((io.arthas.api.ArthasServices.JavaObject)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.arthas.api.ArthasServices.JavaObject other) {
        if (other == io.arthas.api.ArthasServices.JavaObject.getDefaultInstance()) return this;
        if (!other.getClassName().isEmpty()) {
          className_ = other.className_;
          onChanged();
        }
        switch (other.getValueCase()) {
          case OBJECTVALUE: {
            mergeObjectValue(other.getObjectValue());
            break;
          }
          case BASICVALUE: {
            mergeBasicValue(other.getBasicValue());
            break;
          }
          case ARRAYVALUE: {
            mergeArrayValue(other.getArrayValue());
            break;
          }
          case NULLVALUE: {
            mergeNullValue(other.getNullValue());
            break;
          }
          case COLLECTION: {
            mergeCollection(other.getCollection());
            break;
          }
          case MAP: {
            mergeMap(other.getMap());
            break;
          }
          case UNEXPANDEDOBJECT: {
            mergeUnexpandedObject(other.getUnexpandedObject());
            break;
          }
          case FIELDS: {
            mergeFields(other.getFields());
            break;
          }
          case VALUE_NOT_SET: {
            break;
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        io.arthas.api.ArthasServices.JavaObject parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (io.arthas.api.ArthasServices.JavaObject) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int valueCase_ = 0;
      private java.lang.Object value_;
      public ValueCase
          getValueCase() {
        return ValueCase.forNumber(
            valueCase_);
      }

      public Builder clearValue() {
        valueCase_ = 0;
        value_ = null;
        onChanged();
        return this;
      }


      private java.lang.Object className_ = "";
      /**
       * string className = 1;
       * @return The className.
       */
      public java.lang.String getClassName() {
        java.lang.Object ref = className_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          className_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string className = 1;
       * @return The bytes for className.
       */
      public com.google.protobuf.ByteString
          getClassNameBytes() {
        java.lang.Object ref = className_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          className_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string className = 1;
       * @param value The className to set.
       * @return This builder for chaining.
       */
      public Builder setClassName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        className_ = value;
        onChanged();
        return this;
      }
      /**
       * string className = 1;
       * @return This builder for chaining.
       */
      public Builder clearClassName() {
        
        className_ = getDefaultInstance().getClassName();
        onChanged();
        return this;
      }
      /**
       * string className = 1;
       * @param value The bytes for className to set.
       * @return This builder for chaining.
       */
      public Builder setClassNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        className_ = value;
        onChanged();
        return this;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          io.arthas.api.ArthasServices.JavaObject, io.arthas.api.ArthasServices.JavaObject.Builder, io.arthas.api.ArthasServices.JavaObjectOrBuilder> objectValueBuilder_;
      /**
       * .io.arthas.api.JavaObject objectValue = 2;
       * @return Whether the objectValue field is set.
       */
      public boolean hasObjectValue() {
        return valueCase_ == 2;
      }
      /**
       * .io.arthas.api.JavaObject objectValue = 2;
       * @return The objectValue.
       */
      public io.arthas.api.ArthasServices.JavaObject getObjectValue() {
        if (objectValueBuilder_ == null) {
          if (valueCase_ == 2) {
            return (io.arthas.api.ArthasServices.JavaObject) value_;
          }
          return io.arthas.api.ArthasServices.JavaObject.getDefaultInstance();
        } else {
          if (valueCase_ == 2) {
            return objectValueBuilder_.getMessage();
          }
          return io.arthas.api.ArthasServices.JavaObject.getDefaultInstance();
        }
      }
      /**
       * .io.arthas.api.JavaObject objectValue = 2;
       */
      public Builder setObjectValue(io.arthas.api.ArthasServices.JavaObject value) {
        if (objectValueBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          value_ = value;
          onChanged();
        } else {
          objectValueBuilder_.setMessage(value);
        }
        valueCase_ = 2;
        return this;
      }
      /**
       * .io.arthas.api.JavaObject objectValue = 2;
       */
      public Builder setObjectValue(
          io.arthas.api.ArthasServices.JavaObject.Builder builderForValue) {
        if (objectValueBuilder_ == null) {
          value_ = builderForValue.build();
          onChanged();
        } else {
          objectValueBuilder_.setMessage(builderForValue.build());
        }
        valueCase_ = 2;
        return this;
      }
      /**
       * .io.arthas.api.JavaObject objectValue = 2;
       */
      public Builder mergeObjectValue(io.arthas.api.ArthasServices.JavaObject value) {
        if (objectValueBuilder_ == null) {
          if (valueCase_ == 2 &&
              value_ != io.arthas.api.ArthasServices.JavaObject.getDefaultInstance()) {
            value_ = io.arthas.api.ArthasServices.JavaObject.newBuilder((io.arthas.api.ArthasServices.JavaObject) value_)
                .mergeFrom(value).buildPartial();
          } else {
            value_ = value;
          }
          onChanged();
        } else {
          if (valueCase_ == 2) {
            objectValueBuilder_.mergeFrom(value);
          }
          objectValueBuilder_.setMessage(value);
        }
        valueCase_ = 2;
        return this;
      }
      /**
       * .io.arthas.api.JavaObject objectValue = 2;
       */
      public Builder clearObjectValue() {
        if (objectValueBuilder_ == null) {
          if (valueCase_ == 2) {
            valueCase_ = 0;
            value_ = null;
            onChanged();
          }
        } else {
          if (valueCase_ == 2) {
            valueCase_ = 0;
            value_ = null;
          }
          objectValueBuilder_.clear();
        }
        return this;
      }
      /**
       * .io.arthas.api.JavaObject objectValue = 2;
       */
      public io.arthas.api.ArthasServices.JavaObject.Builder getObjectValueBuilder() {
        return getObjectValueFieldBuilder().getBuilder();
      }
      /**
       * .io.arthas.api.JavaObject objectValue = 2;
       */
      public io.arthas.api.ArthasServices.JavaObjectOrBuilder getObjectValueOrBuilder() {
        if ((valueCase_ == 2) && (objectValueBuilder_ != null)) {
          return objectValueBuilder_.getMessageOrBuilder();
        } else {
          if (valueCase_ == 2) {
            return (io.arthas.api.ArthasServices.JavaObject) value_;
          }
          return io.arthas.api.ArthasServices.JavaObject.getDefaultInstance();
        }
      }
      /**
       * .io.arthas.api.JavaObject objectValue = 2;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          io.arthas.api.ArthasServices.JavaObject, io.arthas.api.ArthasServices.JavaObject.Builder, io.arthas.api.ArthasServices.JavaObjectOrBuilder> 
          getObjectValueFieldBuilder() {
        if (objectValueBuilder_ == null) {
          if (!(valueCase_ == 2)) {
            value_ = io.arthas.api.ArthasServices.JavaObject.getDefaultInstance();
          }
          objectValueBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              io.arthas.api.ArthasServices.JavaObject, io.arthas.api.ArthasServices.JavaObject.Builder, io.arthas.api.ArthasServices.JavaObjectOrBuilder>(
                  (io.arthas.api.ArthasServices.JavaObject) value_,
                  getParentForChildren(),
                  isClean());
          value_ = null;
        }
        valueCase_ = 2;
        onChanged();;
        return objectValueBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          io.arthas.api.ArthasServices.BasicValue, io.arthas.api.ArthasServices.BasicValue.Builder, io.arthas.api.ArthasServices.BasicValueOrBuilder> basicValueBuilder_;
      /**
       * .io.arthas.api.BasicValue basicValue = 3;
       * @return Whether the basicValue field is set.
       */
      public boolean hasBasicValue() {
        return valueCase_ == 3;
      }
      /**
       * .io.arthas.api.BasicValue basicValue = 3;
       * @return The basicValue.
       */
      public io.arthas.api.ArthasServices.BasicValue getBasicValue() {
        if (basicValueBuilder_ == null) {
          if (valueCase_ == 3) {
            return (io.arthas.api.ArthasServices.BasicValue) value_;
          }
          return io.arthas.api.ArthasServices.BasicValue.getDefaultInstance();
        } else {
          if (valueCase_ == 3) {
            return basicValueBuilder_.getMessage();
          }
          return io.arthas.api.ArthasServices.BasicValue.getDefaultInstance();
        }
      }
      /**
       * .io.arthas.api.BasicValue basicValue = 3;
       */
      public Builder setBasicValue(io.arthas.api.ArthasServices.BasicValue value) {
        if (basicValueBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          value_ = value;
          onChanged();
        } else {
          basicValueBuilder_.setMessage(value);
        }
        valueCase_ = 3;
        return this;
      }
      /**
       * .io.arthas.api.BasicValue basicValue = 3;
       */
      public Builder setBasicValue(
          io.arthas.api.ArthasServices.BasicValue.Builder builderForValue) {
        if (basicValueBuilder_ == null) {
          value_ = builderForValue.build();
          onChanged();
        } else {
          basicValueBuilder_.setMessage(builderForValue.build());
        }
        valueCase_ = 3;
        return this;
      }
      /**
       * .io.arthas.api.BasicValue basicValue = 3;
       */
      public Builder mergeBasicValue(io.arthas.api.ArthasServices.BasicValue value) {
        if (basicValueBuilder_ == null) {
          if (valueCase_ == 3 &&
              value_ != io.arthas.api.ArthasServices.BasicValue.getDefaultInstance()) {
            value_ = io.arthas.api.ArthasServices.BasicValue.newBuilder((io.arthas.api.ArthasServices.BasicValue) value_)
                .mergeFrom(value).buildPartial();
          } else {
            value_ = value;
          }
          onChanged();
        } else {
          if (valueCase_ == 3) {
            basicValueBuilder_.mergeFrom(value);
          }
          basicValueBuilder_.setMessage(value);
        }
        valueCase_ = 3;
        return this;
      }
      /**
       * .io.arthas.api.BasicValue basicValue = 3;
       */
      public Builder clearBasicValue() {
        if (basicValueBuilder_ == null) {
          if (valueCase_ == 3) {
            valueCase_ = 0;
            value_ = null;
            onChanged();
          }
        } else {
          if (valueCase_ == 3) {
            valueCase_ = 0;
            value_ = null;
          }
          basicValueBuilder_.clear();
        }
        return this;
      }
      /**
       * .io.arthas.api.BasicValue basicValue = 3;
       */
      public io.arthas.api.ArthasServices.BasicValue.Builder getBasicValueBuilder() {
        return getBasicValueFieldBuilder().getBuilder();
      }
      /**
       * .io.arthas.api.BasicValue basicValue = 3;
       */
      public io.arthas.api.ArthasServices.BasicValueOrBuilder getBasicValueOrBuilder() {
        if ((valueCase_ == 3) && (basicValueBuilder_ != null)) {
          return basicValueBuilder_.getMessageOrBuilder();
        } else {
          if (valueCase_ == 3) {
            return (io.arthas.api.ArthasServices.BasicValue) value_;
          }
          return io.arthas.api.ArthasServices.BasicValue.getDefaultInstance();
        }
      }
      /**
       * .io.arthas.api.BasicValue basicValue = 3;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          io.arthas.api.ArthasServices.BasicValue, io.arthas.api.ArthasServices.BasicValue.Builder, io.arthas.api.ArthasServices.BasicValueOrBuilder> 
          getBasicValueFieldBuilder() {
        if (basicValueBuilder_ == null) {
          if (!(valueCase_ == 3)) {
            value_ = io.arthas.api.ArthasServices.BasicValue.getDefaultInstance();
          }
          basicValueBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              io.arthas.api.ArthasServices.BasicValue, io.arthas.api.ArthasServices.BasicValue.Builder, io.arthas.api.ArthasServices.BasicValueOrBuilder>(
                  (io.arthas.api.ArthasServices.BasicValue) value_,
                  getParentForChildren(),
                  isClean());
          value_ = null;
        }
        valueCase_ = 3;
        onChanged();;
        return basicValueBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          io.arthas.api.ArthasServices.ArrayValue, io.arthas.api.ArthasServices.ArrayValue.Builder, io.arthas.api.ArthasServices.ArrayValueOrBuilder> arrayValueBuilder_;
      /**
       * .io.arthas.api.ArrayValue arrayValue = 4;
       * @return Whether the arrayValue field is set.
       */
      public boolean hasArrayValue() {
        return valueCase_ == 4;
      }
      /**
       * .io.arthas.api.ArrayValue arrayValue = 4;
       * @return The arrayValue.
       */
      public io.arthas.api.ArthasServices.ArrayValue getArrayValue() {
        if (arrayValueBuilder_ == null) {
          if (valueCase_ == 4) {
            return (io.arthas.api.ArthasServices.ArrayValue) value_;
          }
          return io.arthas.api.ArthasServices.ArrayValue.getDefaultInstance();
        } else {
          if (valueCase_ == 4) {
            return arrayValueBuilder_.getMessage();
          }
          return io.arthas.api.ArthasServices.ArrayValue.getDefaultInstance();
        }
      }
      /**
       * .io.arthas.api.ArrayValue arrayValue = 4;
       */
      public Builder setArrayValue(io.arthas.api.ArthasServices.ArrayValue value) {
        if (arrayValueBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          value_ = value;
          onChanged();
        } else {
          arrayValueBuilder_.setMessage(value);
        }
        valueCase_ = 4;
        return this;
      }
      /**
       * .io.arthas.api.ArrayValue arrayValue = 4;
       */
      public Builder setArrayValue(
          io.arthas.api.ArthasServices.ArrayValue.Builder builderForValue) {
        if (arrayValueBuilder_ == null) {
          value_ = builderForValue.build();
          onChanged();
        } else {
          arrayValueBuilder_.setMessage(builderForValue.build());
        }
        valueCase_ = 4;
        return this;
      }
      /**
       * .io.arthas.api.ArrayValue arrayValue = 4;
       */
      public Builder mergeArrayValue(io.arthas.api.ArthasServices.ArrayValue value) {
        if (arrayValueBuilder_ == null) {
          if (valueCase_ == 4 &&
              value_ != io.arthas.api.ArthasServices.ArrayValue.getDefaultInstance()) {
            value_ = io.arthas.api.ArthasServices.ArrayValue.newBuilder((io.arthas.api.ArthasServices.ArrayValue) value_)
                .mergeFrom(value).buildPartial();
          } else {
            value_ = value;
          }
          onChanged();
        } else {
          if (valueCase_ == 4) {
            arrayValueBuilder_.mergeFrom(value);
          }
          arrayValueBuilder_.setMessage(value);
        }
        valueCase_ = 4;
        return this;
      }
      /**
       * .io.arthas.api.ArrayValue arrayValue = 4;
       */
      public Builder clearArrayValue() {
        if (arrayValueBuilder_ == null) {
          if (valueCase_ == 4) {
            valueCase_ = 0;
            value_ = null;
            onChanged();
          }
        } else {
          if (valueCase_ == 4) {
            valueCase_ = 0;
            value_ = null;
          }
          arrayValueBuilder_.clear();
        }
        return this;
      }
      /**
       * .io.arthas.api.ArrayValue arrayValue = 4;
       */
      public io.arthas.api.ArthasServices.ArrayValue.Builder getArrayValueBuilder() {
        return getArrayValueFieldBuilder().getBuilder();
      }
      /**
       * .io.arthas.api.ArrayValue arrayValue = 4;
       */
      public io.arthas.api.ArthasServices.ArrayValueOrBuilder getArrayValueOrBuilder() {
        if ((valueCase_ == 4) && (arrayValueBuilder_ != null)) {
          return arrayValueBuilder_.getMessageOrBuilder();
        } else {
          if (valueCase_ == 4) {
            return (io.arthas.api.ArthasServices.ArrayValue) value_;
          }
          return io.arthas.api.ArthasServices.ArrayValue.getDefaultInstance();
        }
      }
      /**
       * .io.arthas.api.ArrayValue arrayValue = 4;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          io.arthas.api.ArthasServices.ArrayValue, io.arthas.api.ArthasServices.ArrayValue.Builder, io.arthas.api.ArthasServices.ArrayValueOrBuilder> 
          getArrayValueFieldBuilder() {
        if (arrayValueBuilder_ == null) {
          if (!(valueCase_ == 4)) {
            value_ = io.arthas.api.ArthasServices.ArrayValue.getDefaultInstance();
          }
          arrayValueBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              io.arthas.api.ArthasServices.ArrayValue, io.arthas.api.ArthasServices.ArrayValue.Builder, io.arthas.api.ArthasServices.ArrayValueOrBuilder>(
                  (io.arthas.api.ArthasServices.ArrayValue) value_,
                  getParentForChildren(),
                  isClean());
          value_ = null;
        }
        valueCase_ = 4;
        onChanged();;
        return arrayValueBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          io.arthas.api.ArthasServices.NullValue, io.arthas.api.ArthasServices.NullValue.Builder, io.arthas.api.ArthasServices.NullValueOrBuilder> nullValueBuilder_;
      /**
       * .io.arthas.api.NullValue nullValue = 5;
       * @return Whether the nullValue field is set.
       */
      public boolean hasNullValue() {
        return valueCase_ == 5;
      }
      /**
       * .io.arthas.api.NullValue nullValue = 5;
       * @return The nullValue.
       */
      public io.arthas.api.ArthasServices.NullValue getNullValue() {
        if (nullValueBuilder_ == null) {
          if (valueCase_ == 5) {
            return (io.arthas.api.ArthasServices.NullValue) value_;
          }
          return io.arthas.api.ArthasServices.NullValue.getDefaultInstance();
        } else {
          if (valueCase_ == 5) {
            return nullValueBuilder_.getMessage();
          }
          return io.arthas.api.ArthasServices.NullValue.getDefaultInstance();
        }
      }
      /**
       * .io.arthas.api.NullValue nullValue = 5;
       */
      public Builder setNullValue(io.arthas.api.ArthasServices.NullValue value) {
        if (nullValueBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          value_ = value;
          onChanged();
        } else {
          nullValueBuilder_.setMessage(value);
        }
        valueCase_ = 5;
        return this;
      }
      /**
       * .io.arthas.api.NullValue nullValue = 5;
       */
      public Builder setNullValue(
          io.arthas.api.ArthasServices.NullValue.Builder builderForValue) {
        if (nullValueBuilder_ == null) {
          value_ = builderForValue.build();
          onChanged();
        } else {
          nullValueBuilder_.setMessage(builderForValue.build());
        }
        valueCase_ = 5;
        return this;
      }
      /**
       * .io.arthas.api.NullValue nullValue = 5;
       */
      public Builder mergeNullValue(io.arthas.api.ArthasServices.NullValue value) {
        if (nullValueBuilder_ == null) {
          if (valueCase_ == 5 &&
              value_ != io.arthas.api.ArthasServices.NullValue.getDefaultInstance()) {
            value_ = io.arthas.api.ArthasServices.NullValue.newBuilder((io.arthas.api.ArthasServices.NullValue) value_)
                .mergeFrom(value).buildPartial();
          } else {
            value_ = value;
          }
          onChanged();
        } else {
          if (valueCase_ == 5) {
            nullValueBuilder_.mergeFrom(value);
          }
          nullValueBuilder_.setMessage(value);
        }
        valueCase_ = 5;
        return this;
      }
      /**
       * .io.arthas.api.NullValue nullValue = 5;
       */
      public Builder clearNullValue() {
        if (nullValueBuilder_ == null) {
          if (valueCase_ == 5) {
            valueCase_ = 0;
            value_ = null;
            onChanged();
          }
        } else {
          if (valueCase_ == 5) {
            valueCase_ = 0;
            value_ = null;
          }
          nullValueBuilder_.clear();
        }
        return this;
      }
      /**
       * .io.arthas.api.NullValue nullValue = 5;
       */
      public io.arthas.api.ArthasServices.NullValue.Builder getNullValueBuilder() {
        return getNullValueFieldBuilder().getBuilder();
      }
      /**
       * .io.arthas.api.NullValue nullValue = 5;
       */
      public io.arthas.api.ArthasServices.NullValueOrBuilder getNullValueOrBuilder() {
        if ((valueCase_ == 5) && (nullValueBuilder_ != null)) {
          return nullValueBuilder_.getMessageOrBuilder();
        } else {
          if (valueCase_ == 5) {
            return (io.arthas.api.ArthasServices.NullValue) value_;
          }
          return io.arthas.api.ArthasServices.NullValue.getDefaultInstance();
        }
      }
      /**
       * .io.arthas.api.NullValue nullValue = 5;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          io.arthas.api.ArthasServices.NullValue, io.arthas.api.ArthasServices.NullValue.Builder, io.arthas.api.ArthasServices.NullValueOrBuilder> 
          getNullValueFieldBuilder() {
        if (nullValueBuilder_ == null) {
          if (!(valueCase_ == 5)) {
            value_ = io.arthas.api.ArthasServices.NullValue.getDefaultInstance();
          }
          nullValueBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              io.arthas.api.ArthasServices.NullValue, io.arthas.api.ArthasServices.NullValue.Builder, io.arthas.api.ArthasServices.NullValueOrBuilder>(
                  (io.arthas.api.ArthasServices.NullValue) value_,
                  getParentForChildren(),
                  isClean());
          value_ = null;
        }
        valueCase_ = 5;
        onChanged();;
        return nullValueBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          io.arthas.api.ArthasServices.CollectionValue, io.arthas.api.ArthasServices.CollectionValue.Builder, io.arthas.api.ArthasServices.CollectionValueOrBuilder> collectionBuilder_;
      /**
       * .io.arthas.api.CollectionValue collection = 6;
       * @return Whether the collection field is set.
       */
      public boolean hasCollection() {
        return valueCase_ == 6;
      }
      /**
       * .io.arthas.api.CollectionValue collection = 6;
       * @return The collection.
       */
      public io.arthas.api.ArthasServices.CollectionValue getCollection() {
        if (collectionBuilder_ == null) {
          if (valueCase_ == 6) {
            return (io.arthas.api.ArthasServices.CollectionValue) value_;
          }
          return io.arthas.api.ArthasServices.CollectionValue.getDefaultInstance();
        } else {
          if (valueCase_ == 6) {
            return collectionBuilder_.getMessage();
          }
          return io.arthas.api.ArthasServices.CollectionValue.getDefaultInstance();
        }
      }
      /**
       * .io.arthas.api.CollectionValue collection = 6;
       */
      public Builder setCollection(io.arthas.api.ArthasServices.CollectionValue value) {
        if (collectionBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          value_ = value;
          onChanged();
        } else {
          collectionBuilder_.setMessage(value);
        }
        valueCase_ = 6;
        return this;
      }
      /**
       * .io.arthas.api.CollectionValue collection = 6;
       */
      public Builder setCollection(
          io.arthas.api.ArthasServices.CollectionValue.Builder builderForValue) {
        if (collectionBuilder_ == null) {
          value_ = builderForValue.build();
          onChanged();
        } else {
          collectionBuilder_.setMessage(builderForValue.build());
        }
        valueCase_ = 6;
        return this;
      }
      /**
       * .io.arthas.api.CollectionValue collection = 6;
       */
      public Builder mergeCollection(io.arthas.api.ArthasServices.CollectionValue value) {
        if (collectionBuilder_ == null) {
          if (valueCase_ == 6 &&
              value_ != io.arthas.api.ArthasServices.CollectionValue.getDefaultInstance()) {
            value_ = io.arthas.api.ArthasServices.CollectionValue.newBuilder((io.arthas.api.ArthasServices.CollectionValue) value_)
                .mergeFrom(value).buildPartial();
          } else {
            value_ = value;
          }
          onChanged();
        } else {
          if (valueCase_ == 6) {
            collectionBuilder_.mergeFrom(value);
          }
          collectionBuilder_.setMessage(value);
        }
        valueCase_ = 6;
        return this;
      }
      /**
       * .io.arthas.api.CollectionValue collection = 6;
       */
      public Builder clearCollection() {
        if (collectionBuilder_ == null) {
          if (valueCase_ == 6) {
            valueCase_ = 0;
            value_ = null;
            onChanged();
          }
        } else {
          if (valueCase_ == 6) {
            valueCase_ = 0;
            value_ = null;
          }
          collectionBuilder_.clear();
        }
        return this;
      }
      /**
       * .io.arthas.api.CollectionValue collection = 6;
       */
      public io.arthas.api.ArthasServices.CollectionValue.Builder getCollectionBuilder() {
        return getCollectionFieldBuilder().getBuilder();
      }
      /**
       * .io.arthas.api.CollectionValue collection = 6;
       */
      public io.arthas.api.ArthasServices.CollectionValueOrBuilder getCollectionOrBuilder() {
        if ((valueCase_ == 6) && (collectionBuilder_ != null)) {
          return collectionBuilder_.getMessageOrBuilder();
        } else {
          if (valueCase_ == 6) {
            return (io.arthas.api.ArthasServices.CollectionValue) value_;
          }
          return io.arthas.api.ArthasServices.CollectionValue.getDefaultInstance();
        }
      }
      /**
       * .io.arthas.api.CollectionValue collection = 6;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          io.arthas.api.ArthasServices.CollectionValue, io.arthas.api.ArthasServices.CollectionValue.Builder, io.arthas.api.ArthasServices.CollectionValueOrBuilder> 
          getCollectionFieldBuilder() {
        if (collectionBuilder_ == null) {
          if (!(valueCase_ == 6)) {
            value_ = io.arthas.api.ArthasServices.CollectionValue.getDefaultInstance();
          }
          collectionBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              io.arthas.api.ArthasServices.CollectionValue, io.arthas.api.ArthasServices.CollectionValue.Builder, io.arthas.api.ArthasServices.CollectionValueOrBuilder>(
                  (io.arthas.api.ArthasServices.CollectionValue) value_,
                  getParentForChildren(),
                  isClean());
          value_ = null;
        }
        valueCase_ = 6;
        onChanged();;
        return collectionBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          io.arthas.api.ArthasServices.MapValue, io.arthas.api.ArthasServices.MapValue.Builder, io.arthas.api.ArthasServices.MapValueOrBuilder> mapBuilder_;
      /**
       * .io.arthas.api.MapValue map = 7;
       * @return Whether the map field is set.
       */
      public boolean hasMap() {
        return valueCase_ == 7;
      }
      /**
       * .io.arthas.api.MapValue map = 7;
       * @return The map.
       */
      public io.arthas.api.ArthasServices.MapValue getMap() {
        if (mapBuilder_ == null) {
          if (valueCase_ == 7) {
            return (io.arthas.api.ArthasServices.MapValue) value_;
          }
          return io.arthas.api.ArthasServices.MapValue.getDefaultInstance();
        } else {
          if (valueCase_ == 7) {
            return mapBuilder_.getMessage();
          }
          return io.arthas.api.ArthasServices.MapValue.getDefaultInstance();
        }
      }
      /**
       * .io.arthas.api.MapValue map = 7;
       */
      public Builder setMap(io.arthas.api.ArthasServices.MapValue value) {
        if (mapBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          value_ = value;
          onChanged();
        } else {
          mapBuilder_.setMessage(value);
        }
        valueCase_ = 7;
        return this;
      }
      /**
       * .io.arthas.api.MapValue map = 7;
       */
      public Builder setMap(
          io.arthas.api.ArthasServices.MapValue.Builder builderForValue) {
        if (mapBuilder_ == null) {
          value_ = builderForValue.build();
          onChanged();
        } else {
          mapBuilder_.setMessage(builderForValue.build());
        }
        valueCase_ = 7;
        return this;
      }
      /**
       * .io.arthas.api.MapValue map = 7;
       */
      public Builder mergeMap(io.arthas.api.ArthasServices.MapValue value) {
        if (mapBuilder_ == null) {
          if (valueCase_ == 7 &&
              value_ != io.arthas.api.ArthasServices.MapValue.getDefaultInstance()) {
            value_ = io.arthas.api.ArthasServices.MapValue.newBuilder((io.arthas.api.ArthasServices.MapValue) value_)
                .mergeFrom(value).buildPartial();
          } else {
            value_ = value;
          }
          onChanged();
        } else {
          if (valueCase_ == 7) {
            mapBuilder_.mergeFrom(value);
          }
          mapBuilder_.setMessage(value);
        }
        valueCase_ = 7;
        return this;
      }
      /**
       * .io.arthas.api.MapValue map = 7;
       */
      public Builder clearMap() {
        if (mapBuilder_ == null) {
          if (valueCase_ == 7) {
            valueCase_ = 0;
            value_ = null;
            onChanged();
          }
        } else {
          if (valueCase_ == 7) {
            valueCase_ = 0;
            value_ = null;
          }
          mapBuilder_.clear();
        }
        return this;
      }
      /**
       * .io.arthas.api.MapValue map = 7;
       */
      public io.arthas.api.ArthasServices.MapValue.Builder getMapBuilder() {
        return getMapFieldBuilder().getBuilder();
      }
      /**
       * .io.arthas.api.MapValue map = 7;
       */
      public io.arthas.api.ArthasServices.MapValueOrBuilder getMapOrBuilder() {
        if ((valueCase_ == 7) && (mapBuilder_ != null)) {
          return mapBuilder_.getMessageOrBuilder();
        } else {
          if (valueCase_ == 7) {
            return (io.arthas.api.ArthasServices.MapValue) value_;
          }
          return io.arthas.api.ArthasServices.MapValue.getDefaultInstance();
        }
      }
      /**
       * .io.arthas.api.MapValue map = 7;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          io.arthas.api.ArthasServices.MapValue, io.arthas.api.ArthasServices.MapValue.Builder, io.arthas.api.ArthasServices.MapValueOrBuilder> 
          getMapFieldBuilder() {
        if (mapBuilder_ == null) {
          if (!(valueCase_ == 7)) {
            value_ = io.arthas.api.ArthasServices.MapValue.getDefaultInstance();
          }
          mapBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              io.arthas.api.ArthasServices.MapValue, io.arthas.api.ArthasServices.MapValue.Builder, io.arthas.api.ArthasServices.MapValueOrBuilder>(
                  (io.arthas.api.ArthasServices.MapValue) value_,
                  getParentForChildren(),
                  isClean());
          value_ = null;
        }
        valueCase_ = 7;
        onChanged();;
        return mapBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          io.arthas.api.ArthasServices.UnexpandedObject, io.arthas.api.ArthasServices.UnexpandedObject.Builder, io.arthas.api.ArthasServices.UnexpandedObjectOrBuilder> unexpandedObjectBuilder_;
      /**
       * .io.arthas.api.UnexpandedObject unexpandedObject = 8;
       * @return Whether the unexpandedObject field is set.
       */
      public boolean hasUnexpandedObject() {
        return valueCase_ == 8;
      }
      /**
       * .io.arthas.api.UnexpandedObject unexpandedObject = 8;
       * @return The unexpandedObject.
       */
      public io.arthas.api.ArthasServices.UnexpandedObject getUnexpandedObject() {
        if (unexpandedObjectBuilder_ == null) {
          if (valueCase_ == 8) {
            return (io.arthas.api.ArthasServices.UnexpandedObject) value_;
          }
          return io.arthas.api.ArthasServices.UnexpandedObject.getDefaultInstance();
        } else {
          if (valueCase_ == 8) {
            return unexpandedObjectBuilder_.getMessage();
          }
          return io.arthas.api.ArthasServices.UnexpandedObject.getDefaultInstance();
        }
      }
      /**
       * .io.arthas.api.UnexpandedObject unexpandedObject = 8;
       */
      public Builder setUnexpandedObject(io.arthas.api.ArthasServices.UnexpandedObject value) {
        if (unexpandedObjectBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          value_ = value;
          onChanged();
        } else {
          unexpandedObjectBuilder_.setMessage(value);
        }
        valueCase_ = 8;
        return this;
      }
      /**
       * .io.arthas.api.UnexpandedObject unexpandedObject = 8;
       */
      public Builder setUnexpandedObject(
          io.arthas.api.ArthasServices.UnexpandedObject.Builder builderForValue) {
        if (unexpandedObjectBuilder_ == null) {
          value_ = builderForValue.build();
          onChanged();
        } else {
          unexpandedObjectBuilder_.setMessage(builderForValue.build());
        }
        valueCase_ = 8;
        return this;
      }
      /**
       * .io.arthas.api.UnexpandedObject unexpandedObject = 8;
       */
      public Builder mergeUnexpandedObject(io.arthas.api.ArthasServices.UnexpandedObject value) {
        if (unexpandedObjectBuilder_ == null) {
          if (valueCase_ == 8 &&
              value_ != io.arthas.api.ArthasServices.UnexpandedObject.getDefaultInstance()) {
            value_ = io.arthas.api.ArthasServices.UnexpandedObject.newBuilder((io.arthas.api.ArthasServices.UnexpandedObject) value_)
                .mergeFrom(value).buildPartial();
          } else {
            value_ = value;
          }
          onChanged();
        } else {
          if (valueCase_ == 8) {
            unexpandedObjectBuilder_.mergeFrom(value);
          }
          unexpandedObjectBuilder_.setMessage(value);
        }
        valueCase_ = 8;
        return this;
      }
      /**
       * .io.arthas.api.UnexpandedObject unexpandedObject = 8;
       */
      public Builder clearUnexpandedObject() {
        if (unexpandedObjectBuilder_ == null) {
          if (valueCase_ == 8) {
            valueCase_ = 0;
            value_ = null;
            onChanged();
          }
        } else {
          if (valueCase_ == 8) {
            valueCase_ = 0;
            value_ = null;
          }
          unexpandedObjectBuilder_.clear();
        }
        return this;
      }
      /**
       * .io.arthas.api.UnexpandedObject unexpandedObject = 8;
       */
      public io.arthas.api.ArthasServices.UnexpandedObject.Builder getUnexpandedObjectBuilder() {
        return getUnexpandedObjectFieldBuilder().getBuilder();
      }
      /**
       * .io.arthas.api.UnexpandedObject unexpandedObject = 8;
       */
      public io.arthas.api.ArthasServices.UnexpandedObjectOrBuilder getUnexpandedObjectOrBuilder() {
        if ((valueCase_ == 8) && (unexpandedObjectBuilder_ != null)) {
          return unexpandedObjectBuilder_.getMessageOrBuilder();
        } else {
          if (valueCase_ == 8) {
            return (io.arthas.api.ArthasServices.UnexpandedObject) value_;
          }
          return io.arthas.api.ArthasServices.UnexpandedObject.getDefaultInstance();
        }
      }
      /**
       * .io.arthas.api.UnexpandedObject unexpandedObject = 8;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          io.arthas.api.ArthasServices.UnexpandedObject, io.arthas.api.ArthasServices.UnexpandedObject.Builder, io.arthas.api.ArthasServices.UnexpandedObjectOrBuilder> 
          getUnexpandedObjectFieldBuilder() {
        if (unexpandedObjectBuilder_ == null) {
          if (!(valueCase_ == 8)) {
            value_ = io.arthas.api.ArthasServices.UnexpandedObject.getDefaultInstance();
          }
          unexpandedObjectBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              io.arthas.api.ArthasServices.UnexpandedObject, io.arthas.api.ArthasServices.UnexpandedObject.Builder, io.arthas.api.ArthasServices.UnexpandedObjectOrBuilder>(
                  (io.arthas.api.ArthasServices.UnexpandedObject) value_,
                  getParentForChildren(),
                  isClean());
          value_ = null;
        }
        valueCase_ = 8;
        onChanged();;
        return unexpandedObjectBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          io.arthas.api.ArthasServices.JavaFields, io.arthas.api.ArthasServices.JavaFields.Builder, io.arthas.api.ArthasServices.JavaFieldsOrBuilder> fieldsBuilder_;
      /**
       * .io.arthas.api.JavaFields fields = 9;
       * @return Whether the fields field is set.
       */
      public boolean hasFields() {
        return valueCase_ == 9;
      }
      /**
       * .io.arthas.api.JavaFields fields = 9;
       * @return The fields.
       */
      public io.arthas.api.ArthasServices.JavaFields getFields() {
        if (fieldsBuilder_ == null) {
          if (valueCase_ == 9) {
            return (io.arthas.api.ArthasServices.JavaFields) value_;
          }
          return io.arthas.api.ArthasServices.JavaFields.getDefaultInstance();
        } else {
          if (valueCase_ == 9) {
            return fieldsBuilder_.getMessage();
          }
          return io.arthas.api.ArthasServices.JavaFields.getDefaultInstance();
        }
      }
      /**
       * .io.arthas.api.JavaFields fields = 9;
       */
      public Builder setFields(io.arthas.api.ArthasServices.JavaFields value) {
        if (fieldsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          value_ = value;
          onChanged();
        } else {
          fieldsBuilder_.setMessage(value);
        }
        valueCase_ = 9;
        return this;
      }
      /**
       * .io.arthas.api.JavaFields fields = 9;
       */
      public Builder setFields(
          io.arthas.api.ArthasServices.JavaFields.Builder builderForValue) {
        if (fieldsBuilder_ == null) {
          value_ = builderForValue.build();
          onChanged();
        } else {
          fieldsBuilder_.setMessage(builderForValue.build());
        }
        valueCase_ = 9;
        return this;
      }
      /**
       * .io.arthas.api.JavaFields fields = 9;
       */
      public Builder mergeFields(io.arthas.api.ArthasServices.JavaFields value) {
        if (fieldsBuilder_ == null) {
          if (valueCase_ == 9 &&
              value_ != io.arthas.api.ArthasServices.JavaFields.getDefaultInstance()) {
            value_ = io.arthas.api.ArthasServices.JavaFields.newBuilder((io.arthas.api.ArthasServices.JavaFields) value_)
                .mergeFrom(value).buildPartial();
          } else {
            value_ = value;
          }
          onChanged();
        } else {
          if (valueCase_ == 9) {
            fieldsBuilder_.mergeFrom(value);
          }
          fieldsBuilder_.setMessage(value);
        }
        valueCase_ = 9;
        return this;
      }
      /**
       * .io.arthas.api.JavaFields fields = 9;
       */
      public Builder clearFields() {
        if (fieldsBuilder_ == null) {
          if (valueCase_ == 9) {
            valueCase_ = 0;
            value_ = null;
            onChanged();
          }
        } else {
          if (valueCase_ == 9) {
            valueCase_ = 0;
            value_ = null;
          }
          fieldsBuilder_.clear();
        }
        return this;
      }
      /**
       * .io.arthas.api.JavaFields fields = 9;
       */
      public io.arthas.api.ArthasServices.JavaFields.Builder getFieldsBuilder() {
        return getFieldsFieldBuilder().getBuilder();
      }
      /**
       * .io.arthas.api.JavaFields fields = 9;
       */
      public io.arthas.api.ArthasServices.JavaFieldsOrBuilder getFieldsOrBuilder() {
        if ((valueCase_ == 9) && (fieldsBuilder_ != null)) {
          return fieldsBuilder_.getMessageOrBuilder();
        } else {
          if (valueCase_ == 9) {
            return (io.arthas.api.ArthasServices.JavaFields) value_;
          }
          return io.arthas.api.ArthasServices.JavaFields.getDefaultInstance();
        }
      }
      /**
       * .io.arthas.api.JavaFields fields = 9;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          io.arthas.api.ArthasServices.JavaFields, io.arthas.api.ArthasServices.JavaFields.Builder, io.arthas.api.ArthasServices.JavaFieldsOrBuilder> 
          getFieldsFieldBuilder() {
        if (fieldsBuilder_ == null) {
          if (!(valueCase_ == 9)) {
            value_ = io.arthas.api.ArthasServices.JavaFields.getDefaultInstance();
          }
          fieldsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              io.arthas.api.ArthasServices.JavaFields, io.arthas.api.ArthasServices.JavaFields.Builder, io.arthas.api.ArthasServices.JavaFieldsOrBuilder>(
                  (io.arthas.api.ArthasServices.JavaFields) value_,
                  getParentForChildren(),
                  isClean());
          value_ = null;
        }
        valueCase_ = 9;
        onChanged();;
        return fieldsBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:io.arthas.api.JavaObject)
    }

    // @@protoc_insertion_point(class_scope:io.arthas.api.JavaObject)
    private static final io.arthas.api.ArthasServices.JavaObject DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.arthas.api.ArthasServices.JavaObject();
    }

    public static io.arthas.api.ArthasServices.JavaObject getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public JavaObject parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new JavaObject(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.arthas.api.ArthasServices.JavaObject getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ObjectQueryOrBuilder extends
      // @@protoc_insertion_point(interface_extends:io.arthas.api.ObjectQuery)
      com.google.protobuf.MessageOrBuilder {

    /**
     * string className = 1;
     * @return The className.
     */
    java.lang.String getClassName();
    /**
     * string className = 1;
     * @return The bytes for className.
     */
    com.google.protobuf.ByteString
        getClassNameBytes();

    /**
     * string express = 2;
     * @return The express.
     */
    java.lang.String getExpress();
    /**
     * string express = 2;
     * @return The bytes for express.
     */
    com.google.protobuf.ByteString
        getExpressBytes();

    /**
     * string ClassLoaderHash = 3;
     * @return The classLoaderHash.
     */
    java.lang.String getClassLoaderHash();
    /**
     * string ClassLoaderHash = 3;
     * @return The bytes for classLoaderHash.
     */
    com.google.protobuf.ByteString
        getClassLoaderHashBytes();

    /**
     * string classLoaderClass = 4;
     * @return The classLoaderClass.
     */
    java.lang.String getClassLoaderClass();
    /**
     * string classLoaderClass = 4;
     * @return The bytes for classLoaderClass.
     */
    com.google.protobuf.ByteString
        getClassLoaderClassBytes();

    /**
     * int32 limit = 5;
     * @return The limit.
     */
    int getLimit();

    /**
     * int32 depth = 6;
     * @return The depth.
     */
    int getDepth();

    /**
     * int32 jobId = 7;
     * @return The jobId.
     */
    int getJobId();

    /**
     * int64 resultId = 8;
     * @return The resultId.
     */
    long getResultId();

    /**
     * string resultExpress = 9;
     * @return The resultExpress.
     */
    java.lang.String getResultExpress();
    /**
     * string resultExpress = 9;
     * @return The bytes for resultExpress.
     */
    com.google.protobuf.ByteString
        getResultExpressBytes();
  }
  /**
   * Protobuf type {@code io.arthas.api.ObjectQuery}
   */
  public  static final class ObjectQuery extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:io.arthas.api.ObjectQuery)
      ObjectQueryOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ObjectQuery.newBuilder() to construct.
    private ObjectQuery(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private ObjectQuery() {
      className_ = "";
      express_ = "";
      classLoaderHash_ = "";
      classLoaderClass_ = "";
      resultExpress_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ObjectQuery();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private ObjectQuery(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

              className_ = s;
              break;
            }
            case 18: {
              java.lang.String s = input.readStringRequireUtf8();

              express_ = s;
              break;
            }
            case 26: {
              java.lang.String s = input.readStringRequireUtf8();

              classLoaderHash_ = s;
              break;
            }
            case 34: {
              java.lang.String s = input.readStringRequireUtf8();

              classLoaderClass_ = s;
              break;
            }
            case 40: {

              limit_ = input.readInt32();
              break;
            }
            case 48: {

              depth_ = input.readInt32();
              break;
            }
            case 56: {

              jobId_ = input.readInt32();
              break;
            }
            case 64: {

              resultId_ = input.readInt64();
              break;
            }
            case 74: {
              java.lang.String s = input.readStringRequireUtf8();

              resultExpress_ = s;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              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 io.arthas.api.ArthasServices.internal_static_io_arthas_api_ObjectQuery_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.arthas.api.ArthasServices.internal_static_io_arthas_api_ObjectQuery_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.arthas.api.ArthasServices.ObjectQuery.class, io.arthas.api.ArthasServices.ObjectQuery.Builder.class);
    }

    public static final int CLASSNAME_FIELD_NUMBER = 1;
    private volatile java.lang.Object className_;
    /**
     * string className = 1;
     * @return The className.
     */
    public java.lang.String getClassName() {
      java.lang.Object ref = className_;
      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();
        className_ = s;
        return s;
      }
    }
    /**
     * string className = 1;
     * @return The bytes for className.
     */
    public com.google.protobuf.ByteString
        getClassNameBytes() {
      java.lang.Object ref = className_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        className_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int EXPRESS_FIELD_NUMBER = 2;
    private volatile java.lang.Object express_;
    /**
     * string express = 2;
     * @return The express.
     */
    public java.lang.String getExpress() {
      java.lang.Object ref = express_;
      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();
        express_ = s;
        return s;
      }
    }
    /**
     * string express = 2;
     * @return The bytes for express.
     */
    public com.google.protobuf.ByteString
        getExpressBytes() {
      java.lang.Object ref = express_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        express_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int CLASSLOADERHASH_FIELD_NUMBER = 3;
    private volatile java.lang.Object classLoaderHash_;
    /**
     * string ClassLoaderHash = 3;
     * @return The classLoaderHash.
     */
    public java.lang.String getClassLoaderHash() {
      java.lang.Object ref = classLoaderHash_;
      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();
        classLoaderHash_ = s;
        return s;
      }
    }
    /**
     * string ClassLoaderHash = 3;
     * @return The bytes for classLoaderHash.
     */
    public com.google.protobuf.ByteString
        getClassLoaderHashBytes() {
      java.lang.Object ref = classLoaderHash_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        classLoaderHash_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int CLASSLOADERCLASS_FIELD_NUMBER = 4;
    private volatile java.lang.Object classLoaderClass_;
    /**
     * string classLoaderClass = 4;
     * @return The classLoaderClass.
     */
    public java.lang.String getClassLoaderClass() {
      java.lang.Object ref = classLoaderClass_;
      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();
        classLoaderClass_ = s;
        return s;
      }
    }
    /**
     * string classLoaderClass = 4;
     * @return The bytes for classLoaderClass.
     */
    public com.google.protobuf.ByteString
        getClassLoaderClassBytes() {
      java.lang.Object ref = classLoaderClass_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        classLoaderClass_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int LIMIT_FIELD_NUMBER = 5;
    private int limit_;
    /**
     * int32 limit = 5;
     * @return The limit.
     */
    public int getLimit() {
      return limit_;
    }

    public static final int DEPTH_FIELD_NUMBER = 6;
    private int depth_;
    /**
     * int32 depth = 6;
     * @return The depth.
     */
    public int getDepth() {
      return depth_;
    }

    public static final int JOBID_FIELD_NUMBER = 7;
    private int jobId_;
    /**
     * int32 jobId = 7;
     * @return The jobId.
     */
    public int getJobId() {
      return jobId_;
    }

    public static final int RESULTID_FIELD_NUMBER = 8;
    private long resultId_;
    /**
     * int64 resultId = 8;
     * @return The resultId.
     */
    public long getResultId() {
      return resultId_;
    }

    public static final int RESULTEXPRESS_FIELD_NUMBER = 9;
    private volatile java.lang.Object resultExpress_;
    /**
     * string resultExpress = 9;
     * @return The resultExpress.
     */
    public java.lang.String getResultExpress() {
      java.lang.Object ref = resultExpress_;
      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();
        resultExpress_ = s;
        return s;
      }
    }
    /**
     * string resultExpress = 9;
     * @return The bytes for resultExpress.
     */
    public com.google.protobuf.ByteString
        getResultExpressBytes() {
      java.lang.Object ref = resultExpress_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        resultExpress_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getClassNameBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, className_);
      }
      if (!getExpressBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, express_);
      }
      if (!getClassLoaderHashBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, classLoaderHash_);
      }
      if (!getClassLoaderClassBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, classLoaderClass_);
      }
      if (limit_ != 0) {
        output.writeInt32(5, limit_);
      }
      if (depth_ != 0) {
        output.writeInt32(6, depth_);
      }
      if (jobId_ != 0) {
        output.writeInt32(7, jobId_);
      }
      if (resultId_ != 0L) {
        output.writeInt64(8, resultId_);
      }
      if (!getResultExpressBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 9, resultExpress_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!getClassNameBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, className_);
      }
      if (!getExpressBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, express_);
      }
      if (!getClassLoaderHashBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, classLoaderHash_);
      }
      if (!getClassLoaderClassBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, classLoaderClass_);
      }
      if (limit_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(5, limit_);
      }
      if (depth_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(6, depth_);
      }
      if (jobId_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(7, jobId_);
      }
      if (resultId_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(8, resultId_);
      }
      if (!getResultExpressBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(9, resultExpress_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof io.arthas.api.ArthasServices.ObjectQuery)) {
        return super.equals(obj);
      }
      io.arthas.api.ArthasServices.ObjectQuery other = (io.arthas.api.ArthasServices.ObjectQuery) obj;

      if (!getClassName()
          .equals(other.getClassName())) return false;
      if (!getExpress()
          .equals(other.getExpress())) return false;
      if (!getClassLoaderHash()
          .equals(other.getClassLoaderHash())) return false;
      if (!getClassLoaderClass()
          .equals(other.getClassLoaderClass())) return false;
      if (getLimit()
          != other.getLimit()) return false;
      if (getDepth()
          != other.getDepth()) return false;
      if (getJobId()
          != other.getJobId()) return false;
      if (getResultId()
          != other.getResultId()) return false;
      if (!getResultExpress()
          .equals(other.getResultExpress())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + CLASSNAME_FIELD_NUMBER;
      hash = (53 * hash) + getClassName().hashCode();
      hash = (37 * hash) + EXPRESS_FIELD_NUMBER;
      hash = (53 * hash) + getExpress().hashCode();
      hash = (37 * hash) + CLASSLOADERHASH_FIELD_NUMBER;
      hash = (53 * hash) + getClassLoaderHash().hashCode();
      hash = (37 * hash) + CLASSLOADERCLASS_FIELD_NUMBER;
      hash = (53 * hash) + getClassLoaderClass().hashCode();
      hash = (37 * hash) + LIMIT_FIELD_NUMBER;
      hash = (53 * hash) + getLimit();
      hash = (37 * hash) + DEPTH_FIELD_NUMBER;
      hash = (53 * hash) + getDepth();
      hash = (37 * hash) + JOBID_FIELD_NUMBER;
      hash = (53 * hash) + getJobId();
      hash = (37 * hash) + RESULTID_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getResultId());
      hash = (37 * hash) + RESULTEXPRESS_FIELD_NUMBER;
      hash = (53 * hash) + getResultExpress().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.arthas.api.ArthasServices.ObjectQuery parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.arthas.api.ArthasServices.ObjectQuery parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.arthas.api.ArthasServices.ObjectQuery parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.arthas.api.ArthasServices.ObjectQuery parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.arthas.api.ArthasServices.ObjectQuery parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.arthas.api.ArthasServices.ObjectQuery parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.arthas.api.ArthasServices.ObjectQuery parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.arthas.api.ArthasServices.ObjectQuery 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 io.arthas.api.ArthasServices.ObjectQuery parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static io.arthas.api.ArthasServices.ObjectQuery 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 io.arthas.api.ArthasServices.ObjectQuery parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.arthas.api.ArthasServices.ObjectQuery parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(io.arthas.api.ArthasServices.ObjectQuery prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    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 io.arthas.api.ObjectQuery}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:io.arthas.api.ObjectQuery)
        io.arthas.api.ArthasServices.ObjectQueryOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.arthas.api.ArthasServices.internal_static_io_arthas_api_ObjectQuery_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.arthas.api.ArthasServices.internal_static_io_arthas_api_ObjectQuery_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.arthas.api.ArthasServices.ObjectQuery.class, io.arthas.api.ArthasServices.ObjectQuery.Builder.class);
      }

      // Construct using io.arthas.api.ArthasServices.ObjectQuery.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        className_ = "";

        express_ = "";

        classLoaderHash_ = "";

        classLoaderClass_ = "";

        limit_ = 0;

        depth_ = 0;

        jobId_ = 0;

        resultId_ = 0L;

        resultExpress_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.arthas.api.ArthasServices.internal_static_io_arthas_api_ObjectQuery_descriptor;
      }

      @java.lang.Override
      public io.arthas.api.ArthasServices.ObjectQuery getDefaultInstanceForType() {
        return io.arthas.api.ArthasServices.ObjectQuery.getDefaultInstance();
      }

      @java.lang.Override
      public io.arthas.api.ArthasServices.ObjectQuery build() {
        io.arthas.api.ArthasServices.ObjectQuery result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.arthas.api.ArthasServices.ObjectQuery buildPartial() {
        io.arthas.api.ArthasServices.ObjectQuery result = new io.arthas.api.ArthasServices.ObjectQuery(this);
        result.className_ = className_;
        result.express_ = express_;
        result.classLoaderHash_ = classLoaderHash_;
        result.classLoaderClass_ = classLoaderClass_;
        result.limit_ = limit_;
        result.depth_ = depth_;
        result.jobId_ = jobId_;
        result.resultId_ = resultId_;
        result.resultExpress_ = resultExpress_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.arthas.api.ArthasServices.ObjectQuery) {
          return mergeFrom((io.arthas.api.ArthasServices.ObjectQuery)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.arthas.api.ArthasServices.ObjectQuery other) {
        if (other == io.arthas.api.ArthasServices.ObjectQuery.getDefaultInstance()) return this;
        if (!other.getClassName().isEmpty()) {
          className_ = other.className_;
          onChanged();
        }
        if (!other.getExpress().isEmpty()) {
          express_ = other.express_;
          onChanged();
        }
        if (!other.getClassLoaderHash().isEmpty()) {
          classLoaderHash_ = other.classLoaderHash_;
          onChanged();
        }
        if (!other.getClassLoaderClass().isEmpty()) {
          classLoaderClass_ = other.classLoaderClass_;
          onChanged();
        }
        if (other.getLimit() != 0) {
          setLimit(other.getLimit());
        }
        if (other.getDepth() != 0) {
          setDepth(other.getDepth());
        }
        if (other.getJobId() != 0) {
          setJobId(other.getJobId());
        }
        if (other.getResultId() != 0L) {
          setResultId(other.getResultId());
        }
        if (!other.getResultExpress().isEmpty()) {
          resultExpress_ = other.resultExpress_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        io.arthas.api.ArthasServices.ObjectQuery parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (io.arthas.api.ArthasServices.ObjectQuery) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object className_ = "";
      /**
       * string className = 1;
       * @return The className.
       */
      public java.lang.String getClassName() {
        java.lang.Object ref = className_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          className_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string className = 1;
       * @return The bytes for className.
       */
      public com.google.protobuf.ByteString
          getClassNameBytes() {
        java.lang.Object ref = className_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          className_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string className = 1;
       * @param value The className to set.
       * @return This builder for chaining.
       */
      public Builder setClassName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        className_ = value;
        onChanged();
        return this;
      }
      /**
       * string className = 1;
       * @return This builder for chaining.
       */
      public Builder clearClassName() {
        
        className_ = getDefaultInstance().getClassName();
        onChanged();
        return this;
      }
      /**
       * string className = 1;
       * @param value The bytes for className to set.
       * @return This builder for chaining.
       */
      public Builder setClassNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        className_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object express_ = "";
      /**
       * string express = 2;
       * @return The express.
       */
      public java.lang.String getExpress() {
        java.lang.Object ref = express_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          express_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string express = 2;
       * @return The bytes for express.
       */
      public com.google.protobuf.ByteString
          getExpressBytes() {
        java.lang.Object ref = express_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          express_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string express = 2;
       * @param value The express to set.
       * @return This builder for chaining.
       */
      public Builder setExpress(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        express_ = value;
        onChanged();
        return this;
      }
      /**
       * string express = 2;
       * @return This builder for chaining.
       */
      public Builder clearExpress() {
        
        express_ = getDefaultInstance().getExpress();
        onChanged();
        return this;
      }
      /**
       * string express = 2;
       * @param value The bytes for express to set.
       * @return This builder for chaining.
       */
      public Builder setExpressBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        express_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object classLoaderHash_ = "";
      /**
       * string ClassLoaderHash = 3;
       * @return The classLoaderHash.
       */
      public java.lang.String getClassLoaderHash() {
        java.lang.Object ref = classLoaderHash_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          classLoaderHash_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string ClassLoaderHash = 3;
       * @return The bytes for classLoaderHash.
       */
      public com.google.protobuf.ByteString
          getClassLoaderHashBytes() {
        java.lang.Object ref = classLoaderHash_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          classLoaderHash_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string ClassLoaderHash = 3;
       * @param value The classLoaderHash to set.
       * @return This builder for chaining.
       */
      public Builder setClassLoaderHash(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        classLoaderHash_ = value;
        onChanged();
        return this;
      }
      /**
       * string ClassLoaderHash = 3;
       * @return This builder for chaining.
       */
      public Builder clearClassLoaderHash() {
        
        classLoaderHash_ = getDefaultInstance().getClassLoaderHash();
        onChanged();
        return this;
      }
      /**
       * string ClassLoaderHash = 3;
       * @param value The bytes for classLoaderHash to set.
       * @return This builder for chaining.
       */
      public Builder setClassLoaderHashBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        classLoaderHash_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object classLoaderClass_ = "";
      /**
       * string classLoaderClass = 4;
       * @return The classLoaderClass.
       */
      public java.lang.String getClassLoaderClass() {
        java.lang.Object ref = classLoaderClass_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          classLoaderClass_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string classLoaderClass = 4;
       * @return The bytes for classLoaderClass.
       */
      public com.google.protobuf.ByteString
          getClassLoaderClassBytes() {
        java.lang.Object ref = classLoaderClass_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          classLoaderClass_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string classLoaderClass = 4;
       * @param value The classLoaderClass to set.
       * @return This builder for chaining.
       */
      public Builder setClassLoaderClass(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        classLoaderClass_ = value;
        onChanged();
        return this;
      }
      /**
       * string classLoaderClass = 4;
       * @return This builder for chaining.
       */
      public Builder clearClassLoaderClass() {
        
        classLoaderClass_ = getDefaultInstance().getClassLoaderClass();
        onChanged();
        return this;
      }
      /**
       * string classLoaderClass = 4;
       * @param value The bytes for classLoaderClass to set.
       * @return This builder for chaining.
       */
      public Builder setClassLoaderClassBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        classLoaderClass_ = value;
        onChanged();
        return this;
      }

      private int limit_ ;
      /**
       * int32 limit = 5;
       * @return The limit.
       */
      public int getLimit() {
        return limit_;
      }
      /**
       * int32 limit = 5;
       * @param value The limit to set.
       * @return This builder for chaining.
       */
      public Builder setLimit(int value) {
        
        limit_ = value;
        onChanged();
        return this;
      }
      /**
       * int32 limit = 5;
       * @return This builder for chaining.
       */
      public Builder clearLimit() {
        
        limit_ = 0;
        onChanged();
        return this;
      }

      private int depth_ ;
      /**
       * int32 depth = 6;
       * @return The depth.
       */
      public int getDepth() {
        return depth_;
      }
      /**
       * int32 depth = 6;
       * @param value The depth to set.
       * @return This builder for chaining.
       */
      public Builder setDepth(int value) {
        
        depth_ = value;
        onChanged();
        return this;
      }
      /**
       * int32 depth = 6;
       * @return This builder for chaining.
       */
      public Builder clearDepth() {
        
        depth_ = 0;
        onChanged();
        return this;
      }

      private int jobId_ ;
      /**
       * int32 jobId = 7;
       * @return The jobId.
       */
      public int getJobId() {
        return jobId_;
      }
      /**
       * int32 jobId = 7;
       * @param value The jobId to set.
       * @return This builder for chaining.
       */
      public Builder setJobId(int value) {
        
        jobId_ = value;
        onChanged();
        return this;
      }
      /**
       * int32 jobId = 7;
       * @return This builder for chaining.
       */
      public Builder clearJobId() {
        
        jobId_ = 0;
        onChanged();
        return this;
      }

      private long resultId_ ;
      /**
       * int64 resultId = 8;
       * @return The resultId.
       */
      public long getResultId() {
        return resultId_;
      }
      /**
       * int64 resultId = 8;
       * @param value The resultId to set.
       * @return This builder for chaining.
       */
      public Builder setResultId(long value) {
        
        resultId_ = value;
        onChanged();
        return this;
      }
      /**
       * int64 resultId = 8;
       * @return This builder for chaining.
       */
      public Builder clearResultId() {
        
        resultId_ = 0L;
        onChanged();
        return this;
      }

      private java.lang.Object resultExpress_ = "";
      /**
       * string resultExpress = 9;
       * @return The resultExpress.
       */
      public java.lang.String getResultExpress() {
        java.lang.Object ref = resultExpress_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          resultExpress_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string resultExpress = 9;
       * @return The bytes for resultExpress.
       */
      public com.google.protobuf.ByteString
          getResultExpressBytes() {
        java.lang.Object ref = resultExpress_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          resultExpress_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string resultExpress = 9;
       * @param value The resultExpress to set.
       * @return This builder for chaining.
       */
      public Builder setResultExpress(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        resultExpress_ = value;
        onChanged();
        return this;
      }
      /**
       * string resultExpress = 9;
       * @return This builder for chaining.
       */
      public Builder clearResultExpress() {
        
        resultExpress_ = getDefaultInstance().getResultExpress();
        onChanged();
        return this;
      }
      /**
       * string resultExpress = 9;
       * @param value The bytes for resultExpress to set.
       * @return This builder for chaining.
       */
      public Builder setResultExpressBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        resultExpress_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:io.arthas.api.ObjectQuery)
    }

    // @@protoc_insertion_point(class_scope:io.arthas.api.ObjectQuery)
    private static final io.arthas.api.ArthasServices.ObjectQuery DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.arthas.api.ArthasServices.ObjectQuery();
    }

    public static io.arthas.api.ArthasServices.ObjectQuery getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public ObjectQuery parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new ObjectQuery(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.arthas.api.ArthasServices.ObjectQuery getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ObjectQueryResultOrBuilder extends
      // @@protoc_insertion_point(interface_extends:io.arthas.api.ObjectQueryResult)
      com.google.protobuf.MessageOrBuilder {

    /**
     * bool success = 1;
     * @return The success.
     */
    boolean getSuccess();

    /**
     * string message = 2;
     * @return The message.
     */
    java.lang.String getMessage();
    /**
     * string message = 2;
     * @return The bytes for message.
     */
    com.google.protobuf.ByteString
        getMessageBytes();

    /**
     * repeated .io.arthas.api.JavaObject objects = 3;
     */
    java.util.List 
        getObjectsList();
    /**
     * repeated .io.arthas.api.JavaObject objects = 3;
     */
    io.arthas.api.ArthasServices.JavaObject getObjects(int index);
    /**
     * repeated .io.arthas.api.JavaObject objects = 3;
     */
    int getObjectsCount();
    /**
     * repeated .io.arthas.api.JavaObject objects = 3;
     */
    java.util.List 
        getObjectsOrBuilderList();
    /**
     * repeated .io.arthas.api.JavaObject objects = 3;
     */
    io.arthas.api.ArthasServices.JavaObjectOrBuilder getObjectsOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code io.arthas.api.ObjectQueryResult}
   */
  public  static final class ObjectQueryResult extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:io.arthas.api.ObjectQueryResult)
      ObjectQueryResultOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ObjectQueryResult.newBuilder() to construct.
    private ObjectQueryResult(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private ObjectQueryResult() {
      message_ = "";
      objects_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ObjectQueryResult();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private ObjectQueryResult(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 8: {

              success_ = input.readBool();
              break;
            }
            case 18: {
              java.lang.String s = input.readStringRequireUtf8();

              message_ = s;
              break;
            }
            case 26: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                objects_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000001;
              }
              objects_.add(
                  input.readMessage(io.arthas.api.ArthasServices.JavaObject.parser(), extensionRegistry));
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              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) != 0)) {
          objects_ = java.util.Collections.unmodifiableList(objects_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return io.arthas.api.ArthasServices.internal_static_io_arthas_api_ObjectQueryResult_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.arthas.api.ArthasServices.internal_static_io_arthas_api_ObjectQueryResult_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.arthas.api.ArthasServices.ObjectQueryResult.class, io.arthas.api.ArthasServices.ObjectQueryResult.Builder.class);
    }

    public static final int SUCCESS_FIELD_NUMBER = 1;
    private boolean success_;
    /**
     * bool success = 1;
     * @return The success.
     */
    public boolean getSuccess() {
      return success_;
    }

    public static final int MESSAGE_FIELD_NUMBER = 2;
    private volatile java.lang.Object message_;
    /**
     * string message = 2;
     * @return The message.
     */
    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();
        message_ = s;
        return s;
      }
    }
    /**
     * string message = 2;
     * @return The bytes for message.
     */
    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;
      }
    }

    public static final int OBJECTS_FIELD_NUMBER = 3;
    private java.util.List objects_;
    /**
     * repeated .io.arthas.api.JavaObject objects = 3;
     */
    public java.util.List getObjectsList() {
      return objects_;
    }
    /**
     * repeated .io.arthas.api.JavaObject objects = 3;
     */
    public java.util.List 
        getObjectsOrBuilderList() {
      return objects_;
    }
    /**
     * repeated .io.arthas.api.JavaObject objects = 3;
     */
    public int getObjectsCount() {
      return objects_.size();
    }
    /**
     * repeated .io.arthas.api.JavaObject objects = 3;
     */
    public io.arthas.api.ArthasServices.JavaObject getObjects(int index) {
      return objects_.get(index);
    }
    /**
     * repeated .io.arthas.api.JavaObject objects = 3;
     */
    public io.arthas.api.ArthasServices.JavaObjectOrBuilder getObjectsOrBuilder(
        int index) {
      return objects_.get(index);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (success_ != false) {
        output.writeBool(1, success_);
      }
      if (!getMessageBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, message_);
      }
      for (int i = 0; i < objects_.size(); i++) {
        output.writeMessage(3, objects_.get(i));
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (success_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(1, success_);
      }
      if (!getMessageBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, message_);
      }
      for (int i = 0; i < objects_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, objects_.get(i));
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof io.arthas.api.ArthasServices.ObjectQueryResult)) {
        return super.equals(obj);
      }
      io.arthas.api.ArthasServices.ObjectQueryResult other = (io.arthas.api.ArthasServices.ObjectQueryResult) obj;

      if (getSuccess()
          != other.getSuccess()) return false;
      if (!getMessage()
          .equals(other.getMessage())) return false;
      if (!getObjectsList()
          .equals(other.getObjectsList())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + SUCCESS_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getSuccess());
      hash = (37 * hash) + MESSAGE_FIELD_NUMBER;
      hash = (53 * hash) + getMessage().hashCode();
      if (getObjectsCount() > 0) {
        hash = (37 * hash) + OBJECTS_FIELD_NUMBER;
        hash = (53 * hash) + getObjectsList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.arthas.api.ArthasServices.ObjectQueryResult parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.arthas.api.ArthasServices.ObjectQueryResult parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.arthas.api.ArthasServices.ObjectQueryResult parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.arthas.api.ArthasServices.ObjectQueryResult parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.arthas.api.ArthasServices.ObjectQueryResult parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.arthas.api.ArthasServices.ObjectQueryResult parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.arthas.api.ArthasServices.ObjectQueryResult parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.arthas.api.ArthasServices.ObjectQueryResult 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 io.arthas.api.ArthasServices.ObjectQueryResult parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static io.arthas.api.ArthasServices.ObjectQueryResult 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 io.arthas.api.ArthasServices.ObjectQueryResult parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.arthas.api.ArthasServices.ObjectQueryResult parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(io.arthas.api.ArthasServices.ObjectQueryResult prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    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 io.arthas.api.ObjectQueryResult}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:io.arthas.api.ObjectQueryResult)
        io.arthas.api.ArthasServices.ObjectQueryResultOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.arthas.api.ArthasServices.internal_static_io_arthas_api_ObjectQueryResult_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.arthas.api.ArthasServices.internal_static_io_arthas_api_ObjectQueryResult_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.arthas.api.ArthasServices.ObjectQueryResult.class, io.arthas.api.ArthasServices.ObjectQueryResult.Builder.class);
      }

      // Construct using io.arthas.api.ArthasServices.ObjectQueryResult.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getObjectsFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        success_ = false;

        message_ = "";

        if (objectsBuilder_ == null) {
          objects_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          objectsBuilder_.clear();
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.arthas.api.ArthasServices.internal_static_io_arthas_api_ObjectQueryResult_descriptor;
      }

      @java.lang.Override
      public io.arthas.api.ArthasServices.ObjectQueryResult getDefaultInstanceForType() {
        return io.arthas.api.ArthasServices.ObjectQueryResult.getDefaultInstance();
      }

      @java.lang.Override
      public io.arthas.api.ArthasServices.ObjectQueryResult build() {
        io.arthas.api.ArthasServices.ObjectQueryResult result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.arthas.api.ArthasServices.ObjectQueryResult buildPartial() {
        io.arthas.api.ArthasServices.ObjectQueryResult result = new io.arthas.api.ArthasServices.ObjectQueryResult(this);
        int from_bitField0_ = bitField0_;
        result.success_ = success_;
        result.message_ = message_;
        if (objectsBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            objects_ = java.util.Collections.unmodifiableList(objects_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.objects_ = objects_;
        } else {
          result.objects_ = objectsBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.arthas.api.ArthasServices.ObjectQueryResult) {
          return mergeFrom((io.arthas.api.ArthasServices.ObjectQueryResult)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.arthas.api.ArthasServices.ObjectQueryResult other) {
        if (other == io.arthas.api.ArthasServices.ObjectQueryResult.getDefaultInstance()) return this;
        if (other.getSuccess() != false) {
          setSuccess(other.getSuccess());
        }
        if (!other.getMessage().isEmpty()) {
          message_ = other.message_;
          onChanged();
        }
        if (objectsBuilder_ == null) {
          if (!other.objects_.isEmpty()) {
            if (objects_.isEmpty()) {
              objects_ = other.objects_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureObjectsIsMutable();
              objects_.addAll(other.objects_);
            }
            onChanged();
          }
        } else {
          if (!other.objects_.isEmpty()) {
            if (objectsBuilder_.isEmpty()) {
              objectsBuilder_.dispose();
              objectsBuilder_ = null;
              objects_ = other.objects_;
              bitField0_ = (bitField0_ & ~0x00000001);
              objectsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getObjectsFieldBuilder() : null;
            } else {
              objectsBuilder_.addAllMessages(other.objects_);
            }
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        io.arthas.api.ArthasServices.ObjectQueryResult parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (io.arthas.api.ArthasServices.ObjectQueryResult) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private boolean success_ ;
      /**
       * bool success = 1;
       * @return The success.
       */
      public boolean getSuccess() {
        return success_;
      }
      /**
       * bool success = 1;
       * @param value The success to set.
       * @return This builder for chaining.
       */
      public Builder setSuccess(boolean value) {
        
        success_ = value;
        onChanged();
        return this;
      }
      /**
       * bool success = 1;
       * @return This builder for chaining.
       */
      public Builder clearSuccess() {
        
        success_ = false;
        onChanged();
        return this;
      }

      private java.lang.Object message_ = "";
      /**
       * string message = 2;
       * @return The message.
       */
      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();
          message_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string message = 2;
       * @return The bytes for message.
       */
      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;
        }
      }
      /**
       * string message = 2;
       * @param value The message to set.
       * @return This builder for chaining.
       */
      public Builder setMessage(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        message_ = value;
        onChanged();
        return this;
      }
      /**
       * string message = 2;
       * @return This builder for chaining.
       */
      public Builder clearMessage() {
        
        message_ = getDefaultInstance().getMessage();
        onChanged();
        return this;
      }
      /**
       * string message = 2;
       * @param value The bytes for message to set.
       * @return This builder for chaining.
       */
      public Builder setMessageBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        message_ = value;
        onChanged();
        return this;
      }

      private java.util.List objects_ =
        java.util.Collections.emptyList();
      private void ensureObjectsIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          objects_ = new java.util.ArrayList(objects_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          io.arthas.api.ArthasServices.JavaObject, io.arthas.api.ArthasServices.JavaObject.Builder, io.arthas.api.ArthasServices.JavaObjectOrBuilder> objectsBuilder_;

      /**
       * repeated .io.arthas.api.JavaObject objects = 3;
       */
      public java.util.List getObjectsList() {
        if (objectsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(objects_);
        } else {
          return objectsBuilder_.getMessageList();
        }
      }
      /**
       * repeated .io.arthas.api.JavaObject objects = 3;
       */
      public int getObjectsCount() {
        if (objectsBuilder_ == null) {
          return objects_.size();
        } else {
          return objectsBuilder_.getCount();
        }
      }
      /**
       * repeated .io.arthas.api.JavaObject objects = 3;
       */
      public io.arthas.api.ArthasServices.JavaObject getObjects(int index) {
        if (objectsBuilder_ == null) {
          return objects_.get(index);
        } else {
          return objectsBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .io.arthas.api.JavaObject objects = 3;
       */
      public Builder setObjects(
          int index, io.arthas.api.ArthasServices.JavaObject value) {
        if (objectsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureObjectsIsMutable();
          objects_.set(index, value);
          onChanged();
        } else {
          objectsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .io.arthas.api.JavaObject objects = 3;
       */
      public Builder setObjects(
          int index, io.arthas.api.ArthasServices.JavaObject.Builder builderForValue) {
        if (objectsBuilder_ == null) {
          ensureObjectsIsMutable();
          objects_.set(index, builderForValue.build());
          onChanged();
        } else {
          objectsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .io.arthas.api.JavaObject objects = 3;
       */
      public Builder addObjects(io.arthas.api.ArthasServices.JavaObject value) {
        if (objectsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureObjectsIsMutable();
          objects_.add(value);
          onChanged();
        } else {
          objectsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .io.arthas.api.JavaObject objects = 3;
       */
      public Builder addObjects(
          int index, io.arthas.api.ArthasServices.JavaObject value) {
        if (objectsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureObjectsIsMutable();
          objects_.add(index, value);
          onChanged();
        } else {
          objectsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .io.arthas.api.JavaObject objects = 3;
       */
      public Builder addObjects(
          io.arthas.api.ArthasServices.JavaObject.Builder builderForValue) {
        if (objectsBuilder_ == null) {
          ensureObjectsIsMutable();
          objects_.add(builderForValue.build());
          onChanged();
        } else {
          objectsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .io.arthas.api.JavaObject objects = 3;
       */
      public Builder addObjects(
          int index, io.arthas.api.ArthasServices.JavaObject.Builder builderForValue) {
        if (objectsBuilder_ == null) {
          ensureObjectsIsMutable();
          objects_.add(index, builderForValue.build());
          onChanged();
        } else {
          objectsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .io.arthas.api.JavaObject objects = 3;
       */
      public Builder addAllObjects(
          java.lang.Iterable values) {
        if (objectsBuilder_ == null) {
          ensureObjectsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, objects_);
          onChanged();
        } else {
          objectsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .io.arthas.api.JavaObject objects = 3;
       */
      public Builder clearObjects() {
        if (objectsBuilder_ == null) {
          objects_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          objectsBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .io.arthas.api.JavaObject objects = 3;
       */
      public Builder removeObjects(int index) {
        if (objectsBuilder_ == null) {
          ensureObjectsIsMutable();
          objects_.remove(index);
          onChanged();
        } else {
          objectsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .io.arthas.api.JavaObject objects = 3;
       */
      public io.arthas.api.ArthasServices.JavaObject.Builder getObjectsBuilder(
          int index) {
        return getObjectsFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .io.arthas.api.JavaObject objects = 3;
       */
      public io.arthas.api.ArthasServices.JavaObjectOrBuilder getObjectsOrBuilder(
          int index) {
        if (objectsBuilder_ == null) {
          return objects_.get(index);  } else {
          return objectsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .io.arthas.api.JavaObject objects = 3;
       */
      public java.util.List 
           getObjectsOrBuilderList() {
        if (objectsBuilder_ != null) {
          return objectsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(objects_);
        }
      }
      /**
       * repeated .io.arthas.api.JavaObject objects = 3;
       */
      public io.arthas.api.ArthasServices.JavaObject.Builder addObjectsBuilder() {
        return getObjectsFieldBuilder().addBuilder(
            io.arthas.api.ArthasServices.JavaObject.getDefaultInstance());
      }
      /**
       * repeated .io.arthas.api.JavaObject objects = 3;
       */
      public io.arthas.api.ArthasServices.JavaObject.Builder addObjectsBuilder(
          int index) {
        return getObjectsFieldBuilder().addBuilder(
            index, io.arthas.api.ArthasServices.JavaObject.getDefaultInstance());
      }
      /**
       * repeated .io.arthas.api.JavaObject objects = 3;
       */
      public java.util.List 
           getObjectsBuilderList() {
        return getObjectsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          io.arthas.api.ArthasServices.JavaObject, io.arthas.api.ArthasServices.JavaObject.Builder, io.arthas.api.ArthasServices.JavaObjectOrBuilder> 
          getObjectsFieldBuilder() {
        if (objectsBuilder_ == null) {
          objectsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              io.arthas.api.ArthasServices.JavaObject, io.arthas.api.ArthasServices.JavaObject.Builder, io.arthas.api.ArthasServices.JavaObjectOrBuilder>(
                  objects_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          objects_ = null;
        }
        return objectsBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:io.arthas.api.ObjectQueryResult)
    }

    // @@protoc_insertion_point(class_scope:io.arthas.api.ObjectQueryResult)
    private static final io.arthas.api.ArthasServices.ObjectQueryResult DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.arthas.api.ArthasServices.ObjectQueryResult();
    }

    public static io.arthas.api.ArthasServices.ObjectQueryResult getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public ObjectQueryResult parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new ObjectQueryResult(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.arthas.api.ArthasServices.ObjectQueryResult getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface StringKeyOrBuilder extends
      // @@protoc_insertion_point(interface_extends:io.arthas.api.StringKey)
      com.google.protobuf.MessageOrBuilder {

    /**
     * string key = 1;
     * @return The key.
     */
    java.lang.String getKey();
    /**
     * string key = 1;
     * @return The bytes for key.
     */
    com.google.protobuf.ByteString
        getKeyBytes();
  }
  /**
   * Protobuf type {@code io.arthas.api.StringKey}
   */
  public  static final class StringKey extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:io.arthas.api.StringKey)
      StringKeyOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use StringKey.newBuilder() to construct.
    private StringKey(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private StringKey() {
      key_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new StringKey();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private StringKey(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

              key_ = s;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              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 io.arthas.api.ArthasServices.internal_static_io_arthas_api_StringKey_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.arthas.api.ArthasServices.internal_static_io_arthas_api_StringKey_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.arthas.api.ArthasServices.StringKey.class, io.arthas.api.ArthasServices.StringKey.Builder.class);
    }

    public static final int KEY_FIELD_NUMBER = 1;
    private volatile java.lang.Object key_;
    /**
     * string key = 1;
     * @return The key.
     */
    public java.lang.String getKey() {
      java.lang.Object ref = key_;
      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();
        key_ = s;
        return s;
      }
    }
    /**
     * string key = 1;
     * @return The bytes for key.
     */
    public com.google.protobuf.ByteString
        getKeyBytes() {
      java.lang.Object ref = key_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        key_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getKeyBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, key_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!getKeyBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, key_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof io.arthas.api.ArthasServices.StringKey)) {
        return super.equals(obj);
      }
      io.arthas.api.ArthasServices.StringKey other = (io.arthas.api.ArthasServices.StringKey) obj;

      if (!getKey()
          .equals(other.getKey())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + KEY_FIELD_NUMBER;
      hash = (53 * hash) + getKey().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.arthas.api.ArthasServices.StringKey parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.arthas.api.ArthasServices.StringKey parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.arthas.api.ArthasServices.StringKey parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.arthas.api.ArthasServices.StringKey parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.arthas.api.ArthasServices.StringKey parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.arthas.api.ArthasServices.StringKey parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.arthas.api.ArthasServices.StringKey parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.arthas.api.ArthasServices.StringKey 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 io.arthas.api.ArthasServices.StringKey parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static io.arthas.api.ArthasServices.StringKey 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 io.arthas.api.ArthasServices.StringKey parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.arthas.api.ArthasServices.StringKey parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(io.arthas.api.ArthasServices.StringKey prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    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 io.arthas.api.StringKey}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:io.arthas.api.StringKey)
        io.arthas.api.ArthasServices.StringKeyOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.arthas.api.ArthasServices.internal_static_io_arthas_api_StringKey_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.arthas.api.ArthasServices.internal_static_io_arthas_api_StringKey_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.arthas.api.ArthasServices.StringKey.class, io.arthas.api.ArthasServices.StringKey.Builder.class);
      }

      // Construct using io.arthas.api.ArthasServices.StringKey.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        key_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.arthas.api.ArthasServices.internal_static_io_arthas_api_StringKey_descriptor;
      }

      @java.lang.Override
      public io.arthas.api.ArthasServices.StringKey getDefaultInstanceForType() {
        return io.arthas.api.ArthasServices.StringKey.getDefaultInstance();
      }

      @java.lang.Override
      public io.arthas.api.ArthasServices.StringKey build() {
        io.arthas.api.ArthasServices.StringKey result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.arthas.api.ArthasServices.StringKey buildPartial() {
        io.arthas.api.ArthasServices.StringKey result = new io.arthas.api.ArthasServices.StringKey(this);
        result.key_ = key_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.arthas.api.ArthasServices.StringKey) {
          return mergeFrom((io.arthas.api.ArthasServices.StringKey)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.arthas.api.ArthasServices.StringKey other) {
        if (other == io.arthas.api.ArthasServices.StringKey.getDefaultInstance()) return this;
        if (!other.getKey().isEmpty()) {
          key_ = other.key_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        io.arthas.api.ArthasServices.StringKey parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (io.arthas.api.ArthasServices.StringKey) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object key_ = "";
      /**
       * string key = 1;
       * @return The key.
       */
      public java.lang.String getKey() {
        java.lang.Object ref = key_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          key_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string key = 1;
       * @return The bytes for key.
       */
      public com.google.protobuf.ByteString
          getKeyBytes() {
        java.lang.Object ref = key_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          key_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string key = 1;
       * @param value The key to set.
       * @return This builder for chaining.
       */
      public Builder setKey(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        key_ = value;
        onChanged();
        return this;
      }
      /**
       * string key = 1;
       * @return This builder for chaining.
       */
      public Builder clearKey() {
        
        key_ = getDefaultInstance().getKey();
        onChanged();
        return this;
      }
      /**
       * string key = 1;
       * @param value The bytes for key to set.
       * @return This builder for chaining.
       */
      public Builder setKeyBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        key_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:io.arthas.api.StringKey)
    }

    // @@protoc_insertion_point(class_scope:io.arthas.api.StringKey)
    private static final io.arthas.api.ArthasServices.StringKey DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.arthas.api.ArthasServices.StringKey();
    }

    public static io.arthas.api.ArthasServices.StringKey getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public StringKey parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new StringKey(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.arthas.api.ArthasServices.StringKey getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface StringValueOrBuilder extends
      // @@protoc_insertion_point(interface_extends:io.arthas.api.StringValue)
      com.google.protobuf.MessageOrBuilder {

    /**
     * string value = 1;
     * @return The value.
     */
    java.lang.String getValue();
    /**
     * string value = 1;
     * @return The bytes for value.
     */
    com.google.protobuf.ByteString
        getValueBytes();
  }
  /**
   * Protobuf type {@code io.arthas.api.StringValue}
   */
  public  static final class StringValue extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:io.arthas.api.StringValue)
      StringValueOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use StringValue.newBuilder() to construct.
    private StringValue(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private StringValue() {
      value_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new StringValue();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private StringValue(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

              value_ = s;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              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 io.arthas.api.ArthasServices.internal_static_io_arthas_api_StringValue_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.arthas.api.ArthasServices.internal_static_io_arthas_api_StringValue_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.arthas.api.ArthasServices.StringValue.class, io.arthas.api.ArthasServices.StringValue.Builder.class);
    }

    public static final int VALUE_FIELD_NUMBER = 1;
    private volatile java.lang.Object value_;
    /**
     * string value = 1;
     * @return The value.
     */
    public java.lang.String getValue() {
      java.lang.Object ref = value_;
      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();
        value_ = s;
        return s;
      }
    }
    /**
     * string value = 1;
     * @return The bytes for value.
     */
    public com.google.protobuf.ByteString
        getValueBytes() {
      java.lang.Object ref = value_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        value_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getValueBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, value_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!getValueBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, value_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof io.arthas.api.ArthasServices.StringValue)) {
        return super.equals(obj);
      }
      io.arthas.api.ArthasServices.StringValue other = (io.arthas.api.ArthasServices.StringValue) obj;

      if (!getValue()
          .equals(other.getValue())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + VALUE_FIELD_NUMBER;
      hash = (53 * hash) + getValue().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.arthas.api.ArthasServices.StringValue parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.arthas.api.ArthasServices.StringValue parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.arthas.api.ArthasServices.StringValue parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.arthas.api.ArthasServices.StringValue parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.arthas.api.ArthasServices.StringValue parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.arthas.api.ArthasServices.StringValue parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.arthas.api.ArthasServices.StringValue parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.arthas.api.ArthasServices.StringValue 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 io.arthas.api.ArthasServices.StringValue parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static io.arthas.api.ArthasServices.StringValue 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 io.arthas.api.ArthasServices.StringValue parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.arthas.api.ArthasServices.StringValue parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(io.arthas.api.ArthasServices.StringValue prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    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 io.arthas.api.StringValue}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:io.arthas.api.StringValue)
        io.arthas.api.ArthasServices.StringValueOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.arthas.api.ArthasServices.internal_static_io_arthas_api_StringValue_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.arthas.api.ArthasServices.internal_static_io_arthas_api_StringValue_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.arthas.api.ArthasServices.StringValue.class, io.arthas.api.ArthasServices.StringValue.Builder.class);
      }

      // Construct using io.arthas.api.ArthasServices.StringValue.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        value_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.arthas.api.ArthasServices.internal_static_io_arthas_api_StringValue_descriptor;
      }

      @java.lang.Override
      public io.arthas.api.ArthasServices.StringValue getDefaultInstanceForType() {
        return io.arthas.api.ArthasServices.StringValue.getDefaultInstance();
      }

      @java.lang.Override
      public io.arthas.api.ArthasServices.StringValue build() {
        io.arthas.api.ArthasServices.StringValue result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.arthas.api.ArthasServices.StringValue buildPartial() {
        io.arthas.api.ArthasServices.StringValue result = new io.arthas.api.ArthasServices.StringValue(this);
        result.value_ = value_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.arthas.api.ArthasServices.StringValue) {
          return mergeFrom((io.arthas.api.ArthasServices.StringValue)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.arthas.api.ArthasServices.StringValue other) {
        if (other == io.arthas.api.ArthasServices.StringValue.getDefaultInstance()) return this;
        if (!other.getValue().isEmpty()) {
          value_ = other.value_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        io.arthas.api.ArthasServices.StringValue parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (io.arthas.api.ArthasServices.StringValue) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object value_ = "";
      /**
       * string value = 1;
       * @return The value.
       */
      public java.lang.String getValue() {
        java.lang.Object ref = value_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          value_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string value = 1;
       * @return The bytes for value.
       */
      public com.google.protobuf.ByteString
          getValueBytes() {
        java.lang.Object ref = value_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          value_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string value = 1;
       * @param value The value to set.
       * @return This builder for chaining.
       */
      public Builder setValue(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        value_ = value;
        onChanged();
        return this;
      }
      /**
       * string value = 1;
       * @return This builder for chaining.
       */
      public Builder clearValue() {
        
        value_ = getDefaultInstance().getValue();
        onChanged();
        return this;
      }
      /**
       * string value = 1;
       * @param value The bytes for value to set.
       * @return This builder for chaining.
       */
      public Builder setValueBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        value_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:io.arthas.api.StringValue)
    }

    // @@protoc_insertion_point(class_scope:io.arthas.api.StringValue)
    private static final io.arthas.api.ArthasServices.StringValue DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.arthas.api.ArthasServices.StringValue();
    }

    public static io.arthas.api.ArthasServices.StringValue getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public StringValue parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new StringValue(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.arthas.api.ArthasServices.StringValue getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface StringStringMapValueOrBuilder extends
      // @@protoc_insertion_point(interface_extends:io.arthas.api.StringStringMapValue)
      com.google.protobuf.MessageOrBuilder {

    /**
     * map<string, string> stringStringMap = 1;
     */
    int getStringStringMapCount();
    /**
     * map<string, string> stringStringMap = 1;
     */
    boolean containsStringStringMap(
        java.lang.String key);
    /**
     * Use {@link #getStringStringMapMap()} instead.
     */
    @java.lang.Deprecated
    java.util.Map
    getStringStringMap();
    /**
     * map<string, string> stringStringMap = 1;
     */
    java.util.Map
    getStringStringMapMap();
    /**
     * map<string, string> stringStringMap = 1;
     */

    java.lang.String getStringStringMapOrDefault(
        java.lang.String key,
        java.lang.String defaultValue);
    /**
     * map<string, string> stringStringMap = 1;
     */

    java.lang.String getStringStringMapOrThrow(
        java.lang.String key);
  }
  /**
   * Protobuf type {@code io.arthas.api.StringStringMapValue}
   */
  public  static final class StringStringMapValue extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:io.arthas.api.StringStringMapValue)
      StringStringMapValueOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use StringStringMapValue.newBuilder() to construct.
    private StringStringMapValue(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private StringStringMapValue() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new StringStringMapValue();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private StringStringMapValue(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                stringStringMap_ = com.google.protobuf.MapField.newMapField(
                    StringStringMapDefaultEntryHolder.defaultEntry);
                mutable_bitField0_ |= 0x00000001;
              }
              com.google.protobuf.MapEntry
              stringStringMap__ = input.readMessage(
                  StringStringMapDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
              stringStringMap_.getMutableMap().put(
                  stringStringMap__.getKey(), stringStringMap__.getValue());
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              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 io.arthas.api.ArthasServices.internal_static_io_arthas_api_StringStringMapValue_descriptor;
    }

    @SuppressWarnings({"rawtypes"})
    @java.lang.Override
    protected com.google.protobuf.MapField internalGetMapField(
        int number) {
      switch (number) {
        case 1:
          return internalGetStringStringMap();
        default:
          throw new RuntimeException(
              "Invalid map field number: " + number);
      }
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.arthas.api.ArthasServices.internal_static_io_arthas_api_StringStringMapValue_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.arthas.api.ArthasServices.StringStringMapValue.class, io.arthas.api.ArthasServices.StringStringMapValue.Builder.class);
    }

    public static final int STRINGSTRINGMAP_FIELD_NUMBER = 1;
    private static final class StringStringMapDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<
          java.lang.String, java.lang.String> defaultEntry =
              com.google.protobuf.MapEntry
              .newDefaultInstance(
                  io.arthas.api.ArthasServices.internal_static_io_arthas_api_StringStringMapValue_StringStringMapEntry_descriptor, 
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "",
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "");
    }
    private com.google.protobuf.MapField<
        java.lang.String, java.lang.String> stringStringMap_;
    private com.google.protobuf.MapField
    internalGetStringStringMap() {
      if (stringStringMap_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            StringStringMapDefaultEntryHolder.defaultEntry);
      }
      return stringStringMap_;
    }

    public int getStringStringMapCount() {
      return internalGetStringStringMap().getMap().size();
    }
    /**
     * map<string, string> stringStringMap = 1;
     */

    public boolean containsStringStringMap(
        java.lang.String key) {
      if (key == null) { throw new java.lang.NullPointerException(); }
      return internalGetStringStringMap().getMap().containsKey(key);
    }
    /**
     * Use {@link #getStringStringMapMap()} instead.
     */
    @java.lang.Deprecated
    public java.util.Map getStringStringMap() {
      return getStringStringMapMap();
    }
    /**
     * map<string, string> stringStringMap = 1;
     */

    public java.util.Map getStringStringMapMap() {
      return internalGetStringStringMap().getMap();
    }
    /**
     * map<string, string> stringStringMap = 1;
     */

    public java.lang.String getStringStringMapOrDefault(
        java.lang.String key,
        java.lang.String defaultValue) {
      if (key == null) { throw new java.lang.NullPointerException(); }
      java.util.Map map =
          internalGetStringStringMap().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     * map<string, string> stringStringMap = 1;
     */

    public java.lang.String getStringStringMapOrThrow(
        java.lang.String key) {
      if (key == null) { throw new java.lang.NullPointerException(); }
      java.util.Map map =
          internalGetStringStringMap().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      com.google.protobuf.GeneratedMessageV3
        .serializeStringMapTo(
          output,
          internalGetStringStringMap(),
          StringStringMapDefaultEntryHolder.defaultEntry,
          1);
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      for (java.util.Map.Entry entry
           : internalGetStringStringMap().getMap().entrySet()) {
        com.google.protobuf.MapEntry
        stringStringMap__ = StringStringMapDefaultEntryHolder.defaultEntry.newBuilderForType()
            .setKey(entry.getKey())
            .setValue(entry.getValue())
            .build();
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(1, stringStringMap__);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof io.arthas.api.ArthasServices.StringStringMapValue)) {
        return super.equals(obj);
      }
      io.arthas.api.ArthasServices.StringStringMapValue other = (io.arthas.api.ArthasServices.StringStringMapValue) obj;

      if (!internalGetStringStringMap().equals(
          other.internalGetStringStringMap())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (!internalGetStringStringMap().getMap().isEmpty()) {
        hash = (37 * hash) + STRINGSTRINGMAP_FIELD_NUMBER;
        hash = (53 * hash) + internalGetStringStringMap().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.arthas.api.ArthasServices.StringStringMapValue parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.arthas.api.ArthasServices.StringStringMapValue parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.arthas.api.ArthasServices.StringStringMapValue parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.arthas.api.ArthasServices.StringStringMapValue parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.arthas.api.ArthasServices.StringStringMapValue parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.arthas.api.ArthasServices.StringStringMapValue parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.arthas.api.ArthasServices.StringStringMapValue parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.arthas.api.ArthasServices.StringStringMapValue 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 io.arthas.api.ArthasServices.StringStringMapValue parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static io.arthas.api.ArthasServices.StringStringMapValue 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 io.arthas.api.ArthasServices.StringStringMapValue parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.arthas.api.ArthasServices.StringStringMapValue parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(io.arthas.api.ArthasServices.StringStringMapValue prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    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 io.arthas.api.StringStringMapValue}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:io.arthas.api.StringStringMapValue)
        io.arthas.api.ArthasServices.StringStringMapValueOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.arthas.api.ArthasServices.internal_static_io_arthas_api_StringStringMapValue_descriptor;
      }

      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapField internalGetMapField(
          int number) {
        switch (number) {
          case 1:
            return internalGetStringStringMap();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapField internalGetMutableMapField(
          int number) {
        switch (number) {
          case 1:
            return internalGetMutableStringStringMap();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.arthas.api.ArthasServices.internal_static_io_arthas_api_StringStringMapValue_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.arthas.api.ArthasServices.StringStringMapValue.class, io.arthas.api.ArthasServices.StringStringMapValue.Builder.class);
      }

      // Construct using io.arthas.api.ArthasServices.StringStringMapValue.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        internalGetMutableStringStringMap().clear();
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.arthas.api.ArthasServices.internal_static_io_arthas_api_StringStringMapValue_descriptor;
      }

      @java.lang.Override
      public io.arthas.api.ArthasServices.StringStringMapValue getDefaultInstanceForType() {
        return io.arthas.api.ArthasServices.StringStringMapValue.getDefaultInstance();
      }

      @java.lang.Override
      public io.arthas.api.ArthasServices.StringStringMapValue build() {
        io.arthas.api.ArthasServices.StringStringMapValue result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.arthas.api.ArthasServices.StringStringMapValue buildPartial() {
        io.arthas.api.ArthasServices.StringStringMapValue result = new io.arthas.api.ArthasServices.StringStringMapValue(this);
        int from_bitField0_ = bitField0_;
        result.stringStringMap_ = internalGetStringStringMap();
        result.stringStringMap_.makeImmutable();
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.arthas.api.ArthasServices.StringStringMapValue) {
          return mergeFrom((io.arthas.api.ArthasServices.StringStringMapValue)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.arthas.api.ArthasServices.StringStringMapValue other) {
        if (other == io.arthas.api.ArthasServices.StringStringMapValue.getDefaultInstance()) return this;
        internalGetMutableStringStringMap().mergeFrom(
            other.internalGetStringStringMap());
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        io.arthas.api.ArthasServices.StringStringMapValue parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (io.arthas.api.ArthasServices.StringStringMapValue) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private com.google.protobuf.MapField<
          java.lang.String, java.lang.String> stringStringMap_;
      private com.google.protobuf.MapField
      internalGetStringStringMap() {
        if (stringStringMap_ == null) {
          return com.google.protobuf.MapField.emptyMapField(
              StringStringMapDefaultEntryHolder.defaultEntry);
        }
        return stringStringMap_;
      }
      private com.google.protobuf.MapField
      internalGetMutableStringStringMap() {
        onChanged();;
        if (stringStringMap_ == null) {
          stringStringMap_ = com.google.protobuf.MapField.newMapField(
              StringStringMapDefaultEntryHolder.defaultEntry);
        }
        if (!stringStringMap_.isMutable()) {
          stringStringMap_ = stringStringMap_.copy();
        }
        return stringStringMap_;
      }

      public int getStringStringMapCount() {
        return internalGetStringStringMap().getMap().size();
      }
      /**
       * map<string, string> stringStringMap = 1;
       */

      public boolean containsStringStringMap(
          java.lang.String key) {
        if (key == null) { throw new java.lang.NullPointerException(); }
        return internalGetStringStringMap().getMap().containsKey(key);
      }
      /**
       * Use {@link #getStringStringMapMap()} instead.
       */
      @java.lang.Deprecated
      public java.util.Map getStringStringMap() {
        return getStringStringMapMap();
      }
      /**
       * map<string, string> stringStringMap = 1;
       */

      public java.util.Map getStringStringMapMap() {
        return internalGetStringStringMap().getMap();
      }
      /**
       * map<string, string> stringStringMap = 1;
       */

      public java.lang.String getStringStringMapOrDefault(
          java.lang.String key,
          java.lang.String defaultValue) {
        if (key == null) { throw new java.lang.NullPointerException(); }
        java.util.Map map =
            internalGetStringStringMap().getMap();
        return map.containsKey(key) ? map.get(key) : defaultValue;
      }
      /**
       * map<string, string> stringStringMap = 1;
       */

      public java.lang.String getStringStringMapOrThrow(
          java.lang.String key) {
        if (key == null) { throw new java.lang.NullPointerException(); }
        java.util.Map map =
            internalGetStringStringMap().getMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return map.get(key);
      }

      public Builder clearStringStringMap() {
        internalGetMutableStringStringMap().getMutableMap()
            .clear();
        return this;
      }
      /**
       * map<string, string> stringStringMap = 1;
       */

      public Builder removeStringStringMap(
          java.lang.String key) {
        if (key == null) { throw new java.lang.NullPointerException(); }
        internalGetMutableStringStringMap().getMutableMap()
            .remove(key);
        return this;
      }
      /**
       * Use alternate mutation accessors instead.
       */
      @java.lang.Deprecated
      public java.util.Map
      getMutableStringStringMap() {
        return internalGetMutableStringStringMap().getMutableMap();
      }
      /**
       * map<string, string> stringStringMap = 1;
       */
      public Builder putStringStringMap(
          java.lang.String key,
          java.lang.String value) {
        if (key == null) { throw new java.lang.NullPointerException(); }
        if (value == null) { throw new java.lang.NullPointerException(); }
        internalGetMutableStringStringMap().getMutableMap()
            .put(key, value);
        return this;
      }
      /**
       * map<string, string> stringStringMap = 1;
       */

      public Builder putAllStringStringMap(
          java.util.Map values) {
        internalGetMutableStringStringMap().getMutableMap()
            .putAll(values);
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:io.arthas.api.StringStringMapValue)
    }

    // @@protoc_insertion_point(class_scope:io.arthas.api.StringStringMapValue)
    private static final io.arthas.api.ArthasServices.StringStringMapValue DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.arthas.api.ArthasServices.StringStringMapValue();
    }

    public static io.arthas.api.ArthasServices.StringStringMapValue getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public StringStringMapValue parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new StringStringMapValue(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.arthas.api.ArthasServices.StringStringMapValue getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface WatchRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:io.arthas.api.WatchRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * string classPattern = 1;
     * @return The classPattern.
     */
    java.lang.String getClassPattern();
    /**
     * string classPattern = 1;
     * @return The bytes for classPattern.
     */
    com.google.protobuf.ByteString
        getClassPatternBytes();

    /**
     * string methodPattern = 2;
     * @return The methodPattern.
     */
    java.lang.String getMethodPattern();
    /**
     * string methodPattern = 2;
     * @return The bytes for methodPattern.
     */
    com.google.protobuf.ByteString
        getMethodPatternBytes();

    /**
     * string express = 3;
     * @return The express.
     */
    java.lang.String getExpress();
    /**
     * string express = 3;
     * @return The bytes for express.
     */
    com.google.protobuf.ByteString
        getExpressBytes();

    /**
     * string conditionExpress = 4;
     * @return The conditionExpress.
     */
    java.lang.String getConditionExpress();
    /**
     * string conditionExpress = 4;
     * @return The bytes for conditionExpress.
     */
    com.google.protobuf.ByteString
        getConditionExpressBytes();

    /**
     * bool isBefore = 5;
     * @return The isBefore.
     */
    boolean getIsBefore();

    /**
     * bool isFinish = 6;
     * @return The isFinish.
     */
    boolean getIsFinish();

    /**
     * bool isException = 7;
     * @return The isException.
     */
    boolean getIsException();

    /**
     * bool isSuccess = 8;
     * @return The isSuccess.
     */
    boolean getIsSuccess();

    /**
     * int32 expand = 9;
     * @return The expand.
     */
    int getExpand();

    /**
     * int32 sizeLimit = 10;
     * @return The sizeLimit.
     */
    int getSizeLimit();

    /**
     * bool isRegEx = 11;
     * @return The isRegEx.
     */
    boolean getIsRegEx();

    /**
     * int32 numberOfLimit = 12;
     * @return The numberOfLimit.
     */
    int getNumberOfLimit();

    /**
     * string excludeClassPattern = 13;
     * @return The excludeClassPattern.
     */
    java.lang.String getExcludeClassPattern();
    /**
     * string excludeClassPattern = 13;
     * @return The bytes for excludeClassPattern.
     */
    com.google.protobuf.ByteString
        getExcludeClassPatternBytes();

    /**
     * int64 listenerId = 14;
     * @return The listenerId.
     */
    long getListenerId();

    /**
     * bool verbose = 15;
     * @return The verbose.
     */
    boolean getVerbose();

    /**
     * int32 maxNumOfMatchedClass = 16;
     * @return The maxNumOfMatchedClass.
     */
    int getMaxNumOfMatchedClass();

    /**
     * int64 jobId = 17;
     * @return The jobId.
     */
    long getJobId();
  }
  /**
   * Protobuf type {@code io.arthas.api.WatchRequest}
   */
  public  static final class WatchRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:io.arthas.api.WatchRequest)
      WatchRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use WatchRequest.newBuilder() to construct.
    private WatchRequest(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private WatchRequest() {
      classPattern_ = "";
      methodPattern_ = "";
      express_ = "";
      conditionExpress_ = "";
      excludeClassPattern_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new WatchRequest();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private WatchRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

              classPattern_ = s;
              break;
            }
            case 18: {
              java.lang.String s = input.readStringRequireUtf8();

              methodPattern_ = s;
              break;
            }
            case 26: {
              java.lang.String s = input.readStringRequireUtf8();

              express_ = s;
              break;
            }
            case 34: {
              java.lang.String s = input.readStringRequireUtf8();

              conditionExpress_ = s;
              break;
            }
            case 40: {

              isBefore_ = input.readBool();
              break;
            }
            case 48: {

              isFinish_ = input.readBool();
              break;
            }
            case 56: {

              isException_ = input.readBool();
              break;
            }
            case 64: {

              isSuccess_ = input.readBool();
              break;
            }
            case 72: {

              expand_ = input.readInt32();
              break;
            }
            case 80: {

              sizeLimit_ = input.readInt32();
              break;
            }
            case 88: {

              isRegEx_ = input.readBool();
              break;
            }
            case 96: {

              numberOfLimit_ = input.readInt32();
              break;
            }
            case 106: {
              java.lang.String s = input.readStringRequireUtf8();

              excludeClassPattern_ = s;
              break;
            }
            case 112: {

              listenerId_ = input.readInt64();
              break;
            }
            case 120: {

              verbose_ = input.readBool();
              break;
            }
            case 128: {

              maxNumOfMatchedClass_ = input.readInt32();
              break;
            }
            case 136: {

              jobId_ = input.readInt64();
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              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 io.arthas.api.ArthasServices.internal_static_io_arthas_api_WatchRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.arthas.api.ArthasServices.internal_static_io_arthas_api_WatchRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.arthas.api.ArthasServices.WatchRequest.class, io.arthas.api.ArthasServices.WatchRequest.Builder.class);
    }

    public static final int CLASSPATTERN_FIELD_NUMBER = 1;
    private volatile java.lang.Object classPattern_;
    /**
     * string classPattern = 1;
     * @return The classPattern.
     */
    public java.lang.String getClassPattern() {
      java.lang.Object ref = classPattern_;
      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();
        classPattern_ = s;
        return s;
      }
    }
    /**
     * string classPattern = 1;
     * @return The bytes for classPattern.
     */
    public com.google.protobuf.ByteString
        getClassPatternBytes() {
      java.lang.Object ref = classPattern_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        classPattern_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int METHODPATTERN_FIELD_NUMBER = 2;
    private volatile java.lang.Object methodPattern_;
    /**
     * string methodPattern = 2;
     * @return The methodPattern.
     */
    public java.lang.String getMethodPattern() {
      java.lang.Object ref = methodPattern_;
      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();
        methodPattern_ = s;
        return s;
      }
    }
    /**
     * string methodPattern = 2;
     * @return The bytes for methodPattern.
     */
    public com.google.protobuf.ByteString
        getMethodPatternBytes() {
      java.lang.Object ref = methodPattern_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        methodPattern_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int EXPRESS_FIELD_NUMBER = 3;
    private volatile java.lang.Object express_;
    /**
     * string express = 3;
     * @return The express.
     */
    public java.lang.String getExpress() {
      java.lang.Object ref = express_;
      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();
        express_ = s;
        return s;
      }
    }
    /**
     * string express = 3;
     * @return The bytes for express.
     */
    public com.google.protobuf.ByteString
        getExpressBytes() {
      java.lang.Object ref = express_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        express_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int CONDITIONEXPRESS_FIELD_NUMBER = 4;
    private volatile java.lang.Object conditionExpress_;
    /**
     * string conditionExpress = 4;
     * @return The conditionExpress.
     */
    public java.lang.String getConditionExpress() {
      java.lang.Object ref = conditionExpress_;
      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();
        conditionExpress_ = s;
        return s;
      }
    }
    /**
     * string conditionExpress = 4;
     * @return The bytes for conditionExpress.
     */
    public com.google.protobuf.ByteString
        getConditionExpressBytes() {
      java.lang.Object ref = conditionExpress_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        conditionExpress_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int ISBEFORE_FIELD_NUMBER = 5;
    private boolean isBefore_;
    /**
     * bool isBefore = 5;
     * @return The isBefore.
     */
    public boolean getIsBefore() {
      return isBefore_;
    }

    public static final int ISFINISH_FIELD_NUMBER = 6;
    private boolean isFinish_;
    /**
     * bool isFinish = 6;
     * @return The isFinish.
     */
    public boolean getIsFinish() {
      return isFinish_;
    }

    public static final int ISEXCEPTION_FIELD_NUMBER = 7;
    private boolean isException_;
    /**
     * bool isException = 7;
     * @return The isException.
     */
    public boolean getIsException() {
      return isException_;
    }

    public static final int ISSUCCESS_FIELD_NUMBER = 8;
    private boolean isSuccess_;
    /**
     * bool isSuccess = 8;
     * @return The isSuccess.
     */
    public boolean getIsSuccess() {
      return isSuccess_;
    }

    public static final int EXPAND_FIELD_NUMBER = 9;
    private int expand_;
    /**
     * int32 expand = 9;
     * @return The expand.
     */
    public int getExpand() {
      return expand_;
    }

    public static final int SIZELIMIT_FIELD_NUMBER = 10;
    private int sizeLimit_;
    /**
     * int32 sizeLimit = 10;
     * @return The sizeLimit.
     */
    public int getSizeLimit() {
      return sizeLimit_;
    }

    public static final int ISREGEX_FIELD_NUMBER = 11;
    private boolean isRegEx_;
    /**
     * bool isRegEx = 11;
     * @return The isRegEx.
     */
    public boolean getIsRegEx() {
      return isRegEx_;
    }

    public static final int NUMBEROFLIMIT_FIELD_NUMBER = 12;
    private int numberOfLimit_;
    /**
     * int32 numberOfLimit = 12;
     * @return The numberOfLimit.
     */
    public int getNumberOfLimit() {
      return numberOfLimit_;
    }

    public static final int EXCLUDECLASSPATTERN_FIELD_NUMBER = 13;
    private volatile java.lang.Object excludeClassPattern_;
    /**
     * string excludeClassPattern = 13;
     * @return The excludeClassPattern.
     */
    public java.lang.String getExcludeClassPattern() {
      java.lang.Object ref = excludeClassPattern_;
      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();
        excludeClassPattern_ = s;
        return s;
      }
    }
    /**
     * string excludeClassPattern = 13;
     * @return The bytes for excludeClassPattern.
     */
    public com.google.protobuf.ByteString
        getExcludeClassPatternBytes() {
      java.lang.Object ref = excludeClassPattern_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        excludeClassPattern_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int LISTENERID_FIELD_NUMBER = 14;
    private long listenerId_;
    /**
     * int64 listenerId = 14;
     * @return The listenerId.
     */
    public long getListenerId() {
      return listenerId_;
    }

    public static final int VERBOSE_FIELD_NUMBER = 15;
    private boolean verbose_;
    /**
     * bool verbose = 15;
     * @return The verbose.
     */
    public boolean getVerbose() {
      return verbose_;
    }

    public static final int MAXNUMOFMATCHEDCLASS_FIELD_NUMBER = 16;
    private int maxNumOfMatchedClass_;
    /**
     * int32 maxNumOfMatchedClass = 16;
     * @return The maxNumOfMatchedClass.
     */
    public int getMaxNumOfMatchedClass() {
      return maxNumOfMatchedClass_;
    }

    public static final int JOBID_FIELD_NUMBER = 17;
    private long jobId_;
    /**
     * int64 jobId = 17;
     * @return The jobId.
     */
    public long getJobId() {
      return jobId_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getClassPatternBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, classPattern_);
      }
      if (!getMethodPatternBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, methodPattern_);
      }
      if (!getExpressBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, express_);
      }
      if (!getConditionExpressBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, conditionExpress_);
      }
      if (isBefore_ != false) {
        output.writeBool(5, isBefore_);
      }
      if (isFinish_ != false) {
        output.writeBool(6, isFinish_);
      }
      if (isException_ != false) {
        output.writeBool(7, isException_);
      }
      if (isSuccess_ != false) {
        output.writeBool(8, isSuccess_);
      }
      if (expand_ != 0) {
        output.writeInt32(9, expand_);
      }
      if (sizeLimit_ != 0) {
        output.writeInt32(10, sizeLimit_);
      }
      if (isRegEx_ != false) {
        output.writeBool(11, isRegEx_);
      }
      if (numberOfLimit_ != 0) {
        output.writeInt32(12, numberOfLimit_);
      }
      if (!getExcludeClassPatternBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 13, excludeClassPattern_);
      }
      if (listenerId_ != 0L) {
        output.writeInt64(14, listenerId_);
      }
      if (verbose_ != false) {
        output.writeBool(15, verbose_);
      }
      if (maxNumOfMatchedClass_ != 0) {
        output.writeInt32(16, maxNumOfMatchedClass_);
      }
      if (jobId_ != 0L) {
        output.writeInt64(17, jobId_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!getClassPatternBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, classPattern_);
      }
      if (!getMethodPatternBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, methodPattern_);
      }
      if (!getExpressBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, express_);
      }
      if (!getConditionExpressBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, conditionExpress_);
      }
      if (isBefore_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(5, isBefore_);
      }
      if (isFinish_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(6, isFinish_);
      }
      if (isException_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(7, isException_);
      }
      if (isSuccess_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(8, isSuccess_);
      }
      if (expand_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(9, expand_);
      }
      if (sizeLimit_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(10, sizeLimit_);
      }
      if (isRegEx_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(11, isRegEx_);
      }
      if (numberOfLimit_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(12, numberOfLimit_);
      }
      if (!getExcludeClassPatternBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(13, excludeClassPattern_);
      }
      if (listenerId_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(14, listenerId_);
      }
      if (verbose_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(15, verbose_);
      }
      if (maxNumOfMatchedClass_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(16, maxNumOfMatchedClass_);
      }
      if (jobId_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(17, jobId_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof io.arthas.api.ArthasServices.WatchRequest)) {
        return super.equals(obj);
      }
      io.arthas.api.ArthasServices.WatchRequest other = (io.arthas.api.ArthasServices.WatchRequest) obj;

      if (!getClassPattern()
          .equals(other.getClassPattern())) return false;
      if (!getMethodPattern()
          .equals(other.getMethodPattern())) return false;
      if (!getExpress()
          .equals(other.getExpress())) return false;
      if (!getConditionExpress()
          .equals(other.getConditionExpress())) return false;
      if (getIsBefore()
          != other.getIsBefore()) return false;
      if (getIsFinish()
          != other.getIsFinish()) return false;
      if (getIsException()
          != other.getIsException()) return false;
      if (getIsSuccess()
          != other.getIsSuccess()) return false;
      if (getExpand()
          != other.getExpand()) return false;
      if (getSizeLimit()
          != other.getSizeLimit()) return false;
      if (getIsRegEx()
          != other.getIsRegEx()) return false;
      if (getNumberOfLimit()
          != other.getNumberOfLimit()) return false;
      if (!getExcludeClassPattern()
          .equals(other.getExcludeClassPattern())) return false;
      if (getListenerId()
          != other.getListenerId()) return false;
      if (getVerbose()
          != other.getVerbose()) return false;
      if (getMaxNumOfMatchedClass()
          != other.getMaxNumOfMatchedClass()) return false;
      if (getJobId()
          != other.getJobId()) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + CLASSPATTERN_FIELD_NUMBER;
      hash = (53 * hash) + getClassPattern().hashCode();
      hash = (37 * hash) + METHODPATTERN_FIELD_NUMBER;
      hash = (53 * hash) + getMethodPattern().hashCode();
      hash = (37 * hash) + EXPRESS_FIELD_NUMBER;
      hash = (53 * hash) + getExpress().hashCode();
      hash = (37 * hash) + CONDITIONEXPRESS_FIELD_NUMBER;
      hash = (53 * hash) + getConditionExpress().hashCode();
      hash = (37 * hash) + ISBEFORE_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getIsBefore());
      hash = (37 * hash) + ISFINISH_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getIsFinish());
      hash = (37 * hash) + ISEXCEPTION_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getIsException());
      hash = (37 * hash) + ISSUCCESS_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getIsSuccess());
      hash = (37 * hash) + EXPAND_FIELD_NUMBER;
      hash = (53 * hash) + getExpand();
      hash = (37 * hash) + SIZELIMIT_FIELD_NUMBER;
      hash = (53 * hash) + getSizeLimit();
      hash = (37 * hash) + ISREGEX_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getIsRegEx());
      hash = (37 * hash) + NUMBEROFLIMIT_FIELD_NUMBER;
      hash = (53 * hash) + getNumberOfLimit();
      hash = (37 * hash) + EXCLUDECLASSPATTERN_FIELD_NUMBER;
      hash = (53 * hash) + getExcludeClassPattern().hashCode();
      hash = (37 * hash) + LISTENERID_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getListenerId());
      hash = (37 * hash) + VERBOSE_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getVerbose());
      hash = (37 * hash) + MAXNUMOFMATCHEDCLASS_FIELD_NUMBER;
      hash = (53 * hash) + getMaxNumOfMatchedClass();
      hash = (37 * hash) + JOBID_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getJobId());
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.arthas.api.ArthasServices.WatchRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.arthas.api.ArthasServices.WatchRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.arthas.api.ArthasServices.WatchRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.arthas.api.ArthasServices.WatchRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.arthas.api.ArthasServices.WatchRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.arthas.api.ArthasServices.WatchRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.arthas.api.ArthasServices.WatchRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.arthas.api.ArthasServices.WatchRequest 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 io.arthas.api.ArthasServices.WatchRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static io.arthas.api.ArthasServices.WatchRequest 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 io.arthas.api.ArthasServices.WatchRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.arthas.api.ArthasServices.WatchRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(io.arthas.api.ArthasServices.WatchRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    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 io.arthas.api.WatchRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:io.arthas.api.WatchRequest)
        io.arthas.api.ArthasServices.WatchRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.arthas.api.ArthasServices.internal_static_io_arthas_api_WatchRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.arthas.api.ArthasServices.internal_static_io_arthas_api_WatchRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.arthas.api.ArthasServices.WatchRequest.class, io.arthas.api.ArthasServices.WatchRequest.Builder.class);
      }

      // Construct using io.arthas.api.ArthasServices.WatchRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        classPattern_ = "";

        methodPattern_ = "";

        express_ = "";

        conditionExpress_ = "";

        isBefore_ = false;

        isFinish_ = false;

        isException_ = false;

        isSuccess_ = false;

        expand_ = 0;

        sizeLimit_ = 0;

        isRegEx_ = false;

        numberOfLimit_ = 0;

        excludeClassPattern_ = "";

        listenerId_ = 0L;

        verbose_ = false;

        maxNumOfMatchedClass_ = 0;

        jobId_ = 0L;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.arthas.api.ArthasServices.internal_static_io_arthas_api_WatchRequest_descriptor;
      }

      @java.lang.Override
      public io.arthas.api.ArthasServices.WatchRequest getDefaultInstanceForType() {
        return io.arthas.api.ArthasServices.WatchRequest.getDefaultInstance();
      }

      @java.lang.Override
      public io.arthas.api.ArthasServices.WatchRequest build() {
        io.arthas.api.ArthasServices.WatchRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.arthas.api.ArthasServices.WatchRequest buildPartial() {
        io.arthas.api.ArthasServices.WatchRequest result = new io.arthas.api.ArthasServices.WatchRequest(this);
        result.classPattern_ = classPattern_;
        result.methodPattern_ = methodPattern_;
        result.express_ = express_;
        result.conditionExpress_ = conditionExpress_;
        result.isBefore_ = isBefore_;
        result.isFinish_ = isFinish_;
        result.isException_ = isException_;
        result.isSuccess_ = isSuccess_;
        result.expand_ = expand_;
        result.sizeLimit_ = sizeLimit_;
        result.isRegEx_ = isRegEx_;
        result.numberOfLimit_ = numberOfLimit_;
        result.excludeClassPattern_ = excludeClassPattern_;
        result.listenerId_ = listenerId_;
        result.verbose_ = verbose_;
        result.maxNumOfMatchedClass_ = maxNumOfMatchedClass_;
        result.jobId_ = jobId_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.arthas.api.ArthasServices.WatchRequest) {
          return mergeFrom((io.arthas.api.ArthasServices.WatchRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.arthas.api.ArthasServices.WatchRequest other) {
        if (other == io.arthas.api.ArthasServices.WatchRequest.getDefaultInstance()) return this;
        if (!other.getClassPattern().isEmpty()) {
          classPattern_ = other.classPattern_;
          onChanged();
        }
        if (!other.getMethodPattern().isEmpty()) {
          methodPattern_ = other.methodPattern_;
          onChanged();
        }
        if (!other.getExpress().isEmpty()) {
          express_ = other.express_;
          onChanged();
        }
        if (!other.getConditionExpress().isEmpty()) {
          conditionExpress_ = other.conditionExpress_;
          onChanged();
        }
        if (other.getIsBefore() != false) {
          setIsBefore(other.getIsBefore());
        }
        if (other.getIsFinish() != false) {
          setIsFinish(other.getIsFinish());
        }
        if (other.getIsException() != false) {
          setIsException(other.getIsException());
        }
        if (other.getIsSuccess() != false) {
          setIsSuccess(other.getIsSuccess());
        }
        if (other.getExpand() != 0) {
          setExpand(other.getExpand());
        }
        if (other.getSizeLimit() != 0) {
          setSizeLimit(other.getSizeLimit());
        }
        if (other.getIsRegEx() != false) {
          setIsRegEx(other.getIsRegEx());
        }
        if (other.getNumberOfLimit() != 0) {
          setNumberOfLimit(other.getNumberOfLimit());
        }
        if (!other.getExcludeClassPattern().isEmpty()) {
          excludeClassPattern_ = other.excludeClassPattern_;
          onChanged();
        }
        if (other.getListenerId() != 0L) {
          setListenerId(other.getListenerId());
        }
        if (other.getVerbose() != false) {
          setVerbose(other.getVerbose());
        }
        if (other.getMaxNumOfMatchedClass() != 0) {
          setMaxNumOfMatchedClass(other.getMaxNumOfMatchedClass());
        }
        if (other.getJobId() != 0L) {
          setJobId(other.getJobId());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        io.arthas.api.ArthasServices.WatchRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (io.arthas.api.ArthasServices.WatchRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object classPattern_ = "";
      /**
       * string classPattern = 1;
       * @return The classPattern.
       */
      public java.lang.String getClassPattern() {
        java.lang.Object ref = classPattern_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          classPattern_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string classPattern = 1;
       * @return The bytes for classPattern.
       */
      public com.google.protobuf.ByteString
          getClassPatternBytes() {
        java.lang.Object ref = classPattern_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          classPattern_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string classPattern = 1;
       * @param value The classPattern to set.
       * @return This builder for chaining.
       */
      public Builder setClassPattern(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        classPattern_ = value;
        onChanged();
        return this;
      }
      /**
       * string classPattern = 1;
       * @return This builder for chaining.
       */
      public Builder clearClassPattern() {
        
        classPattern_ = getDefaultInstance().getClassPattern();
        onChanged();
        return this;
      }
      /**
       * string classPattern = 1;
       * @param value The bytes for classPattern to set.
       * @return This builder for chaining.
       */
      public Builder setClassPatternBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        classPattern_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object methodPattern_ = "";
      /**
       * string methodPattern = 2;
       * @return The methodPattern.
       */
      public java.lang.String getMethodPattern() {
        java.lang.Object ref = methodPattern_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          methodPattern_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string methodPattern = 2;
       * @return The bytes for methodPattern.
       */
      public com.google.protobuf.ByteString
          getMethodPatternBytes() {
        java.lang.Object ref = methodPattern_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          methodPattern_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string methodPattern = 2;
       * @param value The methodPattern to set.
       * @return This builder for chaining.
       */
      public Builder setMethodPattern(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        methodPattern_ = value;
        onChanged();
        return this;
      }
      /**
       * string methodPattern = 2;
       * @return This builder for chaining.
       */
      public Builder clearMethodPattern() {
        
        methodPattern_ = getDefaultInstance().getMethodPattern();
        onChanged();
        return this;
      }
      /**
       * string methodPattern = 2;
       * @param value The bytes for methodPattern to set.
       * @return This builder for chaining.
       */
      public Builder setMethodPatternBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        methodPattern_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object express_ = "";
      /**
       * string express = 3;
       * @return The express.
       */
      public java.lang.String getExpress() {
        java.lang.Object ref = express_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          express_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string express = 3;
       * @return The bytes for express.
       */
      public com.google.protobuf.ByteString
          getExpressBytes() {
        java.lang.Object ref = express_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          express_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string express = 3;
       * @param value The express to set.
       * @return This builder for chaining.
       */
      public Builder setExpress(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        express_ = value;
        onChanged();
        return this;
      }
      /**
       * string express = 3;
       * @return This builder for chaining.
       */
      public Builder clearExpress() {
        
        express_ = getDefaultInstance().getExpress();
        onChanged();
        return this;
      }
      /**
       * string express = 3;
       * @param value The bytes for express to set.
       * @return This builder for chaining.
       */
      public Builder setExpressBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        express_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object conditionExpress_ = "";
      /**
       * string conditionExpress = 4;
       * @return The conditionExpress.
       */
      public java.lang.String getConditionExpress() {
        java.lang.Object ref = conditionExpress_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          conditionExpress_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string conditionExpress = 4;
       * @return The bytes for conditionExpress.
       */
      public com.google.protobuf.ByteString
          getConditionExpressBytes() {
        java.lang.Object ref = conditionExpress_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          conditionExpress_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string conditionExpress = 4;
       * @param value The conditionExpress to set.
       * @return This builder for chaining.
       */
      public Builder setConditionExpress(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        conditionExpress_ = value;
        onChanged();
        return this;
      }
      /**
       * string conditionExpress = 4;
       * @return This builder for chaining.
       */
      public Builder clearConditionExpress() {
        
        conditionExpress_ = getDefaultInstance().getConditionExpress();
        onChanged();
        return this;
      }
      /**
       * string conditionExpress = 4;
       * @param value The bytes for conditionExpress to set.
       * @return This builder for chaining.
       */
      public Builder setConditionExpressBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        conditionExpress_ = value;
        onChanged();
        return this;
      }

      private boolean isBefore_ ;
      /**
       * bool isBefore = 5;
       * @return The isBefore.
       */
      public boolean getIsBefore() {
        return isBefore_;
      }
      /**
       * bool isBefore = 5;
       * @param value The isBefore to set.
       * @return This builder for chaining.
       */
      public Builder setIsBefore(boolean value) {
        
        isBefore_ = value;
        onChanged();
        return this;
      }
      /**
       * bool isBefore = 5;
       * @return This builder for chaining.
       */
      public Builder clearIsBefore() {
        
        isBefore_ = false;
        onChanged();
        return this;
      }

      private boolean isFinish_ ;
      /**
       * bool isFinish = 6;
       * @return The isFinish.
       */
      public boolean getIsFinish() {
        return isFinish_;
      }
      /**
       * bool isFinish = 6;
       * @param value The isFinish to set.
       * @return This builder for chaining.
       */
      public Builder setIsFinish(boolean value) {
        
        isFinish_ = value;
        onChanged();
        return this;
      }
      /**
       * bool isFinish = 6;
       * @return This builder for chaining.
       */
      public Builder clearIsFinish() {
        
        isFinish_ = false;
        onChanged();
        return this;
      }

      private boolean isException_ ;
      /**
       * bool isException = 7;
       * @return The isException.
       */
      public boolean getIsException() {
        return isException_;
      }
      /**
       * bool isException = 7;
       * @param value The isException to set.
       * @return This builder for chaining.
       */
      public Builder setIsException(boolean value) {
        
        isException_ = value;
        onChanged();
        return this;
      }
      /**
       * bool isException = 7;
       * @return This builder for chaining.
       */
      public Builder clearIsException() {
        
        isException_ = false;
        onChanged();
        return this;
      }

      private boolean isSuccess_ ;
      /**
       * bool isSuccess = 8;
       * @return The isSuccess.
       */
      public boolean getIsSuccess() {
        return isSuccess_;
      }
      /**
       * bool isSuccess = 8;
       * @param value The isSuccess to set.
       * @return This builder for chaining.
       */
      public Builder setIsSuccess(boolean value) {
        
        isSuccess_ = value;
        onChanged();
        return this;
      }
      /**
       * bool isSuccess = 8;
       * @return This builder for chaining.
       */
      public Builder clearIsSuccess() {
        
        isSuccess_ = false;
        onChanged();
        return this;
      }

      private int expand_ ;
      /**
       * int32 expand = 9;
       * @return The expand.
       */
      public int getExpand() {
        return expand_;
      }
      /**
       * int32 expand = 9;
       * @param value The expand to set.
       * @return This builder for chaining.
       */
      public Builder setExpand(int value) {
        
        expand_ = value;
        onChanged();
        return this;
      }
      /**
       * int32 expand = 9;
       * @return This builder for chaining.
       */
      public Builder clearExpand() {
        
        expand_ = 0;
        onChanged();
        return this;
      }

      private int sizeLimit_ ;
      /**
       * int32 sizeLimit = 10;
       * @return The sizeLimit.
       */
      public int getSizeLimit() {
        return sizeLimit_;
      }
      /**
       * int32 sizeLimit = 10;
       * @param value The sizeLimit to set.
       * @return This builder for chaining.
       */
      public Builder setSizeLimit(int value) {
        
        sizeLimit_ = value;
        onChanged();
        return this;
      }
      /**
       * int32 sizeLimit = 10;
       * @return This builder for chaining.
       */
      public Builder clearSizeLimit() {
        
        sizeLimit_ = 0;
        onChanged();
        return this;
      }

      private boolean isRegEx_ ;
      /**
       * bool isRegEx = 11;
       * @return The isRegEx.
       */
      public boolean getIsRegEx() {
        return isRegEx_;
      }
      /**
       * bool isRegEx = 11;
       * @param value The isRegEx to set.
       * @return This builder for chaining.
       */
      public Builder setIsRegEx(boolean value) {
        
        isRegEx_ = value;
        onChanged();
        return this;
      }
      /**
       * bool isRegEx = 11;
       * @return This builder for chaining.
       */
      public Builder clearIsRegEx() {
        
        isRegEx_ = false;
        onChanged();
        return this;
      }

      private int numberOfLimit_ ;
      /**
       * int32 numberOfLimit = 12;
       * @return The numberOfLimit.
       */
      public int getNumberOfLimit() {
        return numberOfLimit_;
      }
      /**
       * int32 numberOfLimit = 12;
       * @param value The numberOfLimit to set.
       * @return This builder for chaining.
       */
      public Builder setNumberOfLimit(int value) {
        
        numberOfLimit_ = value;
        onChanged();
        return this;
      }
      /**
       * int32 numberOfLimit = 12;
       * @return This builder for chaining.
       */
      public Builder clearNumberOfLimit() {
        
        numberOfLimit_ = 0;
        onChanged();
        return this;
      }

      private java.lang.Object excludeClassPattern_ = "";
      /**
       * string excludeClassPattern = 13;
       * @return The excludeClassPattern.
       */
      public java.lang.String getExcludeClassPattern() {
        java.lang.Object ref = excludeClassPattern_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          excludeClassPattern_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string excludeClassPattern = 13;
       * @return The bytes for excludeClassPattern.
       */
      public com.google.protobuf.ByteString
          getExcludeClassPatternBytes() {
        java.lang.Object ref = excludeClassPattern_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          excludeClassPattern_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string excludeClassPattern = 13;
       * @param value The excludeClassPattern to set.
       * @return This builder for chaining.
       */
      public Builder setExcludeClassPattern(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        excludeClassPattern_ = value;
        onChanged();
        return this;
      }
      /**
       * string excludeClassPattern = 13;
       * @return This builder for chaining.
       */
      public Builder clearExcludeClassPattern() {
        
        excludeClassPattern_ = getDefaultInstance().getExcludeClassPattern();
        onChanged();
        return this;
      }
      /**
       * string excludeClassPattern = 13;
       * @param value The bytes for excludeClassPattern to set.
       * @return This builder for chaining.
       */
      public Builder setExcludeClassPatternBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        excludeClassPattern_ = value;
        onChanged();
        return this;
      }

      private long listenerId_ ;
      /**
       * int64 listenerId = 14;
       * @return The listenerId.
       */
      public long getListenerId() {
        return listenerId_;
      }
      /**
       * int64 listenerId = 14;
       * @param value The listenerId to set.
       * @return This builder for chaining.
       */
      public Builder setListenerId(long value) {
        
        listenerId_ = value;
        onChanged();
        return this;
      }
      /**
       * int64 listenerId = 14;
       * @return This builder for chaining.
       */
      public Builder clearListenerId() {
        
        listenerId_ = 0L;
        onChanged();
        return this;
      }

      private boolean verbose_ ;
      /**
       * bool verbose = 15;
       * @return The verbose.
       */
      public boolean getVerbose() {
        return verbose_;
      }
      /**
       * bool verbose = 15;
       * @param value The verbose to set.
       * @return This builder for chaining.
       */
      public Builder setVerbose(boolean value) {
        
        verbose_ = value;
        onChanged();
        return this;
      }
      /**
       * bool verbose = 15;
       * @return This builder for chaining.
       */
      public Builder clearVerbose() {
        
        verbose_ = false;
        onChanged();
        return this;
      }

      private int maxNumOfMatchedClass_ ;
      /**
       * int32 maxNumOfMatchedClass = 16;
       * @return The maxNumOfMatchedClass.
       */
      public int getMaxNumOfMatchedClass() {
        return maxNumOfMatchedClass_;
      }
      /**
       * int32 maxNumOfMatchedClass = 16;
       * @param value The maxNumOfMatchedClass to set.
       * @return This builder for chaining.
       */
      public Builder setMaxNumOfMatchedClass(int value) {
        
        maxNumOfMatchedClass_ = value;
        onChanged();
        return this;
      }
      /**
       * int32 maxNumOfMatchedClass = 16;
       * @return This builder for chaining.
       */
      public Builder clearMaxNumOfMatchedClass() {
        
        maxNumOfMatchedClass_ = 0;
        onChanged();
        return this;
      }

      private long jobId_ ;
      /**
       * int64 jobId = 17;
       * @return The jobId.
       */
      public long getJobId() {
        return jobId_;
      }
      /**
       * int64 jobId = 17;
       * @param value The jobId to set.
       * @return This builder for chaining.
       */
      public Builder setJobId(long value) {
        
        jobId_ = value;
        onChanged();
        return this;
      }
      /**
       * int64 jobId = 17;
       * @return This builder for chaining.
       */
      public Builder clearJobId() {
        
        jobId_ = 0L;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:io.arthas.api.WatchRequest)
    }

    // @@protoc_insertion_point(class_scope:io.arthas.api.WatchRequest)
    private static final io.arthas.api.ArthasServices.WatchRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.arthas.api.ArthasServices.WatchRequest();
    }

    public static io.arthas.api.ArthasServices.WatchRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public WatchRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new WatchRequest(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.arthas.api.ArthasServices.WatchRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface WatchResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:io.arthas.api.WatchResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * string ts = 1;
     * @return The ts.
     */
    java.lang.String getTs();
    /**
     * string ts = 1;
     * @return The bytes for ts.
     */
    com.google.protobuf.ByteString
        getTsBytes();

    /**
     * double cost = 2;
     * @return The cost.
     */
    double getCost();

    /**
     * .io.arthas.api.JavaObject value = 3;
     * @return Whether the value field is set.
     */
    boolean hasValue();
    /**
     * .io.arthas.api.JavaObject value = 3;
     * @return The value.
     */
    io.arthas.api.ArthasServices.JavaObject getValue();
    /**
     * .io.arthas.api.JavaObject value = 3;
     */
    io.arthas.api.ArthasServices.JavaObjectOrBuilder getValueOrBuilder();

    /**
     * int32 sizeLimit = 4;
     * @return The sizeLimit.
     */
    int getSizeLimit();

    /**
     * string className = 5;
     * @return The className.
     */
    java.lang.String getClassName();
    /**
     * string className = 5;
     * @return The bytes for className.
     */
    com.google.protobuf.ByteString
        getClassNameBytes();

    /**
     * string methodName = 6;
     * @return The methodName.
     */
    java.lang.String getMethodName();
    /**
     * string methodName = 6;
     * @return The bytes for methodName.
     */
    com.google.protobuf.ByteString
        getMethodNameBytes();

    /**
     * string accessPoint = 7;
     * @return The accessPoint.
     */
    java.lang.String getAccessPoint();
    /**
     * string accessPoint = 7;
     * @return The bytes for accessPoint.
     */
    com.google.protobuf.ByteString
        getAccessPointBytes();
  }
  /**
   * Protobuf type {@code io.arthas.api.WatchResponse}
   */
  public  static final class WatchResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:io.arthas.api.WatchResponse)
      WatchResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use WatchResponse.newBuilder() to construct.
    private WatchResponse(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private WatchResponse() {
      ts_ = "";
      className_ = "";
      methodName_ = "";
      accessPoint_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new WatchResponse();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private WatchResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

              ts_ = s;
              break;
            }
            case 17: {

              cost_ = input.readDouble();
              break;
            }
            case 26: {
              io.arthas.api.ArthasServices.JavaObject.Builder subBuilder = null;
              if (value_ != null) {
                subBuilder = value_.toBuilder();
              }
              value_ = input.readMessage(io.arthas.api.ArthasServices.JavaObject.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(value_);
                value_ = subBuilder.buildPartial();
              }

              break;
            }
            case 32: {

              sizeLimit_ = input.readInt32();
              break;
            }
            case 42: {
              java.lang.String s = input.readStringRequireUtf8();

              className_ = s;
              break;
            }
            case 50: {
              java.lang.String s = input.readStringRequireUtf8();

              methodName_ = s;
              break;
            }
            case 58: {
              java.lang.String s = input.readStringRequireUtf8();

              accessPoint_ = s;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              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 io.arthas.api.ArthasServices.internal_static_io_arthas_api_WatchResponse_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.arthas.api.ArthasServices.internal_static_io_arthas_api_WatchResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.arthas.api.ArthasServices.WatchResponse.class, io.arthas.api.ArthasServices.WatchResponse.Builder.class);
    }

    public static final int TS_FIELD_NUMBER = 1;
    private volatile java.lang.Object ts_;
    /**
     * string ts = 1;
     * @return The ts.
     */
    public java.lang.String getTs() {
      java.lang.Object ref = ts_;
      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();
        ts_ = s;
        return s;
      }
    }
    /**
     * string ts = 1;
     * @return The bytes for ts.
     */
    public com.google.protobuf.ByteString
        getTsBytes() {
      java.lang.Object ref = ts_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        ts_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int COST_FIELD_NUMBER = 2;
    private double cost_;
    /**
     * double cost = 2;
     * @return The cost.
     */
    public double getCost() {
      return cost_;
    }

    public static final int VALUE_FIELD_NUMBER = 3;
    private io.arthas.api.ArthasServices.JavaObject value_;
    /**
     * .io.arthas.api.JavaObject value = 3;
     * @return Whether the value field is set.
     */
    public boolean hasValue() {
      return value_ != null;
    }
    /**
     * .io.arthas.api.JavaObject value = 3;
     * @return The value.
     */
    public io.arthas.api.ArthasServices.JavaObject getValue() {
      return value_ == null ? io.arthas.api.ArthasServices.JavaObject.getDefaultInstance() : value_;
    }
    /**
     * .io.arthas.api.JavaObject value = 3;
     */
    public io.arthas.api.ArthasServices.JavaObjectOrBuilder getValueOrBuilder() {
      return getValue();
    }

    public static final int SIZELIMIT_FIELD_NUMBER = 4;
    private int sizeLimit_;
    /**
     * int32 sizeLimit = 4;
     * @return The sizeLimit.
     */
    public int getSizeLimit() {
      return sizeLimit_;
    }

    public static final int CLASSNAME_FIELD_NUMBER = 5;
    private volatile java.lang.Object className_;
    /**
     * string className = 5;
     * @return The className.
     */
    public java.lang.String getClassName() {
      java.lang.Object ref = className_;
      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();
        className_ = s;
        return s;
      }
    }
    /**
     * string className = 5;
     * @return The bytes for className.
     */
    public com.google.protobuf.ByteString
        getClassNameBytes() {
      java.lang.Object ref = className_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        className_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int METHODNAME_FIELD_NUMBER = 6;
    private volatile java.lang.Object methodName_;
    /**
     * string methodName = 6;
     * @return The methodName.
     */
    public java.lang.String getMethodName() {
      java.lang.Object ref = methodName_;
      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();
        methodName_ = s;
        return s;
      }
    }
    /**
     * string methodName = 6;
     * @return The bytes for methodName.
     */
    public com.google.protobuf.ByteString
        getMethodNameBytes() {
      java.lang.Object ref = methodName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        methodName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int ACCESSPOINT_FIELD_NUMBER = 7;
    private volatile java.lang.Object accessPoint_;
    /**
     * string accessPoint = 7;
     * @return The accessPoint.
     */
    public java.lang.String getAccessPoint() {
      java.lang.Object ref = accessPoint_;
      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();
        accessPoint_ = s;
        return s;
      }
    }
    /**
     * string accessPoint = 7;
     * @return The bytes for accessPoint.
     */
    public com.google.protobuf.ByteString
        getAccessPointBytes() {
      java.lang.Object ref = accessPoint_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        accessPoint_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getTsBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, ts_);
      }
      if (cost_ != 0D) {
        output.writeDouble(2, cost_);
      }
      if (value_ != null) {
        output.writeMessage(3, getValue());
      }
      if (sizeLimit_ != 0) {
        output.writeInt32(4, sizeLimit_);
      }
      if (!getClassNameBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 5, className_);
      }
      if (!getMethodNameBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 6, methodName_);
      }
      if (!getAccessPointBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 7, accessPoint_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!getTsBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, ts_);
      }
      if (cost_ != 0D) {
        size += com.google.protobuf.CodedOutputStream
          .computeDoubleSize(2, cost_);
      }
      if (value_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getValue());
      }
      if (sizeLimit_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(4, sizeLimit_);
      }
      if (!getClassNameBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, className_);
      }
      if (!getMethodNameBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(6, methodName_);
      }
      if (!getAccessPointBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(7, accessPoint_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof io.arthas.api.ArthasServices.WatchResponse)) {
        return super.equals(obj);
      }
      io.arthas.api.ArthasServices.WatchResponse other = (io.arthas.api.ArthasServices.WatchResponse) obj;

      if (!getTs()
          .equals(other.getTs())) return false;
      if (java.lang.Double.doubleToLongBits(getCost())
          != java.lang.Double.doubleToLongBits(
              other.getCost())) return false;
      if (hasValue() != other.hasValue()) return false;
      if (hasValue()) {
        if (!getValue()
            .equals(other.getValue())) return false;
      }
      if (getSizeLimit()
          != other.getSizeLimit()) return false;
      if (!getClassName()
          .equals(other.getClassName())) return false;
      if (!getMethodName()
          .equals(other.getMethodName())) return false;
      if (!getAccessPoint()
          .equals(other.getAccessPoint())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + TS_FIELD_NUMBER;
      hash = (53 * hash) + getTs().hashCode();
      hash = (37 * hash) + COST_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          java.lang.Double.doubleToLongBits(getCost()));
      if (hasValue()) {
        hash = (37 * hash) + VALUE_FIELD_NUMBER;
        hash = (53 * hash) + getValue().hashCode();
      }
      hash = (37 * hash) + SIZELIMIT_FIELD_NUMBER;
      hash = (53 * hash) + getSizeLimit();
      hash = (37 * hash) + CLASSNAME_FIELD_NUMBER;
      hash = (53 * hash) + getClassName().hashCode();
      hash = (37 * hash) + METHODNAME_FIELD_NUMBER;
      hash = (53 * hash) + getMethodName().hashCode();
      hash = (37 * hash) + ACCESSPOINT_FIELD_NUMBER;
      hash = (53 * hash) + getAccessPoint().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.arthas.api.ArthasServices.WatchResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.arthas.api.ArthasServices.WatchResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.arthas.api.ArthasServices.WatchResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.arthas.api.ArthasServices.WatchResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.arthas.api.ArthasServices.WatchResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.arthas.api.ArthasServices.WatchResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.arthas.api.ArthasServices.WatchResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.arthas.api.ArthasServices.WatchResponse 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 io.arthas.api.ArthasServices.WatchResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static io.arthas.api.ArthasServices.WatchResponse 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 io.arthas.api.ArthasServices.WatchResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.arthas.api.ArthasServices.WatchResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(io.arthas.api.ArthasServices.WatchResponse prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    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 io.arthas.api.WatchResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:io.arthas.api.WatchResponse)
        io.arthas.api.ArthasServices.WatchResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.arthas.api.ArthasServices.internal_static_io_arthas_api_WatchResponse_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.arthas.api.ArthasServices.internal_static_io_arthas_api_WatchResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.arthas.api.ArthasServices.WatchResponse.class, io.arthas.api.ArthasServices.WatchResponse.Builder.class);
      }

      // Construct using io.arthas.api.ArthasServices.WatchResponse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        ts_ = "";

        cost_ = 0D;

        if (valueBuilder_ == null) {
          value_ = null;
        } else {
          value_ = null;
          valueBuilder_ = null;
        }
        sizeLimit_ = 0;

        className_ = "";

        methodName_ = "";

        accessPoint_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.arthas.api.ArthasServices.internal_static_io_arthas_api_WatchResponse_descriptor;
      }

      @java.lang.Override
      public io.arthas.api.ArthasServices.WatchResponse getDefaultInstanceForType() {
        return io.arthas.api.ArthasServices.WatchResponse.getDefaultInstance();
      }

      @java.lang.Override
      public io.arthas.api.ArthasServices.WatchResponse build() {
        io.arthas.api.ArthasServices.WatchResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.arthas.api.ArthasServices.WatchResponse buildPartial() {
        io.arthas.api.ArthasServices.WatchResponse result = new io.arthas.api.ArthasServices.WatchResponse(this);
        result.ts_ = ts_;
        result.cost_ = cost_;
        if (valueBuilder_ == null) {
          result.value_ = value_;
        } else {
          result.value_ = valueBuilder_.build();
        }
        result.sizeLimit_ = sizeLimit_;
        result.className_ = className_;
        result.methodName_ = methodName_;
        result.accessPoint_ = accessPoint_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.arthas.api.ArthasServices.WatchResponse) {
          return mergeFrom((io.arthas.api.ArthasServices.WatchResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.arthas.api.ArthasServices.WatchResponse other) {
        if (other == io.arthas.api.ArthasServices.WatchResponse.getDefaultInstance()) return this;
        if (!other.getTs().isEmpty()) {
          ts_ = other.ts_;
          onChanged();
        }
        if (other.getCost() != 0D) {
          setCost(other.getCost());
        }
        if (other.hasValue()) {
          mergeValue(other.getValue());
        }
        if (other.getSizeLimit() != 0) {
          setSizeLimit(other.getSizeLimit());
        }
        if (!other.getClassName().isEmpty()) {
          className_ = other.className_;
          onChanged();
        }
        if (!other.getMethodName().isEmpty()) {
          methodName_ = other.methodName_;
          onChanged();
        }
        if (!other.getAccessPoint().isEmpty()) {
          accessPoint_ = other.accessPoint_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        io.arthas.api.ArthasServices.WatchResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (io.arthas.api.ArthasServices.WatchResponse) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object ts_ = "";
      /**
       * string ts = 1;
       * @return The ts.
       */
      public java.lang.String getTs() {
        java.lang.Object ref = ts_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          ts_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string ts = 1;
       * @return The bytes for ts.
       */
      public com.google.protobuf.ByteString
          getTsBytes() {
        java.lang.Object ref = ts_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          ts_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string ts = 1;
       * @param value The ts to set.
       * @return This builder for chaining.
       */
      public Builder setTs(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        ts_ = value;
        onChanged();
        return this;
      }
      /**
       * string ts = 1;
       * @return This builder for chaining.
       */
      public Builder clearTs() {
        
        ts_ = getDefaultInstance().getTs();
        onChanged();
        return this;
      }
      /**
       * string ts = 1;
       * @param value The bytes for ts to set.
       * @return This builder for chaining.
       */
      public Builder setTsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        ts_ = value;
        onChanged();
        return this;
      }

      private double cost_ ;
      /**
       * double cost = 2;
       * @return The cost.
       */
      public double getCost() {
        return cost_;
      }
      /**
       * double cost = 2;
       * @param value The cost to set.
       * @return This builder for chaining.
       */
      public Builder setCost(double value) {
        
        cost_ = value;
        onChanged();
        return this;
      }
      /**
       * double cost = 2;
       * @return This builder for chaining.
       */
      public Builder clearCost() {
        
        cost_ = 0D;
        onChanged();
        return this;
      }

      private io.arthas.api.ArthasServices.JavaObject value_;
      private com.google.protobuf.SingleFieldBuilderV3<
          io.arthas.api.ArthasServices.JavaObject, io.arthas.api.ArthasServices.JavaObject.Builder, io.arthas.api.ArthasServices.JavaObjectOrBuilder> valueBuilder_;
      /**
       * .io.arthas.api.JavaObject value = 3;
       * @return Whether the value field is set.
       */
      public boolean hasValue() {
        return valueBuilder_ != null || value_ != null;
      }
      /**
       * .io.arthas.api.JavaObject value = 3;
       * @return The value.
       */
      public io.arthas.api.ArthasServices.JavaObject getValue() {
        if (valueBuilder_ == null) {
          return value_ == null ? io.arthas.api.ArthasServices.JavaObject.getDefaultInstance() : value_;
        } else {
          return valueBuilder_.getMessage();
        }
      }
      /**
       * .io.arthas.api.JavaObject value = 3;
       */
      public Builder setValue(io.arthas.api.ArthasServices.JavaObject value) {
        if (valueBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          value_ = value;
          onChanged();
        } else {
          valueBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * .io.arthas.api.JavaObject value = 3;
       */
      public Builder setValue(
          io.arthas.api.ArthasServices.JavaObject.Builder builderForValue) {
        if (valueBuilder_ == null) {
          value_ = builderForValue.build();
          onChanged();
        } else {
          valueBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * .io.arthas.api.JavaObject value = 3;
       */
      public Builder mergeValue(io.arthas.api.ArthasServices.JavaObject value) {
        if (valueBuilder_ == null) {
          if (value_ != null) {
            value_ =
              io.arthas.api.ArthasServices.JavaObject.newBuilder(value_).mergeFrom(value).buildPartial();
          } else {
            value_ = value;
          }
          onChanged();
        } else {
          valueBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * .io.arthas.api.JavaObject value = 3;
       */
      public Builder clearValue() {
        if (valueBuilder_ == null) {
          value_ = null;
          onChanged();
        } else {
          value_ = null;
          valueBuilder_ = null;
        }

        return this;
      }
      /**
       * .io.arthas.api.JavaObject value = 3;
       */
      public io.arthas.api.ArthasServices.JavaObject.Builder getValueBuilder() {
        
        onChanged();
        return getValueFieldBuilder().getBuilder();
      }
      /**
       * .io.arthas.api.JavaObject value = 3;
       */
      public io.arthas.api.ArthasServices.JavaObjectOrBuilder getValueOrBuilder() {
        if (valueBuilder_ != null) {
          return valueBuilder_.getMessageOrBuilder();
        } else {
          return value_ == null ?
              io.arthas.api.ArthasServices.JavaObject.getDefaultInstance() : value_;
        }
      }
      /**
       * .io.arthas.api.JavaObject value = 3;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          io.arthas.api.ArthasServices.JavaObject, io.arthas.api.ArthasServices.JavaObject.Builder, io.arthas.api.ArthasServices.JavaObjectOrBuilder> 
          getValueFieldBuilder() {
        if (valueBuilder_ == null) {
          valueBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              io.arthas.api.ArthasServices.JavaObject, io.arthas.api.ArthasServices.JavaObject.Builder, io.arthas.api.ArthasServices.JavaObjectOrBuilder>(
                  getValue(),
                  getParentForChildren(),
                  isClean());
          value_ = null;
        }
        return valueBuilder_;
      }

      private int sizeLimit_ ;
      /**
       * int32 sizeLimit = 4;
       * @return The sizeLimit.
       */
      public int getSizeLimit() {
        return sizeLimit_;
      }
      /**
       * int32 sizeLimit = 4;
       * @param value The sizeLimit to set.
       * @return This builder for chaining.
       */
      public Builder setSizeLimit(int value) {
        
        sizeLimit_ = value;
        onChanged();
        return this;
      }
      /**
       * int32 sizeLimit = 4;
       * @return This builder for chaining.
       */
      public Builder clearSizeLimit() {
        
        sizeLimit_ = 0;
        onChanged();
        return this;
      }

      private java.lang.Object className_ = "";
      /**
       * string className = 5;
       * @return The className.
       */
      public java.lang.String getClassName() {
        java.lang.Object ref = className_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          className_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string className = 5;
       * @return The bytes for className.
       */
      public com.google.protobuf.ByteString
          getClassNameBytes() {
        java.lang.Object ref = className_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          className_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string className = 5;
       * @param value The className to set.
       * @return This builder for chaining.
       */
      public Builder setClassName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        className_ = value;
        onChanged();
        return this;
      }
      /**
       * string className = 5;
       * @return This builder for chaining.
       */
      public Builder clearClassName() {
        
        className_ = getDefaultInstance().getClassName();
        onChanged();
        return this;
      }
      /**
       * string className = 5;
       * @param value The bytes for className to set.
       * @return This builder for chaining.
       */
      public Builder setClassNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        className_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object methodName_ = "";
      /**
       * string methodName = 6;
       * @return The methodName.
       */
      public java.lang.String getMethodName() {
        java.lang.Object ref = methodName_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          methodName_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string methodName = 6;
       * @return The bytes for methodName.
       */
      public com.google.protobuf.ByteString
          getMethodNameBytes() {
        java.lang.Object ref = methodName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          methodName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string methodName = 6;
       * @param value The methodName to set.
       * @return This builder for chaining.
       */
      public Builder setMethodName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        methodName_ = value;
        onChanged();
        return this;
      }
      /**
       * string methodName = 6;
       * @return This builder for chaining.
       */
      public Builder clearMethodName() {
        
        methodName_ = getDefaultInstance().getMethodName();
        onChanged();
        return this;
      }
      /**
       * string methodName = 6;
       * @param value The bytes for methodName to set.
       * @return This builder for chaining.
       */
      public Builder setMethodNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        methodName_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object accessPoint_ = "";
      /**
       * string accessPoint = 7;
       * @return The accessPoint.
       */
      public java.lang.String getAccessPoint() {
        java.lang.Object ref = accessPoint_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          accessPoint_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string accessPoint = 7;
       * @return The bytes for accessPoint.
       */
      public com.google.protobuf.ByteString
          getAccessPointBytes() {
        java.lang.Object ref = accessPoint_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          accessPoint_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string accessPoint = 7;
       * @param value The accessPoint to set.
       * @return This builder for chaining.
       */
      public Builder setAccessPoint(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        accessPoint_ = value;
        onChanged();
        return this;
      }
      /**
       * string accessPoint = 7;
       * @return This builder for chaining.
       */
      public Builder clearAccessPoint() {
        
        accessPoint_ = getDefaultInstance().getAccessPoint();
        onChanged();
        return this;
      }
      /**
       * string accessPoint = 7;
       * @param value The bytes for accessPoint to set.
       * @return This builder for chaining.
       */
      public Builder setAccessPointBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        accessPoint_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:io.arthas.api.WatchResponse)
    }

    // @@protoc_insertion_point(class_scope:io.arthas.api.WatchResponse)
    private static final io.arthas.api.ArthasServices.WatchResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.arthas.api.ArthasServices.WatchResponse();
    }

    public static io.arthas.api.ArthasServices.WatchResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public WatchResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new WatchResponse(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.arthas.api.ArthasServices.WatchResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ResponseBodyOrBuilder extends
      // @@protoc_insertion_point(interface_extends:io.arthas.api.ResponseBody)
      com.google.protobuf.MessageOrBuilder {

    /**
     * int32 jobId = 1;
     * @return The jobId.
     */
    int getJobId();

    /**
     * string type = 2;
     * @return The type.
     */
    java.lang.String getType();
    /**
     * string type = 2;
     * @return The bytes for type.
     */
    com.google.protobuf.ByteString
        getTypeBytes();

    /**
     * int64 resultId = 3;
     * @return The resultId.
     */
    long getResultId();

    /**
     * .io.arthas.api.StringStringMapValue stringStringMapValue = 4;
     * @return Whether the stringStringMapValue field is set.
     */
    boolean hasStringStringMapValue();
    /**
     * .io.arthas.api.StringStringMapValue stringStringMapValue = 4;
     * @return The stringStringMapValue.
     */
    io.arthas.api.ArthasServices.StringStringMapValue getStringStringMapValue();
    /**
     * .io.arthas.api.StringStringMapValue stringStringMapValue = 4;
     */
    io.arthas.api.ArthasServices.StringStringMapValueOrBuilder getStringStringMapValueOrBuilder();

    /**
     * string stringValue = 5;
     * @return The stringValue.
     */
    java.lang.String getStringValue();
    /**
     * string stringValue = 5;
     * @return The bytes for stringValue.
     */
    com.google.protobuf.ByteString
        getStringValueBytes();

    /**
     * .io.arthas.api.WatchResponse watchResponse = 6;
     * @return Whether the watchResponse field is set.
     */
    boolean hasWatchResponse();
    /**
     * .io.arthas.api.WatchResponse watchResponse = 6;
     * @return The watchResponse.
     */
    io.arthas.api.ArthasServices.WatchResponse getWatchResponse();
    /**
     * .io.arthas.api.WatchResponse watchResponse = 6;
     */
    io.arthas.api.ArthasServices.WatchResponseOrBuilder getWatchResponseOrBuilder();

    /**
     * .io.arthas.api.JavaObject javaObject = 7;
     * @return Whether the javaObject field is set.
     */
    boolean hasJavaObject();
    /**
     * .io.arthas.api.JavaObject javaObject = 7;
     * @return The javaObject.
     */
    io.arthas.api.ArthasServices.JavaObject getJavaObject();
    /**
     * .io.arthas.api.JavaObject javaObject = 7;
     */
    io.arthas.api.ArthasServices.JavaObjectOrBuilder getJavaObjectOrBuilder();

    public io.arthas.api.ArthasServices.ResponseBody.DataCase getDataCase();
  }
  /**
   * Protobuf type {@code io.arthas.api.ResponseBody}
   */
  public  static final class ResponseBody extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:io.arthas.api.ResponseBody)
      ResponseBodyOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ResponseBody.newBuilder() to construct.
    private ResponseBody(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private ResponseBody() {
      type_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ResponseBody();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private ResponseBody(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      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;
            case 8: {

              jobId_ = input.readInt32();
              break;
            }
            case 18: {
              java.lang.String s = input.readStringRequireUtf8();

              type_ = s;
              break;
            }
            case 24: {

              resultId_ = input.readInt64();
              break;
            }
            case 34: {
              io.arthas.api.ArthasServices.StringStringMapValue.Builder subBuilder = null;
              if (dataCase_ == 4) {
                subBuilder = ((io.arthas.api.ArthasServices.StringStringMapValue) data_).toBuilder();
              }
              data_ =
                  input.readMessage(io.arthas.api.ArthasServices.StringStringMapValue.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((io.arthas.api.ArthasServices.StringStringMapValue) data_);
                data_ = subBuilder.buildPartial();
              }
              dataCase_ = 4;
              break;
            }
            case 42: {
              java.lang.String s = input.readStringRequireUtf8();
              dataCase_ = 5;
              data_ = s;
              break;
            }
            case 50: {
              io.arthas.api.ArthasServices.WatchResponse.Builder subBuilder = null;
              if (dataCase_ == 6) {
                subBuilder = ((io.arthas.api.ArthasServices.WatchResponse) data_).toBuilder();
              }
              data_ =
                  input.readMessage(io.arthas.api.ArthasServices.WatchResponse.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((io.arthas.api.ArthasServices.WatchResponse) data_);
                data_ = subBuilder.buildPartial();
              }
              dataCase_ = 6;
              break;
            }
            case 58: {
              io.arthas.api.ArthasServices.JavaObject.Builder subBuilder = null;
              if (dataCase_ == 7) {
                subBuilder = ((io.arthas.api.ArthasServices.JavaObject) data_).toBuilder();
              }
              data_ =
                  input.readMessage(io.arthas.api.ArthasServices.JavaObject.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((io.arthas.api.ArthasServices.JavaObject) data_);
                data_ = subBuilder.buildPartial();
              }
              dataCase_ = 7;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              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 io.arthas.api.ArthasServices.internal_static_io_arthas_api_ResponseBody_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return io.arthas.api.ArthasServices.internal_static_io_arthas_api_ResponseBody_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              io.arthas.api.ArthasServices.ResponseBody.class, io.arthas.api.ArthasServices.ResponseBody.Builder.class);
    }

    private int dataCase_ = 0;
    private java.lang.Object data_;
    public enum DataCase
        implements com.google.protobuf.Internal.EnumLite,
            com.google.protobuf.AbstractMessage.InternalOneOfEnum {
      STRINGSTRINGMAPVALUE(4),
      STRINGVALUE(5),
      WATCHRESPONSE(6),
      JAVAOBJECT(7),
      DATA_NOT_SET(0);
      private final int value;
      private DataCase(int value) {
        this.value = value;
      }
      /**
       * @param value The number of the enum to look for.
       * @return The enum associated with the given number.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static DataCase valueOf(int value) {
        return forNumber(value);
      }

      public static DataCase forNumber(int value) {
        switch (value) {
          case 4: return STRINGSTRINGMAPVALUE;
          case 5: return STRINGVALUE;
          case 6: return WATCHRESPONSE;
          case 7: return JAVAOBJECT;
          case 0: return DATA_NOT_SET;
          default: return null;
        }
      }
      public int getNumber() {
        return this.value;
      }
    };

    public DataCase
    getDataCase() {
      return DataCase.forNumber(
          dataCase_);
    }

    public static final int JOBID_FIELD_NUMBER = 1;
    private int jobId_;
    /**
     * int32 jobId = 1;
     * @return The jobId.
     */
    public int getJobId() {
      return jobId_;
    }

    public static final int TYPE_FIELD_NUMBER = 2;
    private volatile java.lang.Object type_;
    /**
     * string type = 2;
     * @return The type.
     */
    public java.lang.String getType() {
      java.lang.Object ref = type_;
      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();
        type_ = s;
        return s;
      }
    }
    /**
     * string type = 2;
     * @return The bytes for type.
     */
    public com.google.protobuf.ByteString
        getTypeBytes() {
      java.lang.Object ref = type_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        type_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int RESULTID_FIELD_NUMBER = 3;
    private long resultId_;
    /**
     * int64 resultId = 3;
     * @return The resultId.
     */
    public long getResultId() {
      return resultId_;
    }

    public static final int STRINGSTRINGMAPVALUE_FIELD_NUMBER = 4;
    /**
     * .io.arthas.api.StringStringMapValue stringStringMapValue = 4;
     * @return Whether the stringStringMapValue field is set.
     */
    public boolean hasStringStringMapValue() {
      return dataCase_ == 4;
    }
    /**
     * .io.arthas.api.StringStringMapValue stringStringMapValue = 4;
     * @return The stringStringMapValue.
     */
    public io.arthas.api.ArthasServices.StringStringMapValue getStringStringMapValue() {
      if (dataCase_ == 4) {
         return (io.arthas.api.ArthasServices.StringStringMapValue) data_;
      }
      return io.arthas.api.ArthasServices.StringStringMapValue.getDefaultInstance();
    }
    /**
     * .io.arthas.api.StringStringMapValue stringStringMapValue = 4;
     */
    public io.arthas.api.ArthasServices.StringStringMapValueOrBuilder getStringStringMapValueOrBuilder() {
      if (dataCase_ == 4) {
         return (io.arthas.api.ArthasServices.StringStringMapValue) data_;
      }
      return io.arthas.api.ArthasServices.StringStringMapValue.getDefaultInstance();
    }

    public static final int STRINGVALUE_FIELD_NUMBER = 5;
    /**
     * string stringValue = 5;
     * @return The stringValue.
     */
    public java.lang.String getStringValue() {
      java.lang.Object ref = "";
      if (dataCase_ == 5) {
        ref = data_;
      }
      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 (dataCase_ == 5) {
          data_ = s;
        }
        return s;
      }
    }
    /**
     * string stringValue = 5;
     * @return The bytes for stringValue.
     */
    public com.google.protobuf.ByteString
        getStringValueBytes() {
      java.lang.Object ref = "";
      if (dataCase_ == 5) {
        ref = data_;
      }
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        if (dataCase_ == 5) {
          data_ = b;
        }
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int WATCHRESPONSE_FIELD_NUMBER = 6;
    /**
     * .io.arthas.api.WatchResponse watchResponse = 6;
     * @return Whether the watchResponse field is set.
     */
    public boolean hasWatchResponse() {
      return dataCase_ == 6;
    }
    /**
     * .io.arthas.api.WatchResponse watchResponse = 6;
     * @return The watchResponse.
     */
    public io.arthas.api.ArthasServices.WatchResponse getWatchResponse() {
      if (dataCase_ == 6) {
         return (io.arthas.api.ArthasServices.WatchResponse) data_;
      }
      return io.arthas.api.ArthasServices.WatchResponse.getDefaultInstance();
    }
    /**
     * .io.arthas.api.WatchResponse watchResponse = 6;
     */
    public io.arthas.api.ArthasServices.WatchResponseOrBuilder getWatchResponseOrBuilder() {
      if (dataCase_ == 6) {
         return (io.arthas.api.ArthasServices.WatchResponse) data_;
      }
      return io.arthas.api.ArthasServices.WatchResponse.getDefaultInstance();
    }

    public static final int JAVAOBJECT_FIELD_NUMBER = 7;
    /**
     * .io.arthas.api.JavaObject javaObject = 7;
     * @return Whether the javaObject field is set.
     */
    public boolean hasJavaObject() {
      return dataCase_ == 7;
    }
    /**
     * .io.arthas.api.JavaObject javaObject = 7;
     * @return The javaObject.
     */
    public io.arthas.api.ArthasServices.JavaObject getJavaObject() {
      if (dataCase_ == 7) {
         return (io.arthas.api.ArthasServices.JavaObject) data_;
      }
      return io.arthas.api.ArthasServices.JavaObject.getDefaultInstance();
    }
    /**
     * .io.arthas.api.JavaObject javaObject = 7;
     */
    public io.arthas.api.ArthasServices.JavaObjectOrBuilder getJavaObjectOrBuilder() {
      if (dataCase_ == 7) {
         return (io.arthas.api.ArthasServices.JavaObject) data_;
      }
      return io.arthas.api.ArthasServices.JavaObject.getDefaultInstance();
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (jobId_ != 0) {
        output.writeInt32(1, jobId_);
      }
      if (!getTypeBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, type_);
      }
      if (resultId_ != 0L) {
        output.writeInt64(3, resultId_);
      }
      if (dataCase_ == 4) {
        output.writeMessage(4, (io.arthas.api.ArthasServices.StringStringMapValue) data_);
      }
      if (dataCase_ == 5) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 5, data_);
      }
      if (dataCase_ == 6) {
        output.writeMessage(6, (io.arthas.api.ArthasServices.WatchResponse) data_);
      }
      if (dataCase_ == 7) {
        output.writeMessage(7, (io.arthas.api.ArthasServices.JavaObject) data_);
      }
      unknownFields.writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (jobId_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, jobId_);
      }
      if (!getTypeBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, type_);
      }
      if (resultId_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(3, resultId_);
      }
      if (dataCase_ == 4) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, (io.arthas.api.ArthasServices.StringStringMapValue) data_);
      }
      if (dataCase_ == 5) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, data_);
      }
      if (dataCase_ == 6) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(6, (io.arthas.api.ArthasServices.WatchResponse) data_);
      }
      if (dataCase_ == 7) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(7, (io.arthas.api.ArthasServices.JavaObject) data_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof io.arthas.api.ArthasServices.ResponseBody)) {
        return super.equals(obj);
      }
      io.arthas.api.ArthasServices.ResponseBody other = (io.arthas.api.ArthasServices.ResponseBody) obj;

      if (getJobId()
          != other.getJobId()) return false;
      if (!getType()
          .equals(other.getType())) return false;
      if (getResultId()
          != other.getResultId()) return false;
      if (!getDataCase().equals(other.getDataCase())) return false;
      switch (dataCase_) {
        case 4:
          if (!getStringStringMapValue()
              .equals(other.getStringStringMapValue())) return false;
          break;
        case 5:
          if (!getStringValue()
              .equals(other.getStringValue())) return false;
          break;
        case 6:
          if (!getWatchResponse()
              .equals(other.getWatchResponse())) return false;
          break;
        case 7:
          if (!getJavaObject()
              .equals(other.getJavaObject())) return false;
          break;
        case 0:
        default:
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + JOBID_FIELD_NUMBER;
      hash = (53 * hash) + getJobId();
      hash = (37 * hash) + TYPE_FIELD_NUMBER;
      hash = (53 * hash) + getType().hashCode();
      hash = (37 * hash) + RESULTID_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getResultId());
      switch (dataCase_) {
        case 4:
          hash = (37 * hash) + STRINGSTRINGMAPVALUE_FIELD_NUMBER;
          hash = (53 * hash) + getStringStringMapValue().hashCode();
          break;
        case 5:
          hash = (37 * hash) + STRINGVALUE_FIELD_NUMBER;
          hash = (53 * hash) + getStringValue().hashCode();
          break;
        case 6:
          hash = (37 * hash) + WATCHRESPONSE_FIELD_NUMBER;
          hash = (53 * hash) + getWatchResponse().hashCode();
          break;
        case 7:
          hash = (37 * hash) + JAVAOBJECT_FIELD_NUMBER;
          hash = (53 * hash) + getJavaObject().hashCode();
          break;
        case 0:
        default:
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static io.arthas.api.ArthasServices.ResponseBody parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.arthas.api.ArthasServices.ResponseBody parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.arthas.api.ArthasServices.ResponseBody parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.arthas.api.ArthasServices.ResponseBody parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.arthas.api.ArthasServices.ResponseBody parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static io.arthas.api.ArthasServices.ResponseBody parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static io.arthas.api.ArthasServices.ResponseBody parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.arthas.api.ArthasServices.ResponseBody 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 io.arthas.api.ArthasServices.ResponseBody parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static io.arthas.api.ArthasServices.ResponseBody 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 io.arthas.api.ArthasServices.ResponseBody parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static io.arthas.api.ArthasServices.ResponseBody parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(io.arthas.api.ArthasServices.ResponseBody prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    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 io.arthas.api.ResponseBody}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:io.arthas.api.ResponseBody)
        io.arthas.api.ArthasServices.ResponseBodyOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return io.arthas.api.ArthasServices.internal_static_io_arthas_api_ResponseBody_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return io.arthas.api.ArthasServices.internal_static_io_arthas_api_ResponseBody_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                io.arthas.api.ArthasServices.ResponseBody.class, io.arthas.api.ArthasServices.ResponseBody.Builder.class);
      }

      // Construct using io.arthas.api.ArthasServices.ResponseBody.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        jobId_ = 0;

        type_ = "";

        resultId_ = 0L;

        dataCase_ = 0;
        data_ = null;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return io.arthas.api.ArthasServices.internal_static_io_arthas_api_ResponseBody_descriptor;
      }

      @java.lang.Override
      public io.arthas.api.ArthasServices.ResponseBody getDefaultInstanceForType() {
        return io.arthas.api.ArthasServices.ResponseBody.getDefaultInstance();
      }

      @java.lang.Override
      public io.arthas.api.ArthasServices.ResponseBody build() {
        io.arthas.api.ArthasServices.ResponseBody result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public io.arthas.api.ArthasServices.ResponseBody buildPartial() {
        io.arthas.api.ArthasServices.ResponseBody result = new io.arthas.api.ArthasServices.ResponseBody(this);
        result.jobId_ = jobId_;
        result.type_ = type_;
        result.resultId_ = resultId_;
        if (dataCase_ == 4) {
          if (stringStringMapValueBuilder_ == null) {
            result.data_ = data_;
          } else {
            result.data_ = stringStringMapValueBuilder_.build();
          }
        }
        if (dataCase_ == 5) {
          result.data_ = data_;
        }
        if (dataCase_ == 6) {
          if (watchResponseBuilder_ == null) {
            result.data_ = data_;
          } else {
            result.data_ = watchResponseBuilder_.build();
          }
        }
        if (dataCase_ == 7) {
          if (javaObjectBuilder_ == null) {
            result.data_ = data_;
          } else {
            result.data_ = javaObjectBuilder_.build();
          }
        }
        result.dataCase_ = dataCase_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof io.arthas.api.ArthasServices.ResponseBody) {
          return mergeFrom((io.arthas.api.ArthasServices.ResponseBody)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(io.arthas.api.ArthasServices.ResponseBody other) {
        if (other == io.arthas.api.ArthasServices.ResponseBody.getDefaultInstance()) return this;
        if (other.getJobId() != 0) {
          setJobId(other.getJobId());
        }
        if (!other.getType().isEmpty()) {
          type_ = other.type_;
          onChanged();
        }
        if (other.getResultId() != 0L) {
          setResultId(other.getResultId());
        }
        switch (other.getDataCase()) {
          case STRINGSTRINGMAPVALUE: {
            mergeStringStringMapValue(other.getStringStringMapValue());
            break;
          }
          case STRINGVALUE: {
            dataCase_ = 5;
            data_ = other.data_;
            onChanged();
            break;
          }
          case WATCHRESPONSE: {
            mergeWatchResponse(other.getWatchResponse());
            break;
          }
          case JAVAOBJECT: {
            mergeJavaObject(other.getJavaObject());
            break;
          }
          case DATA_NOT_SET: {
            break;
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        io.arthas.api.ArthasServices.ResponseBody parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (io.arthas.api.ArthasServices.ResponseBody) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int dataCase_ = 0;
      private java.lang.Object data_;
      public DataCase
          getDataCase() {
        return DataCase.forNumber(
            dataCase_);
      }

      public Builder clearData() {
        dataCase_ = 0;
        data_ = null;
        onChanged();
        return this;
      }


      private int jobId_ ;
      /**
       * int32 jobId = 1;
       * @return The jobId.
       */
      public int getJobId() {
        return jobId_;
      }
      /**
       * int32 jobId = 1;
       * @param value The jobId to set.
       * @return This builder for chaining.
       */
      public Builder setJobId(int value) {
        
        jobId_ = value;
        onChanged();
        return this;
      }
      /**
       * int32 jobId = 1;
       * @return This builder for chaining.
       */
      public Builder clearJobId() {
        
        jobId_ = 0;
        onChanged();
        return this;
      }

      private java.lang.Object type_ = "";
      /**
       * string type = 2;
       * @return The type.
       */
      public java.lang.String getType() {
        java.lang.Object ref = type_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          type_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string type = 2;
       * @return The bytes for type.
       */
      public com.google.protobuf.ByteString
          getTypeBytes() {
        java.lang.Object ref = type_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          type_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string type = 2;
       * @param value The type to set.
       * @return This builder for chaining.
       */
      public Builder setType(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        type_ = value;
        onChanged();
        return this;
      }
      /**
       * string type = 2;
       * @return This builder for chaining.
       */
      public Builder clearType() {
        
        type_ = getDefaultInstance().getType();
        onChanged();
        return this;
      }
      /**
       * string type = 2;
       * @param value The bytes for type to set.
       * @return This builder for chaining.
       */
      public Builder setTypeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        type_ = value;
        onChanged();
        return this;
      }

      private long resultId_ ;
      /**
       * int64 resultId = 3;
       * @return The resultId.
       */
      public long getResultId() {
        return resultId_;
      }
      /**
       * int64 resultId = 3;
       * @param value The resultId to set.
       * @return This builder for chaining.
       */
      public Builder setResultId(long value) {
        
        resultId_ = value;
        onChanged();
        return this;
      }
      /**
       * int64 resultId = 3;
       * @return This builder for chaining.
       */
      public Builder clearResultId() {
        
        resultId_ = 0L;
        onChanged();
        return this;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          io.arthas.api.ArthasServices.StringStringMapValue, io.arthas.api.ArthasServices.StringStringMapValue.Builder, io.arthas.api.ArthasServices.StringStringMapValueOrBuilder> stringStringMapValueBuilder_;
      /**
       * .io.arthas.api.StringStringMapValue stringStringMapValue = 4;
       * @return Whether the stringStringMapValue field is set.
       */
      public boolean hasStringStringMapValue() {
        return dataCase_ == 4;
      }
      /**
       * .io.arthas.api.StringStringMapValue stringStringMapValue = 4;
       * @return The stringStringMapValue.
       */
      public io.arthas.api.ArthasServices.StringStringMapValue getStringStringMapValue() {
        if (stringStringMapValueBuilder_ == null) {
          if (dataCase_ == 4) {
            return (io.arthas.api.ArthasServices.StringStringMapValue) data_;
          }
          return io.arthas.api.ArthasServices.StringStringMapValue.getDefaultInstance();
        } else {
          if (dataCase_ == 4) {
            return stringStringMapValueBuilder_.getMessage();
          }
          return io.arthas.api.ArthasServices.StringStringMapValue.getDefaultInstance();
        }
      }
      /**
       * .io.arthas.api.StringStringMapValue stringStringMapValue = 4;
       */
      public Builder setStringStringMapValue(io.arthas.api.ArthasServices.StringStringMapValue value) {
        if (stringStringMapValueBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          data_ = value;
          onChanged();
        } else {
          stringStringMapValueBuilder_.setMessage(value);
        }
        dataCase_ = 4;
        return this;
      }
      /**
       * .io.arthas.api.StringStringMapValue stringStringMapValue = 4;
       */
      public Builder setStringStringMapValue(
          io.arthas.api.ArthasServices.StringStringMapValue.Builder builderForValue) {
        if (stringStringMapValueBuilder_ == null) {
          data_ = builderForValue.build();
          onChanged();
        } else {
          stringStringMapValueBuilder_.setMessage(builderForValue.build());
        }
        dataCase_ = 4;
        return this;
      }
      /**
       * .io.arthas.api.StringStringMapValue stringStringMapValue = 4;
       */
      public Builder mergeStringStringMapValue(io.arthas.api.ArthasServices.StringStringMapValue value) {
        if (stringStringMapValueBuilder_ == null) {
          if (dataCase_ == 4 &&
              data_ != io.arthas.api.ArthasServices.StringStringMapValue.getDefaultInstance()) {
            data_ = io.arthas.api.ArthasServices.StringStringMapValue.newBuilder((io.arthas.api.ArthasServices.StringStringMapValue) data_)
                .mergeFrom(value).buildPartial();
          } else {
            data_ = value;
          }
          onChanged();
        } else {
          if (dataCase_ == 4) {
            stringStringMapValueBuilder_.mergeFrom(value);
          }
          stringStringMapValueBuilder_.setMessage(value);
        }
        dataCase_ = 4;
        return this;
      }
      /**
       * .io.arthas.api.StringStringMapValue stringStringMapValue = 4;
       */
      public Builder clearStringStringMapValue() {
        if (stringStringMapValueBuilder_ == null) {
          if (dataCase_ == 4) {
            dataCase_ = 0;
            data_ = null;
            onChanged();
          }
        } else {
          if (dataCase_ == 4) {
            dataCase_ = 0;
            data_ = null;
          }
          stringStringMapValueBuilder_.clear();
        }
        return this;
      }
      /**
       * .io.arthas.api.StringStringMapValue stringStringMapValue = 4;
       */
      public io.arthas.api.ArthasServices.StringStringMapValue.Builder getStringStringMapValueBuilder() {
        return getStringStringMapValueFieldBuilder().getBuilder();
      }
      /**
       * .io.arthas.api.StringStringMapValue stringStringMapValue = 4;
       */
      public io.arthas.api.ArthasServices.StringStringMapValueOrBuilder getStringStringMapValueOrBuilder() {
        if ((dataCase_ == 4) && (stringStringMapValueBuilder_ != null)) {
          return stringStringMapValueBuilder_.getMessageOrBuilder();
        } else {
          if (dataCase_ == 4) {
            return (io.arthas.api.ArthasServices.StringStringMapValue) data_;
          }
          return io.arthas.api.ArthasServices.StringStringMapValue.getDefaultInstance();
        }
      }
      /**
       * .io.arthas.api.StringStringMapValue stringStringMapValue = 4;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          io.arthas.api.ArthasServices.StringStringMapValue, io.arthas.api.ArthasServices.StringStringMapValue.Builder, io.arthas.api.ArthasServices.StringStringMapValueOrBuilder> 
          getStringStringMapValueFieldBuilder() {
        if (stringStringMapValueBuilder_ == null) {
          if (!(dataCase_ == 4)) {
            data_ = io.arthas.api.ArthasServices.StringStringMapValue.getDefaultInstance();
          }
          stringStringMapValueBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              io.arthas.api.ArthasServices.StringStringMapValue, io.arthas.api.ArthasServices.StringStringMapValue.Builder, io.arthas.api.ArthasServices.StringStringMapValueOrBuilder>(
                  (io.arthas.api.ArthasServices.StringStringMapValue) data_,
                  getParentForChildren(),
                  isClean());
          data_ = null;
        }
        dataCase_ = 4;
        onChanged();;
        return stringStringMapValueBuilder_;
      }

      /**
       * string stringValue = 5;
       * @return The stringValue.
       */
      public java.lang.String getStringValue() {
        java.lang.Object ref = "";
        if (dataCase_ == 5) {
          ref = data_;
        }
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (dataCase_ == 5) {
            data_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string stringValue = 5;
       * @return The bytes for stringValue.
       */
      public com.google.protobuf.ByteString
          getStringValueBytes() {
        java.lang.Object ref = "";
        if (dataCase_ == 5) {
          ref = data_;
        }
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          if (dataCase_ == 5) {
            data_ = b;
          }
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string stringValue = 5;
       * @param value The stringValue to set.
       * @return This builder for chaining.
       */
      public Builder setStringValue(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  dataCase_ = 5;
        data_ = value;
        onChanged();
        return this;
      }
      /**
       * string stringValue = 5;
       * @return This builder for chaining.
       */
      public Builder clearStringValue() {
        if (dataCase_ == 5) {
          dataCase_ = 0;
          data_ = null;
          onChanged();
        }
        return this;
      }
      /**
       * string stringValue = 5;
       * @param value The bytes for stringValue to set.
       * @return This builder for chaining.
       */
      public Builder setStringValueBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        dataCase_ = 5;
        data_ = value;
        onChanged();
        return this;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          io.arthas.api.ArthasServices.WatchResponse, io.arthas.api.ArthasServices.WatchResponse.Builder, io.arthas.api.ArthasServices.WatchResponseOrBuilder> watchResponseBuilder_;
      /**
       * .io.arthas.api.WatchResponse watchResponse = 6;
       * @return Whether the watchResponse field is set.
       */
      public boolean hasWatchResponse() {
        return dataCase_ == 6;
      }
      /**
       * .io.arthas.api.WatchResponse watchResponse = 6;
       * @return The watchResponse.
       */
      public io.arthas.api.ArthasServices.WatchResponse getWatchResponse() {
        if (watchResponseBuilder_ == null) {
          if (dataCase_ == 6) {
            return (io.arthas.api.ArthasServices.WatchResponse) data_;
          }
          return io.arthas.api.ArthasServices.WatchResponse.getDefaultInstance();
        } else {
          if (dataCase_ == 6) {
            return watchResponseBuilder_.getMessage();
          }
          return io.arthas.api.ArthasServices.WatchResponse.getDefaultInstance();
        }
      }
      /**
       * .io.arthas.api.WatchResponse watchResponse = 6;
       */
      public Builder setWatchResponse(io.arthas.api.ArthasServices.WatchResponse value) {
        if (watchResponseBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          data_ = value;
          onChanged();
        } else {
          watchResponseBuilder_.setMessage(value);
        }
        dataCase_ = 6;
        return this;
      }
      /**
       * .io.arthas.api.WatchResponse watchResponse = 6;
       */
      public Builder setWatchResponse(
          io.arthas.api.ArthasServices.WatchResponse.Builder builderForValue) {
        if (watchResponseBuilder_ == null) {
          data_ = builderForValue.build();
          onChanged();
        } else {
          watchResponseBuilder_.setMessage(builderForValue.build());
        }
        dataCase_ = 6;
        return this;
      }
      /**
       * .io.arthas.api.WatchResponse watchResponse = 6;
       */
      public Builder mergeWatchResponse(io.arthas.api.ArthasServices.WatchResponse value) {
        if (watchResponseBuilder_ == null) {
          if (dataCase_ == 6 &&
              data_ != io.arthas.api.ArthasServices.WatchResponse.getDefaultInstance()) {
            data_ = io.arthas.api.ArthasServices.WatchResponse.newBuilder((io.arthas.api.ArthasServices.WatchResponse) data_)
                .mergeFrom(value).buildPartial();
          } else {
            data_ = value;
          }
          onChanged();
        } else {
          if (dataCase_ == 6) {
            watchResponseBuilder_.mergeFrom(value);
          }
          watchResponseBuilder_.setMessage(value);
        }
        dataCase_ = 6;
        return this;
      }
      /**
       * .io.arthas.api.WatchResponse watchResponse = 6;
       */
      public Builder clearWatchResponse() {
        if (watchResponseBuilder_ == null) {
          if (dataCase_ == 6) {
            dataCase_ = 0;
            data_ = null;
            onChanged();
          }
        } else {
          if (dataCase_ == 6) {
            dataCase_ = 0;
            data_ = null;
          }
          watchResponseBuilder_.clear();
        }
        return this;
      }
      /**
       * .io.arthas.api.WatchResponse watchResponse = 6;
       */
      public io.arthas.api.ArthasServices.WatchResponse.Builder getWatchResponseBuilder() {
        return getWatchResponseFieldBuilder().getBuilder();
      }
      /**
       * .io.arthas.api.WatchResponse watchResponse = 6;
       */
      public io.arthas.api.ArthasServices.WatchResponseOrBuilder getWatchResponseOrBuilder() {
        if ((dataCase_ == 6) && (watchResponseBuilder_ != null)) {
          return watchResponseBuilder_.getMessageOrBuilder();
        } else {
          if (dataCase_ == 6) {
            return (io.arthas.api.ArthasServices.WatchResponse) data_;
          }
          return io.arthas.api.ArthasServices.WatchResponse.getDefaultInstance();
        }
      }
      /**
       * .io.arthas.api.WatchResponse watchResponse = 6;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          io.arthas.api.ArthasServices.WatchResponse, io.arthas.api.ArthasServices.WatchResponse.Builder, io.arthas.api.ArthasServices.WatchResponseOrBuilder> 
          getWatchResponseFieldBuilder() {
        if (watchResponseBuilder_ == null) {
          if (!(dataCase_ == 6)) {
            data_ = io.arthas.api.ArthasServices.WatchResponse.getDefaultInstance();
          }
          watchResponseBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              io.arthas.api.ArthasServices.WatchResponse, io.arthas.api.ArthasServices.WatchResponse.Builder, io.arthas.api.ArthasServices.WatchResponseOrBuilder>(
                  (io.arthas.api.ArthasServices.WatchResponse) data_,
                  getParentForChildren(),
                  isClean());
          data_ = null;
        }
        dataCase_ = 6;
        onChanged();;
        return watchResponseBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          io.arthas.api.ArthasServices.JavaObject, io.arthas.api.ArthasServices.JavaObject.Builder, io.arthas.api.ArthasServices.JavaObjectOrBuilder> javaObjectBuilder_;
      /**
       * .io.arthas.api.JavaObject javaObject = 7;
       * @return Whether the javaObject field is set.
       */
      public boolean hasJavaObject() {
        return dataCase_ == 7;
      }
      /**
       * .io.arthas.api.JavaObject javaObject = 7;
       * @return The javaObject.
       */
      public io.arthas.api.ArthasServices.JavaObject getJavaObject() {
        if (javaObjectBuilder_ == null) {
          if (dataCase_ == 7) {
            return (io.arthas.api.ArthasServices.JavaObject) data_;
          }
          return io.arthas.api.ArthasServices.JavaObject.getDefaultInstance();
        } else {
          if (dataCase_ == 7) {
            return javaObjectBuilder_.getMessage();
          }
          return io.arthas.api.ArthasServices.JavaObject.getDefaultInstance();
        }
      }
      /**
       * .io.arthas.api.JavaObject javaObject = 7;
       */
      public Builder setJavaObject(io.arthas.api.ArthasServices.JavaObject value) {
        if (javaObjectBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          data_ = value;
          onChanged();
        } else {
          javaObjectBuilder_.setMessage(value);
        }
        dataCase_ = 7;
        return this;
      }
      /**
       * .io.arthas.api.JavaObject javaObject = 7;
       */
      public Builder setJavaObject(
          io.arthas.api.ArthasServices.JavaObject.Builder builderForValue) {
        if (javaObjectBuilder_ == null) {
          data_ = builderForValue.build();
          onChanged();
        } else {
          javaObjectBuilder_.setMessage(builderForValue.build());
        }
        dataCase_ = 7;
        return this;
      }
      /**
       * .io.arthas.api.JavaObject javaObject = 7;
       */
      public Builder mergeJavaObject(io.arthas.api.ArthasServices.JavaObject value) {
        if (javaObjectBuilder_ == null) {
          if (dataCase_ == 7 &&
              data_ != io.arthas.api.ArthasServices.JavaObject.getDefaultInstance()) {
            data_ = io.arthas.api.ArthasServices.JavaObject.newBuilder((io.arthas.api.ArthasServices.JavaObject) data_)
                .mergeFrom(value).buildPartial();
          } else {
            data_ = value;
          }
          onChanged();
        } else {
          if (dataCase_ == 7) {
            javaObjectBuilder_.mergeFrom(value);
          }
          javaObjectBuilder_.setMessage(value);
        }
        dataCase_ = 7;
        return this;
      }
      /**
       * .io.arthas.api.JavaObject javaObject = 7;
       */
      public Builder clearJavaObject() {
        if (javaObjectBuilder_ == null) {
          if (dataCase_ == 7) {
            dataCase_ = 0;
            data_ = null;
            onChanged();
          }
        } else {
          if (dataCase_ == 7) {
            dataCase_ = 0;
            data_ = null;
          }
          javaObjectBuilder_.clear();
        }
        return this;
      }
      /**
       * .io.arthas.api.JavaObject javaObject = 7;
       */
      public io.arthas.api.ArthasServices.JavaObject.Builder getJavaObjectBuilder() {
        return getJavaObjectFieldBuilder().getBuilder();
      }
      /**
       * .io.arthas.api.JavaObject javaObject = 7;
       */
      public io.arthas.api.ArthasServices.JavaObjectOrBuilder getJavaObjectOrBuilder() {
        if ((dataCase_ == 7) && (javaObjectBuilder_ != null)) {
          return javaObjectBuilder_.getMessageOrBuilder();
        } else {
          if (dataCase_ == 7) {
            return (io.arthas.api.ArthasServices.JavaObject) data_;
          }
          return io.arthas.api.ArthasServices.JavaObject.getDefaultInstance();
        }
      }
      /**
       * .io.arthas.api.JavaObject javaObject = 7;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          io.arthas.api.ArthasServices.JavaObject, io.arthas.api.ArthasServices.JavaObject.Builder, io.arthas.api.ArthasServices.JavaObjectOrBuilder> 
          getJavaObjectFieldBuilder() {
        if (javaObjectBuilder_ == null) {
          if (!(dataCase_ == 7)) {
            data_ = io.arthas.api.ArthasServices.JavaObject.getDefaultInstance();
          }
          javaObjectBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              io.arthas.api.ArthasServices.JavaObject, io.arthas.api.ArthasServices.JavaObject.Builder, io.arthas.api.ArthasServices.JavaObjectOrBuilder>(
                  (io.arthas.api.ArthasServices.JavaObject) data_,
                  getParentForChildren(),
                  isClean());
          data_ = null;
        }
        dataCase_ = 7;
        onChanged();;
        return javaObjectBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:io.arthas.api.ResponseBody)
    }

    // @@protoc_insertion_point(class_scope:io.arthas.api.ResponseBody)
    private static final io.arthas.api.ArthasServices.ResponseBody DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new io.arthas.api.ArthasServices.ResponseBody();
    }

    public static io.arthas.api.ArthasServices.ResponseBody getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public ResponseBody parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new ResponseBody(input, extensionRegistry);
      }
    };

    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public io.arthas.api.ArthasServices.ResponseBody getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_io_arthas_api_ObjectRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_io_arthas_api_ObjectRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_io_arthas_api_BasicValue_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_io_arthas_api_BasicValue_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_io_arthas_api_ArrayElement_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_io_arthas_api_ArrayElement_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_io_arthas_api_ArrayValue_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_io_arthas_api_ArrayValue_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_io_arthas_api_NullValue_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_io_arthas_api_NullValue_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_io_arthas_api_UnexpandedObject_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_io_arthas_api_UnexpandedObject_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_io_arthas_api_CollectionValue_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_io_arthas_api_CollectionValue_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_io_arthas_api_MapEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_io_arthas_api_MapEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_io_arthas_api_MapValue_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_io_arthas_api_MapValue_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_io_arthas_api_JavaField_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_io_arthas_api_JavaField_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_io_arthas_api_JavaFields_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_io_arthas_api_JavaFields_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_io_arthas_api_JavaObject_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_io_arthas_api_JavaObject_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_io_arthas_api_ObjectQuery_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_io_arthas_api_ObjectQuery_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_io_arthas_api_ObjectQueryResult_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_io_arthas_api_ObjectQueryResult_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_io_arthas_api_StringKey_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_io_arthas_api_StringKey_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_io_arthas_api_StringValue_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_io_arthas_api_StringValue_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_io_arthas_api_StringStringMapValue_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_io_arthas_api_StringStringMapValue_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_io_arthas_api_StringStringMapValue_StringStringMapEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_io_arthas_api_StringStringMapValue_StringStringMapEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_io_arthas_api_WatchRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_io_arthas_api_WatchRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_io_arthas_api_WatchResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_io_arthas_api_WatchResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_io_arthas_api_ResponseBody_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_io_arthas_api_ResponseBody_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\024ArthasServices.proto\022\rio.arthas.api\032\033g" +
      "oogle/protobuf/empty.proto\"_\n\rObjectRequ" +
      "est\022\r\n\005jobId\030\001 \001(\005\022\020\n\010resultId\030\002 \001(\003\022\014\n\004" +
      "type\030\003 \001(\t\022\017\n\007express\030\004 \001(\t\022\016\n\006expand\030\005 " +
      "\001(\005\"|\n\nBasicValue\022\r\n\003int\030\001 \001(\005H\000\022\016\n\004long" +
      "\030\002 \001(\003H\000\022\017\n\005float\030\003 \001(\002H\000\022\020\n\006double\030\004 \001(" +
      "\001H\000\022\021\n\007boolean\030\005 \001(\010H\000\022\020\n\006string\030\006 \001(\tH\000" +
      "B\007\n\005value\"\231\002\n\014ArrayElement\022/\n\nbasicValue" +
      "\030\001 \001(\0132\031.io.arthas.api.BasicValueH\000\0220\n\013o" +
      "bjectValue\030\002 \001(\0132\031.io.arthas.api.JavaObj" +
      "ectH\000\022/\n\narrayValue\030\003 \001(\0132\031.io.arthas.ap" +
      "i.ArrayValueH\000\022-\n\tnullValue\030\004 \001(\0132\030.io.a" +
      "rthas.api.NullValueH\000\022;\n\020unexpandedObjec" +
      "t\030\005 \001(\0132\037.io.arthas.api.UnexpandedObject" +
      "H\000B\t\n\007element\"N\n\nArrayValue\022\021\n\tclassName" +
      "\030\001 \001(\t\022-\n\010elements\030\002 \003(\0132\033.io.arthas.api" +
      ".ArrayElement\"\036\n\tNullValue\022\021\n\tclassName\030" +
      "\001 \001(\t\"%\n\020UnexpandedObject\022\021\n\tclassName\030\001" +
      " \001(\t\"Q\n\017CollectionValue\022\021\n\tclassName\030\001 \001" +
      "(\t\022+\n\010elements\030\002 \003(\0132\031.io.arthas.api.Jav" +
      "aObject\"\\\n\010MapEntry\022&\n\003key\030\001 \001(\0132\031.io.ar" +
      "thas.api.JavaObject\022(\n\005value\030\002 \001(\0132\031.io." +
      "arthas.api.JavaObject\"G\n\010MapValue\022\021\n\tcla" +
      "ssName\030\001 \001(\t\022(\n\007entries\030\002 \003(\0132\027.io.artha" +
      "s.api.MapEntry\"\200\003\n\tJavaField\022\014\n\004name\030\001 \001" +
      "(\t\0220\n\013objectValue\030\002 \001(\0132\031.io.arthas.api." +
      "JavaObjectH\000\022/\n\nbasicValue\030\003 \001(\0132\031.io.ar" +
      "thas.api.BasicValueH\000\022/\n\narrayValue\030\004 \001(" +
      "\0132\031.io.arthas.api.ArrayValueH\000\022-\n\tnullVa" +
      "lue\030\005 \001(\0132\030.io.arthas.api.NullValueH\000\0224\n" +
      "\ncollection\030\006 \001(\0132\036.io.arthas.api.Collec" +
      "tionValueH\000\022&\n\003map\030\007 \001(\0132\027.io.arthas.api" +
      ".MapValueH\000\022;\n\020unexpandedObject\030\010 \001(\0132\037." +
      "io.arthas.api.UnexpandedObjectH\000B\007\n\005valu" +
      "e\"6\n\nJavaFields\022(\n\006fields\030\001 \003(\0132\030.io.art" +
      "has.api.JavaField\"\263\003\n\nJavaObject\022\021\n\tclas" +
      "sName\030\001 \001(\t\0220\n\013objectValue\030\002 \001(\0132\031.io.ar" +
      "thas.api.JavaObjectH\000\022/\n\nbasicValue\030\003 \001(" +
      "\0132\031.io.arthas.api.BasicValueH\000\022/\n\narrayV" +
      "alue\030\004 \001(\0132\031.io.arthas.api.ArrayValueH\000\022" +
      "-\n\tnullValue\030\005 \001(\0132\030.io.arthas.api.NullV" +
      "alueH\000\0224\n\ncollection\030\006 \001(\0132\036.io.arthas.a" +
      "pi.CollectionValueH\000\022&\n\003map\030\007 \001(\0132\027.io.a" +
      "rthas.api.MapValueH\000\022;\n\020unexpandedObject" +
      "\030\010 \001(\0132\037.io.arthas.api.UnexpandedObjectH" +
      "\000\022+\n\006fields\030\t \001(\0132\031.io.arthas.api.JavaFi" +
      "eldsH\000B\007\n\005value\"\272\001\n\013ObjectQuery\022\021\n\tclass" +
      "Name\030\001 \001(\t\022\017\n\007express\030\002 \001(\t\022\027\n\017ClassLoad" +
      "erHash\030\003 \001(\t\022\030\n\020classLoaderClass\030\004 \001(\t\022\r" +
      "\n\005limit\030\005 \001(\005\022\r\n\005depth\030\006 \001(\005\022\r\n\005jobId\030\007 " +
      "\001(\005\022\020\n\010resultId\030\010 \001(\003\022\025\n\rresultExpress\030\t" +
      " \001(\t\"a\n\021ObjectQueryResult\022\017\n\007success\030\001 \001" +
      "(\010\022\017\n\007message\030\002 \001(\t\022*\n\007objects\030\003 \003(\0132\031.i" +
      "o.arthas.api.JavaObject\"\030\n\tStringKey\022\013\n\003" +
      "key\030\001 \001(\t\"\034\n\013StringValue\022\r\n\005value\030\001 \001(\t\"" +
      "\241\001\n\024StringStringMapValue\022Q\n\017stringString" +
      "Map\030\001 \003(\01328.io.arthas.api.StringStringMa" +
      "pValue.StringStringMapEntry\0326\n\024StringStr" +
      "ingMapEntry\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:" +
      "\0028\001\"\354\002\n\014WatchRequest\022\024\n\014classPattern\030\001 \001" +
      "(\t\022\025\n\rmethodPattern\030\002 \001(\t\022\017\n\007express\030\003 \001" +
      "(\t\022\030\n\020conditionExpress\030\004 \001(\t\022\020\n\010isBefore" +
      "\030\005 \001(\010\022\020\n\010isFinish\030\006 \001(\010\022\023\n\013isException\030" +
      "\007 \001(\010\022\021\n\tisSuccess\030\010 \001(\010\022\016\n\006expand\030\t \001(\005" +
      "\022\021\n\tsizeLimit\030\n \001(\005\022\017\n\007isRegEx\030\013 \001(\010\022\025\n\r" +
      "numberOfLimit\030\014 \001(\005\022\033\n\023excludeClassPatte" +
      "rn\030\r \001(\t\022\022\n\nlistenerId\030\016 \001(\003\022\017\n\007verbose\030" +
      "\017 \001(\010\022\034\n\024maxNumOfMatchedClass\030\020 \001(\005\022\r\n\005j" +
      "obId\030\021 \001(\003\"\242\001\n\rWatchResponse\022\n\n\002ts\030\001 \001(\t" +
      "\022\014\n\004cost\030\002 \001(\001\022(\n\005value\030\003 \001(\0132\031.io.artha" +
      "s.api.JavaObject\022\021\n\tsizeLimit\030\004 \001(\005\022\021\n\tc" +
      "lassName\030\005 \001(\t\022\022\n\nmethodName\030\006 \001(\t\022\023\n\013ac" +
      "cessPoint\030\007 \001(\t\"\211\002\n\014ResponseBody\022\r\n\005jobI" +
      "d\030\001 \001(\005\022\014\n\004type\030\002 \001(\t\022\020\n\010resultId\030\003 \001(\003\022" +
      "C\n\024stringStringMapValue\030\004 \001(\0132#.io.artha" +
      "s.api.StringStringMapValueH\000\022\025\n\013stringVa" +
      "lue\030\005 \001(\tH\000\0225\n\rwatchResponse\030\006 \001(\0132\034.io." +
      "arthas.api.WatchResponseH\000\022/\n\njavaObject" +
      "\030\007 \001(\0132\031.io.arthas.api.JavaObjectH\000B\006\n\004d" +
      "ata2V\n\rObjectService\022E\n\005query\022\032.io.artha" +
      "s.api.ObjectQuery\032 .io.arthas.api.Object" +
      "QueryResult2\333\001\n\016SystemProperty\022:\n\003get\022\026." +
      "google.protobuf.Empty\032\033.io.arthas.api.Re" +
      "sponseBody\022A\n\010getByKey\022\030.io.arthas.api.S" +
      "tringKey\032\033.io.arthas.api.ResponseBody\022J\n" +
      "\006update\022#.io.arthas.api.StringStringMapV" +
      "alue\032\033.io.arthas.api.ResponseBody2A\n\003Pwd" +
      "\022:\n\003pwd\022\026.google.protobuf.Empty\032\033.io.art" +
      "has.api.ResponseBody2L\n\005Watch\022C\n\005watch\022\033" +
      ".io.arthas.api.WatchRequest\032\033.io.arthas." +
      "api.ResponseBody0\001b\006proto3"
    };
    descriptor = com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
          com.google.protobuf.EmptyProto.getDescriptor(),
        });
    internal_static_io_arthas_api_ObjectRequest_descriptor =
      getDescriptor().getMessageTypes().get(0);
    internal_static_io_arthas_api_ObjectRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_io_arthas_api_ObjectRequest_descriptor,
        new java.lang.String[] { "JobId", "ResultId", "Type", "Express", "Expand", });
    internal_static_io_arthas_api_BasicValue_descriptor =
      getDescriptor().getMessageTypes().get(1);
    internal_static_io_arthas_api_BasicValue_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_io_arthas_api_BasicValue_descriptor,
        new java.lang.String[] { "Int", "Long", "Float", "Double", "Boolean", "String", "Value", });
    internal_static_io_arthas_api_ArrayElement_descriptor =
      getDescriptor().getMessageTypes().get(2);
    internal_static_io_arthas_api_ArrayElement_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_io_arthas_api_ArrayElement_descriptor,
        new java.lang.String[] { "BasicValue", "ObjectValue", "ArrayValue", "NullValue", "UnexpandedObject", "Element", });
    internal_static_io_arthas_api_ArrayValue_descriptor =
      getDescriptor().getMessageTypes().get(3);
    internal_static_io_arthas_api_ArrayValue_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_io_arthas_api_ArrayValue_descriptor,
        new java.lang.String[] { "ClassName", "Elements", });
    internal_static_io_arthas_api_NullValue_descriptor =
      getDescriptor().getMessageTypes().get(4);
    internal_static_io_arthas_api_NullValue_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_io_arthas_api_NullValue_descriptor,
        new java.lang.String[] { "ClassName", });
    internal_static_io_arthas_api_UnexpandedObject_descriptor =
      getDescriptor().getMessageTypes().get(5);
    internal_static_io_arthas_api_UnexpandedObject_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_io_arthas_api_UnexpandedObject_descriptor,
        new java.lang.String[] { "ClassName", });
    internal_static_io_arthas_api_CollectionValue_descriptor =
      getDescriptor().getMessageTypes().get(6);
    internal_static_io_arthas_api_CollectionValue_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_io_arthas_api_CollectionValue_descriptor,
        new java.lang.String[] { "ClassName", "Elements", });
    internal_static_io_arthas_api_MapEntry_descriptor =
      getDescriptor().getMessageTypes().get(7);
    internal_static_io_arthas_api_MapEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_io_arthas_api_MapEntry_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_io_arthas_api_MapValue_descriptor =
      getDescriptor().getMessageTypes().get(8);
    internal_static_io_arthas_api_MapValue_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_io_arthas_api_MapValue_descriptor,
        new java.lang.String[] { "ClassName", "Entries", });
    internal_static_io_arthas_api_JavaField_descriptor =
      getDescriptor().getMessageTypes().get(9);
    internal_static_io_arthas_api_JavaField_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_io_arthas_api_JavaField_descriptor,
        new java.lang.String[] { "Name", "ObjectValue", "BasicValue", "ArrayValue", "NullValue", "Collection", "Map", "UnexpandedObject", "Value", });
    internal_static_io_arthas_api_JavaFields_descriptor =
      getDescriptor().getMessageTypes().get(10);
    internal_static_io_arthas_api_JavaFields_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_io_arthas_api_JavaFields_descriptor,
        new java.lang.String[] { "Fields", });
    internal_static_io_arthas_api_JavaObject_descriptor =
      getDescriptor().getMessageTypes().get(11);
    internal_static_io_arthas_api_JavaObject_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_io_arthas_api_JavaObject_descriptor,
        new java.lang.String[] { "ClassName", "ObjectValue", "BasicValue", "ArrayValue", "NullValue", "Collection", "Map", "UnexpandedObject", "Fields", "Value", });
    internal_static_io_arthas_api_ObjectQuery_descriptor =
      getDescriptor().getMessageTypes().get(12);
    internal_static_io_arthas_api_ObjectQuery_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_io_arthas_api_ObjectQuery_descriptor,
        new java.lang.String[] { "ClassName", "Express", "ClassLoaderHash", "ClassLoaderClass", "Limit", "Depth", "JobId", "ResultId", "ResultExpress", });
    internal_static_io_arthas_api_ObjectQueryResult_descriptor =
      getDescriptor().getMessageTypes().get(13);
    internal_static_io_arthas_api_ObjectQueryResult_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_io_arthas_api_ObjectQueryResult_descriptor,
        new java.lang.String[] { "Success", "Message", "Objects", });
    internal_static_io_arthas_api_StringKey_descriptor =
      getDescriptor().getMessageTypes().get(14);
    internal_static_io_arthas_api_StringKey_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_io_arthas_api_StringKey_descriptor,
        new java.lang.String[] { "Key", });
    internal_static_io_arthas_api_StringValue_descriptor =
      getDescriptor().getMessageTypes().get(15);
    internal_static_io_arthas_api_StringValue_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_io_arthas_api_StringValue_descriptor,
        new java.lang.String[] { "Value", });
    internal_static_io_arthas_api_StringStringMapValue_descriptor =
      getDescriptor().getMessageTypes().get(16);
    internal_static_io_arthas_api_StringStringMapValue_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_io_arthas_api_StringStringMapValue_descriptor,
        new java.lang.String[] { "StringStringMap", });
    internal_static_io_arthas_api_StringStringMapValue_StringStringMapEntry_descriptor =
      internal_static_io_arthas_api_StringStringMapValue_descriptor.getNestedTypes().get(0);
    internal_static_io_arthas_api_StringStringMapValue_StringStringMapEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_io_arthas_api_StringStringMapValue_StringStringMapEntry_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_io_arthas_api_WatchRequest_descriptor =
      getDescriptor().getMessageTypes().get(17);
    internal_static_io_arthas_api_WatchRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_io_arthas_api_WatchRequest_descriptor,
        new java.lang.String[] { "ClassPattern", "MethodPattern", "Express", "ConditionExpress", "IsBefore", "IsFinish", "IsException", "IsSuccess", "Expand", "SizeLimit", "IsRegEx", "NumberOfLimit", "ExcludeClassPattern", "ListenerId", "Verbose", "MaxNumOfMatchedClass", "JobId", });
    internal_static_io_arthas_api_WatchResponse_descriptor =
      getDescriptor().getMessageTypes().get(18);
    internal_static_io_arthas_api_WatchResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_io_arthas_api_WatchResponse_descriptor,
        new java.lang.String[] { "Ts", "Cost", "Value", "SizeLimit", "ClassName", "MethodName", "AccessPoint", });
    internal_static_io_arthas_api_ResponseBody_descriptor =
      getDescriptor().getMessageTypes().get(19);
    internal_static_io_arthas_api_ResponseBody_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_io_arthas_api_ResponseBody_descriptor,
        new java.lang.String[] { "JobId", "Type", "ResultId", "StringStringMapValue", "StringValue", "WatchResponse", "JavaObject", "Data", });
    com.google.protobuf.EmptyProto.getDescriptor();
  }

  // @@protoc_insertion_point(outer_class_scope)
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy