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

clarifai2.internal.grpc.api.ModelVersionOuterClass Maven / Gradle / Ivy

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

package clarifai2.internal.grpc.api;

public final class ModelVersionOuterClass {
  private ModelVersionOuterClass() {}
  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 ModelVersionOrBuilder extends
      // @@protoc_insertion_point(interface_extends:clarifai.api.ModelVersion)
      com.google.protobuf.MessageOrBuilder {

    /**
     * string id = 1;
     */
    java.lang.String getId();
    /**
     * string id = 1;
     */
    com.google.protobuf.ByteString
        getIdBytes();

    /**
     * .google.protobuf.Timestamp created_at = 2;
     */
    boolean hasCreatedAt();
    /**
     * .google.protobuf.Timestamp created_at = 2;
     */
    com.google.protobuf.Timestamp getCreatedAt();
    /**
     * .google.protobuf.Timestamp created_at = 2;
     */
    com.google.protobuf.TimestampOrBuilder getCreatedAtOrBuilder();

    /**
     * .clarifai.api.status.Status status = 3;
     */
    boolean hasStatus();
    /**
     * .clarifai.api.status.Status status = 3;
     */
    clarifai2.internal.grpc.api.status.StatusOuterClass.Status getStatus();
    /**
     * .clarifai.api.status.Status status = 3;
     */
    clarifai2.internal.grpc.api.status.StatusOuterClass.StatusOrBuilder getStatusOrBuilder();

    /**
     * uint32 active_concept_count = 4;
     */
    int getActiveConceptCount();

    /**
     * .clarifai.api.EvalMetrics metrics = 5;
     */
    boolean hasMetrics();
    /**
     * .clarifai.api.EvalMetrics metrics = 5;
     */
    clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalMetrics getMetrics();
    /**
     * .clarifai.api.EvalMetrics metrics = 5;
     */
    clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalMetricsOrBuilder getMetricsOrBuilder();

    /**
     * uint32 total_input_count = 6;
     */
    int getTotalInputCount();
  }
  /**
   * Protobuf type {@code clarifai.api.ModelVersion}
   */
  public  static final class ModelVersion extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:clarifai.api.ModelVersion)
      ModelVersionOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ModelVersion.newBuilder() to construct.
    private ModelVersion(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private ModelVersion() {
      id_ = "";
      activeConceptCount_ = 0;
      totalInputCount_ = 0;
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private ModelVersion(
        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;
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

              id_ = s;
              break;
            }
            case 18: {
              com.google.protobuf.Timestamp.Builder subBuilder = null;
              if (createdAt_ != null) {
                subBuilder = createdAt_.toBuilder();
              }
              createdAt_ = input.readMessage(com.google.protobuf.Timestamp.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(createdAt_);
                createdAt_ = subBuilder.buildPartial();
              }

              break;
            }
            case 26: {
              clarifai2.internal.grpc.api.status.StatusOuterClass.Status.Builder subBuilder = null;
              if (status_ != null) {
                subBuilder = status_.toBuilder();
              }
              status_ = input.readMessage(clarifai2.internal.grpc.api.status.StatusOuterClass.Status.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(status_);
                status_ = subBuilder.buildPartial();
              }

              break;
            }
            case 32: {

              activeConceptCount_ = input.readUInt32();
              break;
            }
            case 42: {
              clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalMetrics.Builder subBuilder = null;
              if (metrics_ != null) {
                subBuilder = metrics_.toBuilder();
              }
              metrics_ = input.readMessage(clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalMetrics.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(metrics_);
                metrics_ = subBuilder.buildPartial();
              }

              break;
            }
            case 48: {

              totalInputCount_ = input.readUInt32();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_ModelVersion_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_ModelVersion_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersion.class, clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersion.Builder.class);
    }

    public static final int ID_FIELD_NUMBER = 1;
    private volatile java.lang.Object id_;
    /**
     * string id = 1;
     */
    public java.lang.String getId() {
      java.lang.Object ref = id_;
      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();
        id_ = s;
        return s;
      }
    }
    /**
     * string id = 1;
     */
    public com.google.protobuf.ByteString
        getIdBytes() {
      java.lang.Object ref = id_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        id_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int CREATED_AT_FIELD_NUMBER = 2;
    private com.google.protobuf.Timestamp createdAt_;
    /**
     * .google.protobuf.Timestamp created_at = 2;
     */
    public boolean hasCreatedAt() {
      return createdAt_ != null;
    }
    /**
     * .google.protobuf.Timestamp created_at = 2;
     */
    public com.google.protobuf.Timestamp getCreatedAt() {
      return createdAt_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : createdAt_;
    }
    /**
     * .google.protobuf.Timestamp created_at = 2;
     */
    public com.google.protobuf.TimestampOrBuilder getCreatedAtOrBuilder() {
      return getCreatedAt();
    }

    public static final int STATUS_FIELD_NUMBER = 3;
    private clarifai2.internal.grpc.api.status.StatusOuterClass.Status status_;
    /**
     * .clarifai.api.status.Status status = 3;
     */
    public boolean hasStatus() {
      return status_ != null;
    }
    /**
     * .clarifai.api.status.Status status = 3;
     */
    public clarifai2.internal.grpc.api.status.StatusOuterClass.Status getStatus() {
      return status_ == null ? clarifai2.internal.grpc.api.status.StatusOuterClass.Status.getDefaultInstance() : status_;
    }
    /**
     * .clarifai.api.status.Status status = 3;
     */
    public clarifai2.internal.grpc.api.status.StatusOuterClass.StatusOrBuilder getStatusOrBuilder() {
      return getStatus();
    }

    public static final int ACTIVE_CONCEPT_COUNT_FIELD_NUMBER = 4;
    private int activeConceptCount_;
    /**
     * uint32 active_concept_count = 4;
     */
    public int getActiveConceptCount() {
      return activeConceptCount_;
    }

    public static final int METRICS_FIELD_NUMBER = 5;
    private clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalMetrics metrics_;
    /**
     * .clarifai.api.EvalMetrics metrics = 5;
     */
    public boolean hasMetrics() {
      return metrics_ != null;
    }
    /**
     * .clarifai.api.EvalMetrics metrics = 5;
     */
    public clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalMetrics getMetrics() {
      return metrics_ == null ? clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalMetrics.getDefaultInstance() : metrics_;
    }
    /**
     * .clarifai.api.EvalMetrics metrics = 5;
     */
    public clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalMetricsOrBuilder getMetricsOrBuilder() {
      return getMetrics();
    }

    public static final int TOTAL_INPUT_COUNT_FIELD_NUMBER = 6;
    private int totalInputCount_;
    /**
     * uint32 total_input_count = 6;
     */
    public int getTotalInputCount() {
      return totalInputCount_;
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, id_);
      }
      if (createdAt_ != null) {
        output.writeMessage(2, getCreatedAt());
      }
      if (status_ != null) {
        output.writeMessage(3, getStatus());
      }
      if (activeConceptCount_ != 0) {
        output.writeUInt32(4, activeConceptCount_);
      }
      if (metrics_ != null) {
        output.writeMessage(5, getMetrics());
      }
      if (totalInputCount_ != 0) {
        output.writeUInt32(6, totalInputCount_);
      }
      unknownFields.writeTo(output);
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!getIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, id_);
      }
      if (createdAt_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getCreatedAt());
      }
      if (status_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getStatus());
      }
      if (activeConceptCount_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(4, activeConceptCount_);
      }
      if (metrics_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, getMetrics());
      }
      if (totalInputCount_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(6, totalInputCount_);
      }
      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 clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersion)) {
        return super.equals(obj);
      }
      clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersion other = (clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersion) obj;

      boolean result = true;
      result = result && getId()
          .equals(other.getId());
      result = result && (hasCreatedAt() == other.hasCreatedAt());
      if (hasCreatedAt()) {
        result = result && getCreatedAt()
            .equals(other.getCreatedAt());
      }
      result = result && (hasStatus() == other.hasStatus());
      if (hasStatus()) {
        result = result && getStatus()
            .equals(other.getStatus());
      }
      result = result && (getActiveConceptCount()
          == other.getActiveConceptCount());
      result = result && (hasMetrics() == other.hasMetrics());
      if (hasMetrics()) {
        result = result && getMetrics()
            .equals(other.getMetrics());
      }
      result = result && (getTotalInputCount()
          == other.getTotalInputCount());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + ID_FIELD_NUMBER;
      hash = (53 * hash) + getId().hashCode();
      if (hasCreatedAt()) {
        hash = (37 * hash) + CREATED_AT_FIELD_NUMBER;
        hash = (53 * hash) + getCreatedAt().hashCode();
      }
      if (hasStatus()) {
        hash = (37 * hash) + STATUS_FIELD_NUMBER;
        hash = (53 * hash) + getStatus().hashCode();
      }
      hash = (37 * hash) + ACTIVE_CONCEPT_COUNT_FIELD_NUMBER;
      hash = (53 * hash) + getActiveConceptCount();
      if (hasMetrics()) {
        hash = (37 * hash) + METRICS_FIELD_NUMBER;
        hash = (53 * hash) + getMetrics().hashCode();
      }
      hash = (37 * hash) + TOTAL_INPUT_COUNT_FIELD_NUMBER;
      hash = (53 * hash) + getTotalInputCount();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersion prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code clarifai.api.ModelVersion}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:clarifai.api.ModelVersion)
        clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersionOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_ModelVersion_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_ModelVersion_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersion.class, clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersion.Builder.class);
      }

      // Construct using clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersion.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        id_ = "";

        if (createdAtBuilder_ == null) {
          createdAt_ = null;
        } else {
          createdAt_ = null;
          createdAtBuilder_ = null;
        }
        if (statusBuilder_ == null) {
          status_ = null;
        } else {
          status_ = null;
          statusBuilder_ = null;
        }
        activeConceptCount_ = 0;

        if (metricsBuilder_ == null) {
          metrics_ = null;
        } else {
          metrics_ = null;
          metricsBuilder_ = null;
        }
        totalInputCount_ = 0;

        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_ModelVersion_descriptor;
      }

      public clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersion getDefaultInstanceForType() {
        return clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersion.getDefaultInstance();
      }

      public clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersion build() {
        clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersion result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersion buildPartial() {
        clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersion result = new clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersion(this);
        result.id_ = id_;
        if (createdAtBuilder_ == null) {
          result.createdAt_ = createdAt_;
        } else {
          result.createdAt_ = createdAtBuilder_.build();
        }
        if (statusBuilder_ == null) {
          result.status_ = status_;
        } else {
          result.status_ = statusBuilder_.build();
        }
        result.activeConceptCount_ = activeConceptCount_;
        if (metricsBuilder_ == null) {
          result.metrics_ = metrics_;
        } else {
          result.metrics_ = metricsBuilder_.build();
        }
        result.totalInputCount_ = totalInputCount_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersion) {
          return mergeFrom((clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersion)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersion other) {
        if (other == clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersion.getDefaultInstance()) return this;
        if (!other.getId().isEmpty()) {
          id_ = other.id_;
          onChanged();
        }
        if (other.hasCreatedAt()) {
          mergeCreatedAt(other.getCreatedAt());
        }
        if (other.hasStatus()) {
          mergeStatus(other.getStatus());
        }
        if (other.getActiveConceptCount() != 0) {
          setActiveConceptCount(other.getActiveConceptCount());
        }
        if (other.hasMetrics()) {
          mergeMetrics(other.getMetrics());
        }
        if (other.getTotalInputCount() != 0) {
          setTotalInputCount(other.getTotalInputCount());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersion parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersion) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object id_ = "";
      /**
       * string id = 1;
       */
      public java.lang.String getId() {
        java.lang.Object ref = id_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          id_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string id = 1;
       */
      public com.google.protobuf.ByteString
          getIdBytes() {
        java.lang.Object ref = id_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          id_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string id = 1;
       */
      public Builder setId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        id_ = value;
        onChanged();
        return this;
      }
      /**
       * string id = 1;
       */
      public Builder clearId() {
        
        id_ = getDefaultInstance().getId();
        onChanged();
        return this;
      }
      /**
       * string id = 1;
       */
      public Builder setIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        id_ = value;
        onChanged();
        return this;
      }

      private com.google.protobuf.Timestamp createdAt_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder> createdAtBuilder_;
      /**
       * .google.protobuf.Timestamp created_at = 2;
       */
      public boolean hasCreatedAt() {
        return createdAtBuilder_ != null || createdAt_ != null;
      }
      /**
       * .google.protobuf.Timestamp created_at = 2;
       */
      public com.google.protobuf.Timestamp getCreatedAt() {
        if (createdAtBuilder_ == null) {
          return createdAt_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : createdAt_;
        } else {
          return createdAtBuilder_.getMessage();
        }
      }
      /**
       * .google.protobuf.Timestamp created_at = 2;
       */
      public Builder setCreatedAt(com.google.protobuf.Timestamp value) {
        if (createdAtBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          createdAt_ = value;
          onChanged();
        } else {
          createdAtBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * .google.protobuf.Timestamp created_at = 2;
       */
      public Builder setCreatedAt(
          com.google.protobuf.Timestamp.Builder builderForValue) {
        if (createdAtBuilder_ == null) {
          createdAt_ = builderForValue.build();
          onChanged();
        } else {
          createdAtBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * .google.protobuf.Timestamp created_at = 2;
       */
      public Builder mergeCreatedAt(com.google.protobuf.Timestamp value) {
        if (createdAtBuilder_ == null) {
          if (createdAt_ != null) {
            createdAt_ =
              com.google.protobuf.Timestamp.newBuilder(createdAt_).mergeFrom(value).buildPartial();
          } else {
            createdAt_ = value;
          }
          onChanged();
        } else {
          createdAtBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * .google.protobuf.Timestamp created_at = 2;
       */
      public Builder clearCreatedAt() {
        if (createdAtBuilder_ == null) {
          createdAt_ = null;
          onChanged();
        } else {
          createdAt_ = null;
          createdAtBuilder_ = null;
        }

        return this;
      }
      /**
       * .google.protobuf.Timestamp created_at = 2;
       */
      public com.google.protobuf.Timestamp.Builder getCreatedAtBuilder() {
        
        onChanged();
        return getCreatedAtFieldBuilder().getBuilder();
      }
      /**
       * .google.protobuf.Timestamp created_at = 2;
       */
      public com.google.protobuf.TimestampOrBuilder getCreatedAtOrBuilder() {
        if (createdAtBuilder_ != null) {
          return createdAtBuilder_.getMessageOrBuilder();
        } else {
          return createdAt_ == null ?
              com.google.protobuf.Timestamp.getDefaultInstance() : createdAt_;
        }
      }
      /**
       * .google.protobuf.Timestamp created_at = 2;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder> 
          getCreatedAtFieldBuilder() {
        if (createdAtBuilder_ == null) {
          createdAtBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder>(
                  getCreatedAt(),
                  getParentForChildren(),
                  isClean());
          createdAt_ = null;
        }
        return createdAtBuilder_;
      }

      private clarifai2.internal.grpc.api.status.StatusOuterClass.Status status_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          clarifai2.internal.grpc.api.status.StatusOuterClass.Status, clarifai2.internal.grpc.api.status.StatusOuterClass.Status.Builder, clarifai2.internal.grpc.api.status.StatusOuterClass.StatusOrBuilder> statusBuilder_;
      /**
       * .clarifai.api.status.Status status = 3;
       */
      public boolean hasStatus() {
        return statusBuilder_ != null || status_ != null;
      }
      /**
       * .clarifai.api.status.Status status = 3;
       */
      public clarifai2.internal.grpc.api.status.StatusOuterClass.Status getStatus() {
        if (statusBuilder_ == null) {
          return status_ == null ? clarifai2.internal.grpc.api.status.StatusOuterClass.Status.getDefaultInstance() : status_;
        } else {
          return statusBuilder_.getMessage();
        }
      }
      /**
       * .clarifai.api.status.Status status = 3;
       */
      public Builder setStatus(clarifai2.internal.grpc.api.status.StatusOuterClass.Status value) {
        if (statusBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          status_ = value;
          onChanged();
        } else {
          statusBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * .clarifai.api.status.Status status = 3;
       */
      public Builder setStatus(
          clarifai2.internal.grpc.api.status.StatusOuterClass.Status.Builder builderForValue) {
        if (statusBuilder_ == null) {
          status_ = builderForValue.build();
          onChanged();
        } else {
          statusBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * .clarifai.api.status.Status status = 3;
       */
      public Builder mergeStatus(clarifai2.internal.grpc.api.status.StatusOuterClass.Status value) {
        if (statusBuilder_ == null) {
          if (status_ != null) {
            status_ =
              clarifai2.internal.grpc.api.status.StatusOuterClass.Status.newBuilder(status_).mergeFrom(value).buildPartial();
          } else {
            status_ = value;
          }
          onChanged();
        } else {
          statusBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * .clarifai.api.status.Status status = 3;
       */
      public Builder clearStatus() {
        if (statusBuilder_ == null) {
          status_ = null;
          onChanged();
        } else {
          status_ = null;
          statusBuilder_ = null;
        }

        return this;
      }
      /**
       * .clarifai.api.status.Status status = 3;
       */
      public clarifai2.internal.grpc.api.status.StatusOuterClass.Status.Builder getStatusBuilder() {
        
        onChanged();
        return getStatusFieldBuilder().getBuilder();
      }
      /**
       * .clarifai.api.status.Status status = 3;
       */
      public clarifai2.internal.grpc.api.status.StatusOuterClass.StatusOrBuilder getStatusOrBuilder() {
        if (statusBuilder_ != null) {
          return statusBuilder_.getMessageOrBuilder();
        } else {
          return status_ == null ?
              clarifai2.internal.grpc.api.status.StatusOuterClass.Status.getDefaultInstance() : status_;
        }
      }
      /**
       * .clarifai.api.status.Status status = 3;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          clarifai2.internal.grpc.api.status.StatusOuterClass.Status, clarifai2.internal.grpc.api.status.StatusOuterClass.Status.Builder, clarifai2.internal.grpc.api.status.StatusOuterClass.StatusOrBuilder> 
          getStatusFieldBuilder() {
        if (statusBuilder_ == null) {
          statusBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              clarifai2.internal.grpc.api.status.StatusOuterClass.Status, clarifai2.internal.grpc.api.status.StatusOuterClass.Status.Builder, clarifai2.internal.grpc.api.status.StatusOuterClass.StatusOrBuilder>(
                  getStatus(),
                  getParentForChildren(),
                  isClean());
          status_ = null;
        }
        return statusBuilder_;
      }

      private int activeConceptCount_ ;
      /**
       * uint32 active_concept_count = 4;
       */
      public int getActiveConceptCount() {
        return activeConceptCount_;
      }
      /**
       * uint32 active_concept_count = 4;
       */
      public Builder setActiveConceptCount(int value) {
        
        activeConceptCount_ = value;
        onChanged();
        return this;
      }
      /**
       * uint32 active_concept_count = 4;
       */
      public Builder clearActiveConceptCount() {
        
        activeConceptCount_ = 0;
        onChanged();
        return this;
      }

      private clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalMetrics metrics_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalMetrics, clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalMetrics.Builder, clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalMetricsOrBuilder> metricsBuilder_;
      /**
       * .clarifai.api.EvalMetrics metrics = 5;
       */
      public boolean hasMetrics() {
        return metricsBuilder_ != null || metrics_ != null;
      }
      /**
       * .clarifai.api.EvalMetrics metrics = 5;
       */
      public clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalMetrics getMetrics() {
        if (metricsBuilder_ == null) {
          return metrics_ == null ? clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalMetrics.getDefaultInstance() : metrics_;
        } else {
          return metricsBuilder_.getMessage();
        }
      }
      /**
       * .clarifai.api.EvalMetrics metrics = 5;
       */
      public Builder setMetrics(clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalMetrics value) {
        if (metricsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          metrics_ = value;
          onChanged();
        } else {
          metricsBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * .clarifai.api.EvalMetrics metrics = 5;
       */
      public Builder setMetrics(
          clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalMetrics.Builder builderForValue) {
        if (metricsBuilder_ == null) {
          metrics_ = builderForValue.build();
          onChanged();
        } else {
          metricsBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * .clarifai.api.EvalMetrics metrics = 5;
       */
      public Builder mergeMetrics(clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalMetrics value) {
        if (metricsBuilder_ == null) {
          if (metrics_ != null) {
            metrics_ =
              clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalMetrics.newBuilder(metrics_).mergeFrom(value).buildPartial();
          } else {
            metrics_ = value;
          }
          onChanged();
        } else {
          metricsBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * .clarifai.api.EvalMetrics metrics = 5;
       */
      public Builder clearMetrics() {
        if (metricsBuilder_ == null) {
          metrics_ = null;
          onChanged();
        } else {
          metrics_ = null;
          metricsBuilder_ = null;
        }

        return this;
      }
      /**
       * .clarifai.api.EvalMetrics metrics = 5;
       */
      public clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalMetrics.Builder getMetricsBuilder() {
        
        onChanged();
        return getMetricsFieldBuilder().getBuilder();
      }
      /**
       * .clarifai.api.EvalMetrics metrics = 5;
       */
      public clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalMetricsOrBuilder getMetricsOrBuilder() {
        if (metricsBuilder_ != null) {
          return metricsBuilder_.getMessageOrBuilder();
        } else {
          return metrics_ == null ?
              clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalMetrics.getDefaultInstance() : metrics_;
        }
      }
      /**
       * .clarifai.api.EvalMetrics metrics = 5;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalMetrics, clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalMetrics.Builder, clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalMetricsOrBuilder> 
          getMetricsFieldBuilder() {
        if (metricsBuilder_ == null) {
          metricsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalMetrics, clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalMetrics.Builder, clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalMetricsOrBuilder>(
                  getMetrics(),
                  getParentForChildren(),
                  isClean());
          metrics_ = null;
        }
        return metricsBuilder_;
      }

      private int totalInputCount_ ;
      /**
       * uint32 total_input_count = 6;
       */
      public int getTotalInputCount() {
        return totalInputCount_;
      }
      /**
       * uint32 total_input_count = 6;
       */
      public Builder setTotalInputCount(int value) {
        
        totalInputCount_ = value;
        onChanged();
        return this;
      }
      /**
       * uint32 total_input_count = 6;
       */
      public Builder clearTotalInputCount() {
        
        totalInputCount_ = 0;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:clarifai.api.ModelVersion)
    }

    // @@protoc_insertion_point(class_scope:clarifai.api.ModelVersion)
    private static final clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersion DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersion();
    }

    public static clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersion getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersion getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PretrainedModelConfigOrBuilder extends
      // @@protoc_insertion_point(interface_extends:clarifai.api.PretrainedModelConfig)
      com.google.protobuf.MessageOrBuilder {

    /**
     * string id = 1;
     */
    java.lang.String getId();
    /**
     * string id = 1;
     */
    com.google.protobuf.ByteString
        getIdBytes();

    /**
     * string type = 2;
     */
    java.lang.String getType();
    /**
     * string type = 2;
     */
    com.google.protobuf.ByteString
        getTypeBytes();
  }
  /**
   * Protobuf type {@code clarifai.api.PretrainedModelConfig}
   */
  public  static final class PretrainedModelConfig extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:clarifai.api.PretrainedModelConfig)
      PretrainedModelConfigOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PretrainedModelConfig.newBuilder() to construct.
    private PretrainedModelConfig(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private PretrainedModelConfig() {
      id_ = "";
      type_ = "";
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private PretrainedModelConfig(
        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;
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

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

              type_ = s;
              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 clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_PretrainedModelConfig_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_PretrainedModelConfig_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              clarifai2.internal.grpc.api.ModelVersionOuterClass.PretrainedModelConfig.class, clarifai2.internal.grpc.api.ModelVersionOuterClass.PretrainedModelConfig.Builder.class);
    }

    public static final int ID_FIELD_NUMBER = 1;
    private volatile java.lang.Object id_;
    /**
     * string id = 1;
     */
    public java.lang.String getId() {
      java.lang.Object ref = id_;
      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();
        id_ = s;
        return s;
      }
    }
    /**
     * string id = 1;
     */
    public com.google.protobuf.ByteString
        getIdBytes() {
      java.lang.Object ref = id_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        id_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TYPE_FIELD_NUMBER = 2;
    private volatile java.lang.Object type_;
    /**
     * string type = 2;
     */
    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;
     */
    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;
      }
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, id_);
      }
      if (!getTypeBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, type_);
      }
      unknownFields.writeTo(output);
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!getIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, id_);
      }
      if (!getTypeBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, type_);
      }
      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 clarifai2.internal.grpc.api.ModelVersionOuterClass.PretrainedModelConfig)) {
        return super.equals(obj);
      }
      clarifai2.internal.grpc.api.ModelVersionOuterClass.PretrainedModelConfig other = (clarifai2.internal.grpc.api.ModelVersionOuterClass.PretrainedModelConfig) obj;

      boolean result = true;
      result = result && getId()
          .equals(other.getId());
      result = result && getType()
          .equals(other.getType());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

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

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

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(clarifai2.internal.grpc.api.ModelVersionOuterClass.PretrainedModelConfig prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code clarifai.api.PretrainedModelConfig}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:clarifai.api.PretrainedModelConfig)
        clarifai2.internal.grpc.api.ModelVersionOuterClass.PretrainedModelConfigOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_PretrainedModelConfig_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_PretrainedModelConfig_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                clarifai2.internal.grpc.api.ModelVersionOuterClass.PretrainedModelConfig.class, clarifai2.internal.grpc.api.ModelVersionOuterClass.PretrainedModelConfig.Builder.class);
      }

      // Construct using clarifai2.internal.grpc.api.ModelVersionOuterClass.PretrainedModelConfig.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        id_ = "";

        type_ = "";

        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_PretrainedModelConfig_descriptor;
      }

      public clarifai2.internal.grpc.api.ModelVersionOuterClass.PretrainedModelConfig getDefaultInstanceForType() {
        return clarifai2.internal.grpc.api.ModelVersionOuterClass.PretrainedModelConfig.getDefaultInstance();
      }

      public clarifai2.internal.grpc.api.ModelVersionOuterClass.PretrainedModelConfig build() {
        clarifai2.internal.grpc.api.ModelVersionOuterClass.PretrainedModelConfig result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public clarifai2.internal.grpc.api.ModelVersionOuterClass.PretrainedModelConfig buildPartial() {
        clarifai2.internal.grpc.api.ModelVersionOuterClass.PretrainedModelConfig result = new clarifai2.internal.grpc.api.ModelVersionOuterClass.PretrainedModelConfig(this);
        result.id_ = id_;
        result.type_ = type_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof clarifai2.internal.grpc.api.ModelVersionOuterClass.PretrainedModelConfig) {
          return mergeFrom((clarifai2.internal.grpc.api.ModelVersionOuterClass.PretrainedModelConfig)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(clarifai2.internal.grpc.api.ModelVersionOuterClass.PretrainedModelConfig other) {
        if (other == clarifai2.internal.grpc.api.ModelVersionOuterClass.PretrainedModelConfig.getDefaultInstance()) return this;
        if (!other.getId().isEmpty()) {
          id_ = other.id_;
          onChanged();
        }
        if (!other.getType().isEmpty()) {
          type_ = other.type_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        clarifai2.internal.grpc.api.ModelVersionOuterClass.PretrainedModelConfig parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (clarifai2.internal.grpc.api.ModelVersionOuterClass.PretrainedModelConfig) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object id_ = "";
      /**
       * string id = 1;
       */
      public java.lang.String getId() {
        java.lang.Object ref = id_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          id_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string id = 1;
       */
      public com.google.protobuf.ByteString
          getIdBytes() {
        java.lang.Object ref = id_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          id_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string id = 1;
       */
      public Builder setId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        id_ = value;
        onChanged();
        return this;
      }
      /**
       * string id = 1;
       */
      public Builder clearId() {
        
        id_ = getDefaultInstance().getId();
        onChanged();
        return this;
      }
      /**
       * string id = 1;
       */
      public Builder setIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        id_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object type_ = "";
      /**
       * string type = 2;
       */
      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;
       */
      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;
       */
      public Builder setType(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        type_ = value;
        onChanged();
        return this;
      }
      /**
       * string type = 2;
       */
      public Builder clearType() {
        
        type_ = getDefaultInstance().getType();
        onChanged();
        return this;
      }
      /**
       * string type = 2;
       */
      public Builder setTypeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        type_ = value;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:clarifai.api.PretrainedModelConfig)
    }

    // @@protoc_insertion_point(class_scope:clarifai.api.PretrainedModelConfig)
    private static final clarifai2.internal.grpc.api.ModelVersionOuterClass.PretrainedModelConfig DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new clarifai2.internal.grpc.api.ModelVersionOuterClass.PretrainedModelConfig();
    }

    public static clarifai2.internal.grpc.api.ModelVersionOuterClass.PretrainedModelConfig getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public clarifai2.internal.grpc.api.ModelVersionOuterClass.PretrainedModelConfig getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface GetModelVersionRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:clarifai.api.GetModelVersionRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * .clarifai.api.UserAppIDSet user_app_id = 1;
     */
    boolean hasUserAppId();
    /**
     * .clarifai.api.UserAppIDSet user_app_id = 1;
     */
    clarifai2.internal.grpc.api.Common.UserAppIDSet getUserAppId();
    /**
     * .clarifai.api.UserAppIDSet user_app_id = 1;
     */
    clarifai2.internal.grpc.api.Common.UserAppIDSetOrBuilder getUserAppIdOrBuilder();

    /**
     * string model_id = 2;
     */
    java.lang.String getModelId();
    /**
     * string model_id = 2;
     */
    com.google.protobuf.ByteString
        getModelIdBytes();

    /**
     * string version_id = 3;
     */
    java.lang.String getVersionId();
    /**
     * string version_id = 3;
     */
    com.google.protobuf.ByteString
        getVersionIdBytes();
  }
  /**
   * Protobuf type {@code clarifai.api.GetModelVersionRequest}
   */
  public  static final class GetModelVersionRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:clarifai.api.GetModelVersionRequest)
      GetModelVersionRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use GetModelVersionRequest.newBuilder() to construct.
    private GetModelVersionRequest(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private GetModelVersionRequest() {
      modelId_ = "";
      versionId_ = "";
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private GetModelVersionRequest(
        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;
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              clarifai2.internal.grpc.api.Common.UserAppIDSet.Builder subBuilder = null;
              if (userAppId_ != null) {
                subBuilder = userAppId_.toBuilder();
              }
              userAppId_ = input.readMessage(clarifai2.internal.grpc.api.Common.UserAppIDSet.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(userAppId_);
                userAppId_ = subBuilder.buildPartial();
              }

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

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

              versionId_ = s;
              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 clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_GetModelVersionRequest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_GetModelVersionRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionRequest.class, clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionRequest.Builder.class);
    }

    public static final int USER_APP_ID_FIELD_NUMBER = 1;
    private clarifai2.internal.grpc.api.Common.UserAppIDSet userAppId_;
    /**
     * .clarifai.api.UserAppIDSet user_app_id = 1;
     */
    public boolean hasUserAppId() {
      return userAppId_ != null;
    }
    /**
     * .clarifai.api.UserAppIDSet user_app_id = 1;
     */
    public clarifai2.internal.grpc.api.Common.UserAppIDSet getUserAppId() {
      return userAppId_ == null ? clarifai2.internal.grpc.api.Common.UserAppIDSet.getDefaultInstance() : userAppId_;
    }
    /**
     * .clarifai.api.UserAppIDSet user_app_id = 1;
     */
    public clarifai2.internal.grpc.api.Common.UserAppIDSetOrBuilder getUserAppIdOrBuilder() {
      return getUserAppId();
    }

    public static final int MODEL_ID_FIELD_NUMBER = 2;
    private volatile java.lang.Object modelId_;
    /**
     * string model_id = 2;
     */
    public java.lang.String getModelId() {
      java.lang.Object ref = modelId_;
      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();
        modelId_ = s;
        return s;
      }
    }
    /**
     * string model_id = 2;
     */
    public com.google.protobuf.ByteString
        getModelIdBytes() {
      java.lang.Object ref = modelId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        modelId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int VERSION_ID_FIELD_NUMBER = 3;
    private volatile java.lang.Object versionId_;
    /**
     * string version_id = 3;
     */
    public java.lang.String getVersionId() {
      java.lang.Object ref = versionId_;
      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();
        versionId_ = s;
        return s;
      }
    }
    /**
     * string version_id = 3;
     */
    public com.google.protobuf.ByteString
        getVersionIdBytes() {
      java.lang.Object ref = versionId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        versionId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (userAppId_ != null) {
        output.writeMessage(1, getUserAppId());
      }
      if (!getModelIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, modelId_);
      }
      if (!getVersionIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, versionId_);
      }
      unknownFields.writeTo(output);
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (userAppId_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getUserAppId());
      }
      if (!getModelIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, modelId_);
      }
      if (!getVersionIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, versionId_);
      }
      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 clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionRequest)) {
        return super.equals(obj);
      }
      clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionRequest other = (clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionRequest) obj;

      boolean result = true;
      result = result && (hasUserAppId() == other.hasUserAppId());
      if (hasUserAppId()) {
        result = result && getUserAppId()
            .equals(other.getUserAppId());
      }
      result = result && getModelId()
          .equals(other.getModelId());
      result = result && getVersionId()
          .equals(other.getVersionId());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasUserAppId()) {
        hash = (37 * hash) + USER_APP_ID_FIELD_NUMBER;
        hash = (53 * hash) + getUserAppId().hashCode();
      }
      hash = (37 * hash) + MODEL_ID_FIELD_NUMBER;
      hash = (53 * hash) + getModelId().hashCode();
      hash = (37 * hash) + VERSION_ID_FIELD_NUMBER;
      hash = (53 * hash) + getVersionId().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code clarifai.api.GetModelVersionRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:clarifai.api.GetModelVersionRequest)
        clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_GetModelVersionRequest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_GetModelVersionRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionRequest.class, clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionRequest.Builder.class);
      }

      // Construct using clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        if (userAppIdBuilder_ == null) {
          userAppId_ = null;
        } else {
          userAppId_ = null;
          userAppIdBuilder_ = null;
        }
        modelId_ = "";

        versionId_ = "";

        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_GetModelVersionRequest_descriptor;
      }

      public clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionRequest getDefaultInstanceForType() {
        return clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionRequest.getDefaultInstance();
      }

      public clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionRequest build() {
        clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionRequest buildPartial() {
        clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionRequest result = new clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionRequest(this);
        if (userAppIdBuilder_ == null) {
          result.userAppId_ = userAppId_;
        } else {
          result.userAppId_ = userAppIdBuilder_.build();
        }
        result.modelId_ = modelId_;
        result.versionId_ = versionId_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionRequest) {
          return mergeFrom((clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionRequest other) {
        if (other == clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionRequest.getDefaultInstance()) return this;
        if (other.hasUserAppId()) {
          mergeUserAppId(other.getUserAppId());
        }
        if (!other.getModelId().isEmpty()) {
          modelId_ = other.modelId_;
          onChanged();
        }
        if (!other.getVersionId().isEmpty()) {
          versionId_ = other.versionId_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private clarifai2.internal.grpc.api.Common.UserAppIDSet userAppId_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          clarifai2.internal.grpc.api.Common.UserAppIDSet, clarifai2.internal.grpc.api.Common.UserAppIDSet.Builder, clarifai2.internal.grpc.api.Common.UserAppIDSetOrBuilder> userAppIdBuilder_;
      /**
       * .clarifai.api.UserAppIDSet user_app_id = 1;
       */
      public boolean hasUserAppId() {
        return userAppIdBuilder_ != null || userAppId_ != null;
      }
      /**
       * .clarifai.api.UserAppIDSet user_app_id = 1;
       */
      public clarifai2.internal.grpc.api.Common.UserAppIDSet getUserAppId() {
        if (userAppIdBuilder_ == null) {
          return userAppId_ == null ? clarifai2.internal.grpc.api.Common.UserAppIDSet.getDefaultInstance() : userAppId_;
        } else {
          return userAppIdBuilder_.getMessage();
        }
      }
      /**
       * .clarifai.api.UserAppIDSet user_app_id = 1;
       */
      public Builder setUserAppId(clarifai2.internal.grpc.api.Common.UserAppIDSet value) {
        if (userAppIdBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          userAppId_ = value;
          onChanged();
        } else {
          userAppIdBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * .clarifai.api.UserAppIDSet user_app_id = 1;
       */
      public Builder setUserAppId(
          clarifai2.internal.grpc.api.Common.UserAppIDSet.Builder builderForValue) {
        if (userAppIdBuilder_ == null) {
          userAppId_ = builderForValue.build();
          onChanged();
        } else {
          userAppIdBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * .clarifai.api.UserAppIDSet user_app_id = 1;
       */
      public Builder mergeUserAppId(clarifai2.internal.grpc.api.Common.UserAppIDSet value) {
        if (userAppIdBuilder_ == null) {
          if (userAppId_ != null) {
            userAppId_ =
              clarifai2.internal.grpc.api.Common.UserAppIDSet.newBuilder(userAppId_).mergeFrom(value).buildPartial();
          } else {
            userAppId_ = value;
          }
          onChanged();
        } else {
          userAppIdBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * .clarifai.api.UserAppIDSet user_app_id = 1;
       */
      public Builder clearUserAppId() {
        if (userAppIdBuilder_ == null) {
          userAppId_ = null;
          onChanged();
        } else {
          userAppId_ = null;
          userAppIdBuilder_ = null;
        }

        return this;
      }
      /**
       * .clarifai.api.UserAppIDSet user_app_id = 1;
       */
      public clarifai2.internal.grpc.api.Common.UserAppIDSet.Builder getUserAppIdBuilder() {
        
        onChanged();
        return getUserAppIdFieldBuilder().getBuilder();
      }
      /**
       * .clarifai.api.UserAppIDSet user_app_id = 1;
       */
      public clarifai2.internal.grpc.api.Common.UserAppIDSetOrBuilder getUserAppIdOrBuilder() {
        if (userAppIdBuilder_ != null) {
          return userAppIdBuilder_.getMessageOrBuilder();
        } else {
          return userAppId_ == null ?
              clarifai2.internal.grpc.api.Common.UserAppIDSet.getDefaultInstance() : userAppId_;
        }
      }
      /**
       * .clarifai.api.UserAppIDSet user_app_id = 1;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          clarifai2.internal.grpc.api.Common.UserAppIDSet, clarifai2.internal.grpc.api.Common.UserAppIDSet.Builder, clarifai2.internal.grpc.api.Common.UserAppIDSetOrBuilder> 
          getUserAppIdFieldBuilder() {
        if (userAppIdBuilder_ == null) {
          userAppIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              clarifai2.internal.grpc.api.Common.UserAppIDSet, clarifai2.internal.grpc.api.Common.UserAppIDSet.Builder, clarifai2.internal.grpc.api.Common.UserAppIDSetOrBuilder>(
                  getUserAppId(),
                  getParentForChildren(),
                  isClean());
          userAppId_ = null;
        }
        return userAppIdBuilder_;
      }

      private java.lang.Object modelId_ = "";
      /**
       * string model_id = 2;
       */
      public java.lang.String getModelId() {
        java.lang.Object ref = modelId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          modelId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string model_id = 2;
       */
      public com.google.protobuf.ByteString
          getModelIdBytes() {
        java.lang.Object ref = modelId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          modelId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string model_id = 2;
       */
      public Builder setModelId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        modelId_ = value;
        onChanged();
        return this;
      }
      /**
       * string model_id = 2;
       */
      public Builder clearModelId() {
        
        modelId_ = getDefaultInstance().getModelId();
        onChanged();
        return this;
      }
      /**
       * string model_id = 2;
       */
      public Builder setModelIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        modelId_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object versionId_ = "";
      /**
       * string version_id = 3;
       */
      public java.lang.String getVersionId() {
        java.lang.Object ref = versionId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          versionId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string version_id = 3;
       */
      public com.google.protobuf.ByteString
          getVersionIdBytes() {
        java.lang.Object ref = versionId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          versionId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string version_id = 3;
       */
      public Builder setVersionId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        versionId_ = value;
        onChanged();
        return this;
      }
      /**
       * string version_id = 3;
       */
      public Builder clearVersionId() {
        
        versionId_ = getDefaultInstance().getVersionId();
        onChanged();
        return this;
      }
      /**
       * string version_id = 3;
       */
      public Builder setVersionIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        versionId_ = value;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:clarifai.api.GetModelVersionRequest)
    }

    // @@protoc_insertion_point(class_scope:clarifai.api.GetModelVersionRequest)
    private static final clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionRequest();
    }

    public static clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ListModelVersionsRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:clarifai.api.ListModelVersionsRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * .clarifai.api.UserAppIDSet user_app_id = 1;
     */
    boolean hasUserAppId();
    /**
     * .clarifai.api.UserAppIDSet user_app_id = 1;
     */
    clarifai2.internal.grpc.api.Common.UserAppIDSet getUserAppId();
    /**
     * .clarifai.api.UserAppIDSet user_app_id = 1;
     */
    clarifai2.internal.grpc.api.Common.UserAppIDSetOrBuilder getUserAppIdOrBuilder();

    /**
     * string model_id = 2;
     */
    java.lang.String getModelId();
    /**
     * string model_id = 2;
     */
    com.google.protobuf.ByteString
        getModelIdBytes();

    /**
     * uint32 page = 3;
     */
    int getPage();

    /**
     * uint32 per_page = 4;
     */
    int getPerPage();

    /**
     * repeated string concept_ids = 5;
     */
    java.util.List
        getConceptIdsList();
    /**
     * repeated string concept_ids = 5;
     */
    int getConceptIdsCount();
    /**
     * repeated string concept_ids = 5;
     */
    java.lang.String getConceptIds(int index);
    /**
     * repeated string concept_ids = 5;
     */
    com.google.protobuf.ByteString
        getConceptIdsBytes(int index);
  }
  /**
   * Protobuf type {@code clarifai.api.ListModelVersionsRequest}
   */
  public  static final class ListModelVersionsRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:clarifai.api.ListModelVersionsRequest)
      ListModelVersionsRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ListModelVersionsRequest.newBuilder() to construct.
    private ListModelVersionsRequest(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private ListModelVersionsRequest() {
      modelId_ = "";
      page_ = 0;
      perPage_ = 0;
      conceptIds_ = com.google.protobuf.LazyStringArrayList.EMPTY;
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private ListModelVersionsRequest(
        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;
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              clarifai2.internal.grpc.api.Common.UserAppIDSet.Builder subBuilder = null;
              if (userAppId_ != null) {
                subBuilder = userAppId_.toBuilder();
              }
              userAppId_ = input.readMessage(clarifai2.internal.grpc.api.Common.UserAppIDSet.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(userAppId_);
                userAppId_ = subBuilder.buildPartial();
              }

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

              modelId_ = s;
              break;
            }
            case 24: {

              page_ = input.readUInt32();
              break;
            }
            case 32: {

              perPage_ = input.readUInt32();
              break;
            }
            case 42: {
              java.lang.String s = input.readStringRequireUtf8();
              if (!((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
                conceptIds_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000010;
              }
              conceptIds_.add(s);
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
          conceptIds_ = conceptIds_.getUnmodifiableView();
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_ListModelVersionsRequest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_ListModelVersionsRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              clarifai2.internal.grpc.api.ModelVersionOuterClass.ListModelVersionsRequest.class, clarifai2.internal.grpc.api.ModelVersionOuterClass.ListModelVersionsRequest.Builder.class);
    }

    private int bitField0_;
    public static final int USER_APP_ID_FIELD_NUMBER = 1;
    private clarifai2.internal.grpc.api.Common.UserAppIDSet userAppId_;
    /**
     * .clarifai.api.UserAppIDSet user_app_id = 1;
     */
    public boolean hasUserAppId() {
      return userAppId_ != null;
    }
    /**
     * .clarifai.api.UserAppIDSet user_app_id = 1;
     */
    public clarifai2.internal.grpc.api.Common.UserAppIDSet getUserAppId() {
      return userAppId_ == null ? clarifai2.internal.grpc.api.Common.UserAppIDSet.getDefaultInstance() : userAppId_;
    }
    /**
     * .clarifai.api.UserAppIDSet user_app_id = 1;
     */
    public clarifai2.internal.grpc.api.Common.UserAppIDSetOrBuilder getUserAppIdOrBuilder() {
      return getUserAppId();
    }

    public static final int MODEL_ID_FIELD_NUMBER = 2;
    private volatile java.lang.Object modelId_;
    /**
     * string model_id = 2;
     */
    public java.lang.String getModelId() {
      java.lang.Object ref = modelId_;
      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();
        modelId_ = s;
        return s;
      }
    }
    /**
     * string model_id = 2;
     */
    public com.google.protobuf.ByteString
        getModelIdBytes() {
      java.lang.Object ref = modelId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        modelId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int PAGE_FIELD_NUMBER = 3;
    private int page_;
    /**
     * uint32 page = 3;
     */
    public int getPage() {
      return page_;
    }

    public static final int PER_PAGE_FIELD_NUMBER = 4;
    private int perPage_;
    /**
     * uint32 per_page = 4;
     */
    public int getPerPage() {
      return perPage_;
    }

    public static final int CONCEPT_IDS_FIELD_NUMBER = 5;
    private com.google.protobuf.LazyStringList conceptIds_;
    /**
     * repeated string concept_ids = 5;
     */
    public com.google.protobuf.ProtocolStringList
        getConceptIdsList() {
      return conceptIds_;
    }
    /**
     * repeated string concept_ids = 5;
     */
    public int getConceptIdsCount() {
      return conceptIds_.size();
    }
    /**
     * repeated string concept_ids = 5;
     */
    public java.lang.String getConceptIds(int index) {
      return conceptIds_.get(index);
    }
    /**
     * repeated string concept_ids = 5;
     */
    public com.google.protobuf.ByteString
        getConceptIdsBytes(int index) {
      return conceptIds_.getByteString(index);
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (userAppId_ != null) {
        output.writeMessage(1, getUserAppId());
      }
      if (!getModelIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, modelId_);
      }
      if (page_ != 0) {
        output.writeUInt32(3, page_);
      }
      if (perPage_ != 0) {
        output.writeUInt32(4, perPage_);
      }
      for (int i = 0; i < conceptIds_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 5, conceptIds_.getRaw(i));
      }
      unknownFields.writeTo(output);
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (userAppId_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getUserAppId());
      }
      if (!getModelIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, modelId_);
      }
      if (page_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(3, page_);
      }
      if (perPage_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(4, perPage_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < conceptIds_.size(); i++) {
          dataSize += computeStringSizeNoTag(conceptIds_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getConceptIdsList().size();
      }
      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 clarifai2.internal.grpc.api.ModelVersionOuterClass.ListModelVersionsRequest)) {
        return super.equals(obj);
      }
      clarifai2.internal.grpc.api.ModelVersionOuterClass.ListModelVersionsRequest other = (clarifai2.internal.grpc.api.ModelVersionOuterClass.ListModelVersionsRequest) obj;

      boolean result = true;
      result = result && (hasUserAppId() == other.hasUserAppId());
      if (hasUserAppId()) {
        result = result && getUserAppId()
            .equals(other.getUserAppId());
      }
      result = result && getModelId()
          .equals(other.getModelId());
      result = result && (getPage()
          == other.getPage());
      result = result && (getPerPage()
          == other.getPerPage());
      result = result && getConceptIdsList()
          .equals(other.getConceptIdsList());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasUserAppId()) {
        hash = (37 * hash) + USER_APP_ID_FIELD_NUMBER;
        hash = (53 * hash) + getUserAppId().hashCode();
      }
      hash = (37 * hash) + MODEL_ID_FIELD_NUMBER;
      hash = (53 * hash) + getModelId().hashCode();
      hash = (37 * hash) + PAGE_FIELD_NUMBER;
      hash = (53 * hash) + getPage();
      hash = (37 * hash) + PER_PAGE_FIELD_NUMBER;
      hash = (53 * hash) + getPerPage();
      if (getConceptIdsCount() > 0) {
        hash = (37 * hash) + CONCEPT_IDS_FIELD_NUMBER;
        hash = (53 * hash) + getConceptIdsList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(clarifai2.internal.grpc.api.ModelVersionOuterClass.ListModelVersionsRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code clarifai.api.ListModelVersionsRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:clarifai.api.ListModelVersionsRequest)
        clarifai2.internal.grpc.api.ModelVersionOuterClass.ListModelVersionsRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_ListModelVersionsRequest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_ListModelVersionsRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                clarifai2.internal.grpc.api.ModelVersionOuterClass.ListModelVersionsRequest.class, clarifai2.internal.grpc.api.ModelVersionOuterClass.ListModelVersionsRequest.Builder.class);
      }

      // Construct using clarifai2.internal.grpc.api.ModelVersionOuterClass.ListModelVersionsRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        if (userAppIdBuilder_ == null) {
          userAppId_ = null;
        } else {
          userAppId_ = null;
          userAppIdBuilder_ = null;
        }
        modelId_ = "";

        page_ = 0;

        perPage_ = 0;

        conceptIds_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000010);
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_ListModelVersionsRequest_descriptor;
      }

      public clarifai2.internal.grpc.api.ModelVersionOuterClass.ListModelVersionsRequest getDefaultInstanceForType() {
        return clarifai2.internal.grpc.api.ModelVersionOuterClass.ListModelVersionsRequest.getDefaultInstance();
      }

      public clarifai2.internal.grpc.api.ModelVersionOuterClass.ListModelVersionsRequest build() {
        clarifai2.internal.grpc.api.ModelVersionOuterClass.ListModelVersionsRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public clarifai2.internal.grpc.api.ModelVersionOuterClass.ListModelVersionsRequest buildPartial() {
        clarifai2.internal.grpc.api.ModelVersionOuterClass.ListModelVersionsRequest result = new clarifai2.internal.grpc.api.ModelVersionOuterClass.ListModelVersionsRequest(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (userAppIdBuilder_ == null) {
          result.userAppId_ = userAppId_;
        } else {
          result.userAppId_ = userAppIdBuilder_.build();
        }
        result.modelId_ = modelId_;
        result.page_ = page_;
        result.perPage_ = perPage_;
        if (((bitField0_ & 0x00000010) == 0x00000010)) {
          conceptIds_ = conceptIds_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000010);
        }
        result.conceptIds_ = conceptIds_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof clarifai2.internal.grpc.api.ModelVersionOuterClass.ListModelVersionsRequest) {
          return mergeFrom((clarifai2.internal.grpc.api.ModelVersionOuterClass.ListModelVersionsRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(clarifai2.internal.grpc.api.ModelVersionOuterClass.ListModelVersionsRequest other) {
        if (other == clarifai2.internal.grpc.api.ModelVersionOuterClass.ListModelVersionsRequest.getDefaultInstance()) return this;
        if (other.hasUserAppId()) {
          mergeUserAppId(other.getUserAppId());
        }
        if (!other.getModelId().isEmpty()) {
          modelId_ = other.modelId_;
          onChanged();
        }
        if (other.getPage() != 0) {
          setPage(other.getPage());
        }
        if (other.getPerPage() != 0) {
          setPerPage(other.getPerPage());
        }
        if (!other.conceptIds_.isEmpty()) {
          if (conceptIds_.isEmpty()) {
            conceptIds_ = other.conceptIds_;
            bitField0_ = (bitField0_ & ~0x00000010);
          } else {
            ensureConceptIdsIsMutable();
            conceptIds_.addAll(other.conceptIds_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        clarifai2.internal.grpc.api.ModelVersionOuterClass.ListModelVersionsRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (clarifai2.internal.grpc.api.ModelVersionOuterClass.ListModelVersionsRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private clarifai2.internal.grpc.api.Common.UserAppIDSet userAppId_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          clarifai2.internal.grpc.api.Common.UserAppIDSet, clarifai2.internal.grpc.api.Common.UserAppIDSet.Builder, clarifai2.internal.grpc.api.Common.UserAppIDSetOrBuilder> userAppIdBuilder_;
      /**
       * .clarifai.api.UserAppIDSet user_app_id = 1;
       */
      public boolean hasUserAppId() {
        return userAppIdBuilder_ != null || userAppId_ != null;
      }
      /**
       * .clarifai.api.UserAppIDSet user_app_id = 1;
       */
      public clarifai2.internal.grpc.api.Common.UserAppIDSet getUserAppId() {
        if (userAppIdBuilder_ == null) {
          return userAppId_ == null ? clarifai2.internal.grpc.api.Common.UserAppIDSet.getDefaultInstance() : userAppId_;
        } else {
          return userAppIdBuilder_.getMessage();
        }
      }
      /**
       * .clarifai.api.UserAppIDSet user_app_id = 1;
       */
      public Builder setUserAppId(clarifai2.internal.grpc.api.Common.UserAppIDSet value) {
        if (userAppIdBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          userAppId_ = value;
          onChanged();
        } else {
          userAppIdBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * .clarifai.api.UserAppIDSet user_app_id = 1;
       */
      public Builder setUserAppId(
          clarifai2.internal.grpc.api.Common.UserAppIDSet.Builder builderForValue) {
        if (userAppIdBuilder_ == null) {
          userAppId_ = builderForValue.build();
          onChanged();
        } else {
          userAppIdBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * .clarifai.api.UserAppIDSet user_app_id = 1;
       */
      public Builder mergeUserAppId(clarifai2.internal.grpc.api.Common.UserAppIDSet value) {
        if (userAppIdBuilder_ == null) {
          if (userAppId_ != null) {
            userAppId_ =
              clarifai2.internal.grpc.api.Common.UserAppIDSet.newBuilder(userAppId_).mergeFrom(value).buildPartial();
          } else {
            userAppId_ = value;
          }
          onChanged();
        } else {
          userAppIdBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * .clarifai.api.UserAppIDSet user_app_id = 1;
       */
      public Builder clearUserAppId() {
        if (userAppIdBuilder_ == null) {
          userAppId_ = null;
          onChanged();
        } else {
          userAppId_ = null;
          userAppIdBuilder_ = null;
        }

        return this;
      }
      /**
       * .clarifai.api.UserAppIDSet user_app_id = 1;
       */
      public clarifai2.internal.grpc.api.Common.UserAppIDSet.Builder getUserAppIdBuilder() {
        
        onChanged();
        return getUserAppIdFieldBuilder().getBuilder();
      }
      /**
       * .clarifai.api.UserAppIDSet user_app_id = 1;
       */
      public clarifai2.internal.grpc.api.Common.UserAppIDSetOrBuilder getUserAppIdOrBuilder() {
        if (userAppIdBuilder_ != null) {
          return userAppIdBuilder_.getMessageOrBuilder();
        } else {
          return userAppId_ == null ?
              clarifai2.internal.grpc.api.Common.UserAppIDSet.getDefaultInstance() : userAppId_;
        }
      }
      /**
       * .clarifai.api.UserAppIDSet user_app_id = 1;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          clarifai2.internal.grpc.api.Common.UserAppIDSet, clarifai2.internal.grpc.api.Common.UserAppIDSet.Builder, clarifai2.internal.grpc.api.Common.UserAppIDSetOrBuilder> 
          getUserAppIdFieldBuilder() {
        if (userAppIdBuilder_ == null) {
          userAppIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              clarifai2.internal.grpc.api.Common.UserAppIDSet, clarifai2.internal.grpc.api.Common.UserAppIDSet.Builder, clarifai2.internal.grpc.api.Common.UserAppIDSetOrBuilder>(
                  getUserAppId(),
                  getParentForChildren(),
                  isClean());
          userAppId_ = null;
        }
        return userAppIdBuilder_;
      }

      private java.lang.Object modelId_ = "";
      /**
       * string model_id = 2;
       */
      public java.lang.String getModelId() {
        java.lang.Object ref = modelId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          modelId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string model_id = 2;
       */
      public com.google.protobuf.ByteString
          getModelIdBytes() {
        java.lang.Object ref = modelId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          modelId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string model_id = 2;
       */
      public Builder setModelId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        modelId_ = value;
        onChanged();
        return this;
      }
      /**
       * string model_id = 2;
       */
      public Builder clearModelId() {
        
        modelId_ = getDefaultInstance().getModelId();
        onChanged();
        return this;
      }
      /**
       * string model_id = 2;
       */
      public Builder setModelIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        modelId_ = value;
        onChanged();
        return this;
      }

      private int page_ ;
      /**
       * uint32 page = 3;
       */
      public int getPage() {
        return page_;
      }
      /**
       * uint32 page = 3;
       */
      public Builder setPage(int value) {
        
        page_ = value;
        onChanged();
        return this;
      }
      /**
       * uint32 page = 3;
       */
      public Builder clearPage() {
        
        page_ = 0;
        onChanged();
        return this;
      }

      private int perPage_ ;
      /**
       * uint32 per_page = 4;
       */
      public int getPerPage() {
        return perPage_;
      }
      /**
       * uint32 per_page = 4;
       */
      public Builder setPerPage(int value) {
        
        perPage_ = value;
        onChanged();
        return this;
      }
      /**
       * uint32 per_page = 4;
       */
      public Builder clearPerPage() {
        
        perPage_ = 0;
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList conceptIds_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureConceptIdsIsMutable() {
        if (!((bitField0_ & 0x00000010) == 0x00000010)) {
          conceptIds_ = new com.google.protobuf.LazyStringArrayList(conceptIds_);
          bitField0_ |= 0x00000010;
         }
      }
      /**
       * repeated string concept_ids = 5;
       */
      public com.google.protobuf.ProtocolStringList
          getConceptIdsList() {
        return conceptIds_.getUnmodifiableView();
      }
      /**
       * repeated string concept_ids = 5;
       */
      public int getConceptIdsCount() {
        return conceptIds_.size();
      }
      /**
       * repeated string concept_ids = 5;
       */
      public java.lang.String getConceptIds(int index) {
        return conceptIds_.get(index);
      }
      /**
       * repeated string concept_ids = 5;
       */
      public com.google.protobuf.ByteString
          getConceptIdsBytes(int index) {
        return conceptIds_.getByteString(index);
      }
      /**
       * repeated string concept_ids = 5;
       */
      public Builder setConceptIds(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureConceptIdsIsMutable();
        conceptIds_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * repeated string concept_ids = 5;
       */
      public Builder addConceptIds(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureConceptIdsIsMutable();
        conceptIds_.add(value);
        onChanged();
        return this;
      }
      /**
       * repeated string concept_ids = 5;
       */
      public Builder addAllConceptIds(
          java.lang.Iterable values) {
        ensureConceptIdsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, conceptIds_);
        onChanged();
        return this;
      }
      /**
       * repeated string concept_ids = 5;
       */
      public Builder clearConceptIds() {
        conceptIds_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000010);
        onChanged();
        return this;
      }
      /**
       * repeated string concept_ids = 5;
       */
      public Builder addConceptIdsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureConceptIdsIsMutable();
        conceptIds_.add(value);
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:clarifai.api.ListModelVersionsRequest)
    }

    // @@protoc_insertion_point(class_scope:clarifai.api.ListModelVersionsRequest)
    private static final clarifai2.internal.grpc.api.ModelVersionOuterClass.ListModelVersionsRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new clarifai2.internal.grpc.api.ModelVersionOuterClass.ListModelVersionsRequest();
    }

    public static clarifai2.internal.grpc.api.ModelVersionOuterClass.ListModelVersionsRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public clarifai2.internal.grpc.api.ModelVersionOuterClass.ListModelVersionsRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PostModelVersionsRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:clarifai.api.PostModelVersionsRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * .clarifai.api.UserAppIDSet user_app_id = 1;
     */
    boolean hasUserAppId();
    /**
     * .clarifai.api.UserAppIDSet user_app_id = 1;
     */
    clarifai2.internal.grpc.api.Common.UserAppIDSet getUserAppId();
    /**
     * .clarifai.api.UserAppIDSet user_app_id = 1;
     */
    clarifai2.internal.grpc.api.Common.UserAppIDSetOrBuilder getUserAppIdOrBuilder();

    /**
     * string model_id = 2;
     */
    java.lang.String getModelId();
    /**
     * string model_id = 2;
     */
    com.google.protobuf.ByteString
        getModelIdBytes();

    /**
     * repeated .clarifai.api.ModelVersion model_versions = 3;
     */
    java.util.List 
        getModelVersionsList();
    /**
     * repeated .clarifai.api.ModelVersion model_versions = 3;
     */
    clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersion getModelVersions(int index);
    /**
     * repeated .clarifai.api.ModelVersion model_versions = 3;
     */
    int getModelVersionsCount();
    /**
     * repeated .clarifai.api.ModelVersion model_versions = 3;
     */
    java.util.List 
        getModelVersionsOrBuilderList();
    /**
     * repeated .clarifai.api.ModelVersion model_versions = 3;
     */
    clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersionOrBuilder getModelVersionsOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code clarifai.api.PostModelVersionsRequest}
   */
  public  static final class PostModelVersionsRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:clarifai.api.PostModelVersionsRequest)
      PostModelVersionsRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PostModelVersionsRequest.newBuilder() to construct.
    private PostModelVersionsRequest(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private PostModelVersionsRequest() {
      modelId_ = "";
      modelVersions_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private PostModelVersionsRequest(
        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;
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              clarifai2.internal.grpc.api.Common.UserAppIDSet.Builder subBuilder = null;
              if (userAppId_ != null) {
                subBuilder = userAppId_.toBuilder();
              }
              userAppId_ = input.readMessage(clarifai2.internal.grpc.api.Common.UserAppIDSet.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(userAppId_);
                userAppId_ = subBuilder.buildPartial();
              }

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

              modelId_ = s;
              break;
            }
            case 26: {
              if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
                modelVersions_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000004;
              }
              modelVersions_.add(
                  input.readMessage(clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersion.parser(), extensionRegistry));
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
          modelVersions_ = java.util.Collections.unmodifiableList(modelVersions_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_PostModelVersionsRequest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_PostModelVersionsRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              clarifai2.internal.grpc.api.ModelVersionOuterClass.PostModelVersionsRequest.class, clarifai2.internal.grpc.api.ModelVersionOuterClass.PostModelVersionsRequest.Builder.class);
    }

    private int bitField0_;
    public static final int USER_APP_ID_FIELD_NUMBER = 1;
    private clarifai2.internal.grpc.api.Common.UserAppIDSet userAppId_;
    /**
     * .clarifai.api.UserAppIDSet user_app_id = 1;
     */
    public boolean hasUserAppId() {
      return userAppId_ != null;
    }
    /**
     * .clarifai.api.UserAppIDSet user_app_id = 1;
     */
    public clarifai2.internal.grpc.api.Common.UserAppIDSet getUserAppId() {
      return userAppId_ == null ? clarifai2.internal.grpc.api.Common.UserAppIDSet.getDefaultInstance() : userAppId_;
    }
    /**
     * .clarifai.api.UserAppIDSet user_app_id = 1;
     */
    public clarifai2.internal.grpc.api.Common.UserAppIDSetOrBuilder getUserAppIdOrBuilder() {
      return getUserAppId();
    }

    public static final int MODEL_ID_FIELD_NUMBER = 2;
    private volatile java.lang.Object modelId_;
    /**
     * string model_id = 2;
     */
    public java.lang.String getModelId() {
      java.lang.Object ref = modelId_;
      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();
        modelId_ = s;
        return s;
      }
    }
    /**
     * string model_id = 2;
     */
    public com.google.protobuf.ByteString
        getModelIdBytes() {
      java.lang.Object ref = modelId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        modelId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int MODEL_VERSIONS_FIELD_NUMBER = 3;
    private java.util.List modelVersions_;
    /**
     * repeated .clarifai.api.ModelVersion model_versions = 3;
     */
    public java.util.List getModelVersionsList() {
      return modelVersions_;
    }
    /**
     * repeated .clarifai.api.ModelVersion model_versions = 3;
     */
    public java.util.List 
        getModelVersionsOrBuilderList() {
      return modelVersions_;
    }
    /**
     * repeated .clarifai.api.ModelVersion model_versions = 3;
     */
    public int getModelVersionsCount() {
      return modelVersions_.size();
    }
    /**
     * repeated .clarifai.api.ModelVersion model_versions = 3;
     */
    public clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersion getModelVersions(int index) {
      return modelVersions_.get(index);
    }
    /**
     * repeated .clarifai.api.ModelVersion model_versions = 3;
     */
    public clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersionOrBuilder getModelVersionsOrBuilder(
        int index) {
      return modelVersions_.get(index);
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (userAppId_ != null) {
        output.writeMessage(1, getUserAppId());
      }
      if (!getModelIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, modelId_);
      }
      for (int i = 0; i < modelVersions_.size(); i++) {
        output.writeMessage(3, modelVersions_.get(i));
      }
      unknownFields.writeTo(output);
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (userAppId_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getUserAppId());
      }
      if (!getModelIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, modelId_);
      }
      for (int i = 0; i < modelVersions_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, modelVersions_.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 clarifai2.internal.grpc.api.ModelVersionOuterClass.PostModelVersionsRequest)) {
        return super.equals(obj);
      }
      clarifai2.internal.grpc.api.ModelVersionOuterClass.PostModelVersionsRequest other = (clarifai2.internal.grpc.api.ModelVersionOuterClass.PostModelVersionsRequest) obj;

      boolean result = true;
      result = result && (hasUserAppId() == other.hasUserAppId());
      if (hasUserAppId()) {
        result = result && getUserAppId()
            .equals(other.getUserAppId());
      }
      result = result && getModelId()
          .equals(other.getModelId());
      result = result && getModelVersionsList()
          .equals(other.getModelVersionsList());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasUserAppId()) {
        hash = (37 * hash) + USER_APP_ID_FIELD_NUMBER;
        hash = (53 * hash) + getUserAppId().hashCode();
      }
      hash = (37 * hash) + MODEL_ID_FIELD_NUMBER;
      hash = (53 * hash) + getModelId().hashCode();
      if (getModelVersionsCount() > 0) {
        hash = (37 * hash) + MODEL_VERSIONS_FIELD_NUMBER;
        hash = (53 * hash) + getModelVersionsList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(clarifai2.internal.grpc.api.ModelVersionOuterClass.PostModelVersionsRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code clarifai.api.PostModelVersionsRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:clarifai.api.PostModelVersionsRequest)
        clarifai2.internal.grpc.api.ModelVersionOuterClass.PostModelVersionsRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_PostModelVersionsRequest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_PostModelVersionsRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                clarifai2.internal.grpc.api.ModelVersionOuterClass.PostModelVersionsRequest.class, clarifai2.internal.grpc.api.ModelVersionOuterClass.PostModelVersionsRequest.Builder.class);
      }

      // Construct using clarifai2.internal.grpc.api.ModelVersionOuterClass.PostModelVersionsRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getModelVersionsFieldBuilder();
        }
      }
      public Builder clear() {
        super.clear();
        if (userAppIdBuilder_ == null) {
          userAppId_ = null;
        } else {
          userAppId_ = null;
          userAppIdBuilder_ = null;
        }
        modelId_ = "";

        if (modelVersionsBuilder_ == null) {
          modelVersions_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000004);
        } else {
          modelVersionsBuilder_.clear();
        }
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_PostModelVersionsRequest_descriptor;
      }

      public clarifai2.internal.grpc.api.ModelVersionOuterClass.PostModelVersionsRequest getDefaultInstanceForType() {
        return clarifai2.internal.grpc.api.ModelVersionOuterClass.PostModelVersionsRequest.getDefaultInstance();
      }

      public clarifai2.internal.grpc.api.ModelVersionOuterClass.PostModelVersionsRequest build() {
        clarifai2.internal.grpc.api.ModelVersionOuterClass.PostModelVersionsRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public clarifai2.internal.grpc.api.ModelVersionOuterClass.PostModelVersionsRequest buildPartial() {
        clarifai2.internal.grpc.api.ModelVersionOuterClass.PostModelVersionsRequest result = new clarifai2.internal.grpc.api.ModelVersionOuterClass.PostModelVersionsRequest(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (userAppIdBuilder_ == null) {
          result.userAppId_ = userAppId_;
        } else {
          result.userAppId_ = userAppIdBuilder_.build();
        }
        result.modelId_ = modelId_;
        if (modelVersionsBuilder_ == null) {
          if (((bitField0_ & 0x00000004) == 0x00000004)) {
            modelVersions_ = java.util.Collections.unmodifiableList(modelVersions_);
            bitField0_ = (bitField0_ & ~0x00000004);
          }
          result.modelVersions_ = modelVersions_;
        } else {
          result.modelVersions_ = modelVersionsBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof clarifai2.internal.grpc.api.ModelVersionOuterClass.PostModelVersionsRequest) {
          return mergeFrom((clarifai2.internal.grpc.api.ModelVersionOuterClass.PostModelVersionsRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(clarifai2.internal.grpc.api.ModelVersionOuterClass.PostModelVersionsRequest other) {
        if (other == clarifai2.internal.grpc.api.ModelVersionOuterClass.PostModelVersionsRequest.getDefaultInstance()) return this;
        if (other.hasUserAppId()) {
          mergeUserAppId(other.getUserAppId());
        }
        if (!other.getModelId().isEmpty()) {
          modelId_ = other.modelId_;
          onChanged();
        }
        if (modelVersionsBuilder_ == null) {
          if (!other.modelVersions_.isEmpty()) {
            if (modelVersions_.isEmpty()) {
              modelVersions_ = other.modelVersions_;
              bitField0_ = (bitField0_ & ~0x00000004);
            } else {
              ensureModelVersionsIsMutable();
              modelVersions_.addAll(other.modelVersions_);
            }
            onChanged();
          }
        } else {
          if (!other.modelVersions_.isEmpty()) {
            if (modelVersionsBuilder_.isEmpty()) {
              modelVersionsBuilder_.dispose();
              modelVersionsBuilder_ = null;
              modelVersions_ = other.modelVersions_;
              bitField0_ = (bitField0_ & ~0x00000004);
              modelVersionsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getModelVersionsFieldBuilder() : null;
            } else {
              modelVersionsBuilder_.addAllMessages(other.modelVersions_);
            }
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        clarifai2.internal.grpc.api.ModelVersionOuterClass.PostModelVersionsRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (clarifai2.internal.grpc.api.ModelVersionOuterClass.PostModelVersionsRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private clarifai2.internal.grpc.api.Common.UserAppIDSet userAppId_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          clarifai2.internal.grpc.api.Common.UserAppIDSet, clarifai2.internal.grpc.api.Common.UserAppIDSet.Builder, clarifai2.internal.grpc.api.Common.UserAppIDSetOrBuilder> userAppIdBuilder_;
      /**
       * .clarifai.api.UserAppIDSet user_app_id = 1;
       */
      public boolean hasUserAppId() {
        return userAppIdBuilder_ != null || userAppId_ != null;
      }
      /**
       * .clarifai.api.UserAppIDSet user_app_id = 1;
       */
      public clarifai2.internal.grpc.api.Common.UserAppIDSet getUserAppId() {
        if (userAppIdBuilder_ == null) {
          return userAppId_ == null ? clarifai2.internal.grpc.api.Common.UserAppIDSet.getDefaultInstance() : userAppId_;
        } else {
          return userAppIdBuilder_.getMessage();
        }
      }
      /**
       * .clarifai.api.UserAppIDSet user_app_id = 1;
       */
      public Builder setUserAppId(clarifai2.internal.grpc.api.Common.UserAppIDSet value) {
        if (userAppIdBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          userAppId_ = value;
          onChanged();
        } else {
          userAppIdBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * .clarifai.api.UserAppIDSet user_app_id = 1;
       */
      public Builder setUserAppId(
          clarifai2.internal.grpc.api.Common.UserAppIDSet.Builder builderForValue) {
        if (userAppIdBuilder_ == null) {
          userAppId_ = builderForValue.build();
          onChanged();
        } else {
          userAppIdBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * .clarifai.api.UserAppIDSet user_app_id = 1;
       */
      public Builder mergeUserAppId(clarifai2.internal.grpc.api.Common.UserAppIDSet value) {
        if (userAppIdBuilder_ == null) {
          if (userAppId_ != null) {
            userAppId_ =
              clarifai2.internal.grpc.api.Common.UserAppIDSet.newBuilder(userAppId_).mergeFrom(value).buildPartial();
          } else {
            userAppId_ = value;
          }
          onChanged();
        } else {
          userAppIdBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * .clarifai.api.UserAppIDSet user_app_id = 1;
       */
      public Builder clearUserAppId() {
        if (userAppIdBuilder_ == null) {
          userAppId_ = null;
          onChanged();
        } else {
          userAppId_ = null;
          userAppIdBuilder_ = null;
        }

        return this;
      }
      /**
       * .clarifai.api.UserAppIDSet user_app_id = 1;
       */
      public clarifai2.internal.grpc.api.Common.UserAppIDSet.Builder getUserAppIdBuilder() {
        
        onChanged();
        return getUserAppIdFieldBuilder().getBuilder();
      }
      /**
       * .clarifai.api.UserAppIDSet user_app_id = 1;
       */
      public clarifai2.internal.grpc.api.Common.UserAppIDSetOrBuilder getUserAppIdOrBuilder() {
        if (userAppIdBuilder_ != null) {
          return userAppIdBuilder_.getMessageOrBuilder();
        } else {
          return userAppId_ == null ?
              clarifai2.internal.grpc.api.Common.UserAppIDSet.getDefaultInstance() : userAppId_;
        }
      }
      /**
       * .clarifai.api.UserAppIDSet user_app_id = 1;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          clarifai2.internal.grpc.api.Common.UserAppIDSet, clarifai2.internal.grpc.api.Common.UserAppIDSet.Builder, clarifai2.internal.grpc.api.Common.UserAppIDSetOrBuilder> 
          getUserAppIdFieldBuilder() {
        if (userAppIdBuilder_ == null) {
          userAppIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              clarifai2.internal.grpc.api.Common.UserAppIDSet, clarifai2.internal.grpc.api.Common.UserAppIDSet.Builder, clarifai2.internal.grpc.api.Common.UserAppIDSetOrBuilder>(
                  getUserAppId(),
                  getParentForChildren(),
                  isClean());
          userAppId_ = null;
        }
        return userAppIdBuilder_;
      }

      private java.lang.Object modelId_ = "";
      /**
       * string model_id = 2;
       */
      public java.lang.String getModelId() {
        java.lang.Object ref = modelId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          modelId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string model_id = 2;
       */
      public com.google.protobuf.ByteString
          getModelIdBytes() {
        java.lang.Object ref = modelId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          modelId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string model_id = 2;
       */
      public Builder setModelId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        modelId_ = value;
        onChanged();
        return this;
      }
      /**
       * string model_id = 2;
       */
      public Builder clearModelId() {
        
        modelId_ = getDefaultInstance().getModelId();
        onChanged();
        return this;
      }
      /**
       * string model_id = 2;
       */
      public Builder setModelIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        modelId_ = value;
        onChanged();
        return this;
      }

      private java.util.List modelVersions_ =
        java.util.Collections.emptyList();
      private void ensureModelVersionsIsMutable() {
        if (!((bitField0_ & 0x00000004) == 0x00000004)) {
          modelVersions_ = new java.util.ArrayList(modelVersions_);
          bitField0_ |= 0x00000004;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersion, clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersion.Builder, clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersionOrBuilder> modelVersionsBuilder_;

      /**
       * repeated .clarifai.api.ModelVersion model_versions = 3;
       */
      public java.util.List getModelVersionsList() {
        if (modelVersionsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(modelVersions_);
        } else {
          return modelVersionsBuilder_.getMessageList();
        }
      }
      /**
       * repeated .clarifai.api.ModelVersion model_versions = 3;
       */
      public int getModelVersionsCount() {
        if (modelVersionsBuilder_ == null) {
          return modelVersions_.size();
        } else {
          return modelVersionsBuilder_.getCount();
        }
      }
      /**
       * repeated .clarifai.api.ModelVersion model_versions = 3;
       */
      public clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersion getModelVersions(int index) {
        if (modelVersionsBuilder_ == null) {
          return modelVersions_.get(index);
        } else {
          return modelVersionsBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .clarifai.api.ModelVersion model_versions = 3;
       */
      public Builder setModelVersions(
          int index, clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersion value) {
        if (modelVersionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureModelVersionsIsMutable();
          modelVersions_.set(index, value);
          onChanged();
        } else {
          modelVersionsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .clarifai.api.ModelVersion model_versions = 3;
       */
      public Builder setModelVersions(
          int index, clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersion.Builder builderForValue) {
        if (modelVersionsBuilder_ == null) {
          ensureModelVersionsIsMutable();
          modelVersions_.set(index, builderForValue.build());
          onChanged();
        } else {
          modelVersionsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .clarifai.api.ModelVersion model_versions = 3;
       */
      public Builder addModelVersions(clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersion value) {
        if (modelVersionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureModelVersionsIsMutable();
          modelVersions_.add(value);
          onChanged();
        } else {
          modelVersionsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .clarifai.api.ModelVersion model_versions = 3;
       */
      public Builder addModelVersions(
          int index, clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersion value) {
        if (modelVersionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureModelVersionsIsMutable();
          modelVersions_.add(index, value);
          onChanged();
        } else {
          modelVersionsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .clarifai.api.ModelVersion model_versions = 3;
       */
      public Builder addModelVersions(
          clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersion.Builder builderForValue) {
        if (modelVersionsBuilder_ == null) {
          ensureModelVersionsIsMutable();
          modelVersions_.add(builderForValue.build());
          onChanged();
        } else {
          modelVersionsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .clarifai.api.ModelVersion model_versions = 3;
       */
      public Builder addModelVersions(
          int index, clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersion.Builder builderForValue) {
        if (modelVersionsBuilder_ == null) {
          ensureModelVersionsIsMutable();
          modelVersions_.add(index, builderForValue.build());
          onChanged();
        } else {
          modelVersionsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .clarifai.api.ModelVersion model_versions = 3;
       */
      public Builder addAllModelVersions(
          java.lang.Iterable values) {
        if (modelVersionsBuilder_ == null) {
          ensureModelVersionsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, modelVersions_);
          onChanged();
        } else {
          modelVersionsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .clarifai.api.ModelVersion model_versions = 3;
       */
      public Builder clearModelVersions() {
        if (modelVersionsBuilder_ == null) {
          modelVersions_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000004);
          onChanged();
        } else {
          modelVersionsBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .clarifai.api.ModelVersion model_versions = 3;
       */
      public Builder removeModelVersions(int index) {
        if (modelVersionsBuilder_ == null) {
          ensureModelVersionsIsMutable();
          modelVersions_.remove(index);
          onChanged();
        } else {
          modelVersionsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .clarifai.api.ModelVersion model_versions = 3;
       */
      public clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersion.Builder getModelVersionsBuilder(
          int index) {
        return getModelVersionsFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .clarifai.api.ModelVersion model_versions = 3;
       */
      public clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersionOrBuilder getModelVersionsOrBuilder(
          int index) {
        if (modelVersionsBuilder_ == null) {
          return modelVersions_.get(index);  } else {
          return modelVersionsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .clarifai.api.ModelVersion model_versions = 3;
       */
      public java.util.List 
           getModelVersionsOrBuilderList() {
        if (modelVersionsBuilder_ != null) {
          return modelVersionsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(modelVersions_);
        }
      }
      /**
       * repeated .clarifai.api.ModelVersion model_versions = 3;
       */
      public clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersion.Builder addModelVersionsBuilder() {
        return getModelVersionsFieldBuilder().addBuilder(
            clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersion.getDefaultInstance());
      }
      /**
       * repeated .clarifai.api.ModelVersion model_versions = 3;
       */
      public clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersion.Builder addModelVersionsBuilder(
          int index) {
        return getModelVersionsFieldBuilder().addBuilder(
            index, clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersion.getDefaultInstance());
      }
      /**
       * repeated .clarifai.api.ModelVersion model_versions = 3;
       */
      public java.util.List 
           getModelVersionsBuilderList() {
        return getModelVersionsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersion, clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersion.Builder, clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersionOrBuilder> 
          getModelVersionsFieldBuilder() {
        if (modelVersionsBuilder_ == null) {
          modelVersionsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersion, clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersion.Builder, clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersionOrBuilder>(
                  modelVersions_,
                  ((bitField0_ & 0x00000004) == 0x00000004),
                  getParentForChildren(),
                  isClean());
          modelVersions_ = null;
        }
        return modelVersionsBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:clarifai.api.PostModelVersionsRequest)
    }

    // @@protoc_insertion_point(class_scope:clarifai.api.PostModelVersionsRequest)
    private static final clarifai2.internal.grpc.api.ModelVersionOuterClass.PostModelVersionsRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new clarifai2.internal.grpc.api.ModelVersionOuterClass.PostModelVersionsRequest();
    }

    public static clarifai2.internal.grpc.api.ModelVersionOuterClass.PostModelVersionsRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public clarifai2.internal.grpc.api.ModelVersionOuterClass.PostModelVersionsRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface DeleteModelVersionRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:clarifai.api.DeleteModelVersionRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * .clarifai.api.UserAppIDSet user_app_id = 1;
     */
    boolean hasUserAppId();
    /**
     * .clarifai.api.UserAppIDSet user_app_id = 1;
     */
    clarifai2.internal.grpc.api.Common.UserAppIDSet getUserAppId();
    /**
     * .clarifai.api.UserAppIDSet user_app_id = 1;
     */
    clarifai2.internal.grpc.api.Common.UserAppIDSetOrBuilder getUserAppIdOrBuilder();

    /**
     * string model_id = 3;
     */
    java.lang.String getModelId();
    /**
     * string model_id = 3;
     */
    com.google.protobuf.ByteString
        getModelIdBytes();

    /**
     * string version_id = 4;
     */
    java.lang.String getVersionId();
    /**
     * string version_id = 4;
     */
    com.google.protobuf.ByteString
        getVersionIdBytes();
  }
  /**
   * Protobuf type {@code clarifai.api.DeleteModelVersionRequest}
   */
  public  static final class DeleteModelVersionRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:clarifai.api.DeleteModelVersionRequest)
      DeleteModelVersionRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use DeleteModelVersionRequest.newBuilder() to construct.
    private DeleteModelVersionRequest(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private DeleteModelVersionRequest() {
      modelId_ = "";
      versionId_ = "";
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private DeleteModelVersionRequest(
        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;
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              clarifai2.internal.grpc.api.Common.UserAppIDSet.Builder subBuilder = null;
              if (userAppId_ != null) {
                subBuilder = userAppId_.toBuilder();
              }
              userAppId_ = input.readMessage(clarifai2.internal.grpc.api.Common.UserAppIDSet.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(userAppId_);
                userAppId_ = subBuilder.buildPartial();
              }

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

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

              versionId_ = s;
              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 clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_DeleteModelVersionRequest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_DeleteModelVersionRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              clarifai2.internal.grpc.api.ModelVersionOuterClass.DeleteModelVersionRequest.class, clarifai2.internal.grpc.api.ModelVersionOuterClass.DeleteModelVersionRequest.Builder.class);
    }

    public static final int USER_APP_ID_FIELD_NUMBER = 1;
    private clarifai2.internal.grpc.api.Common.UserAppIDSet userAppId_;
    /**
     * .clarifai.api.UserAppIDSet user_app_id = 1;
     */
    public boolean hasUserAppId() {
      return userAppId_ != null;
    }
    /**
     * .clarifai.api.UserAppIDSet user_app_id = 1;
     */
    public clarifai2.internal.grpc.api.Common.UserAppIDSet getUserAppId() {
      return userAppId_ == null ? clarifai2.internal.grpc.api.Common.UserAppIDSet.getDefaultInstance() : userAppId_;
    }
    /**
     * .clarifai.api.UserAppIDSet user_app_id = 1;
     */
    public clarifai2.internal.grpc.api.Common.UserAppIDSetOrBuilder getUserAppIdOrBuilder() {
      return getUserAppId();
    }

    public static final int MODEL_ID_FIELD_NUMBER = 3;
    private volatile java.lang.Object modelId_;
    /**
     * string model_id = 3;
     */
    public java.lang.String getModelId() {
      java.lang.Object ref = modelId_;
      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();
        modelId_ = s;
        return s;
      }
    }
    /**
     * string model_id = 3;
     */
    public com.google.protobuf.ByteString
        getModelIdBytes() {
      java.lang.Object ref = modelId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        modelId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int VERSION_ID_FIELD_NUMBER = 4;
    private volatile java.lang.Object versionId_;
    /**
     * string version_id = 4;
     */
    public java.lang.String getVersionId() {
      java.lang.Object ref = versionId_;
      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();
        versionId_ = s;
        return s;
      }
    }
    /**
     * string version_id = 4;
     */
    public com.google.protobuf.ByteString
        getVersionIdBytes() {
      java.lang.Object ref = versionId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        versionId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (userAppId_ != null) {
        output.writeMessage(1, getUserAppId());
      }
      if (!getModelIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, modelId_);
      }
      if (!getVersionIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, versionId_);
      }
      unknownFields.writeTo(output);
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (userAppId_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getUserAppId());
      }
      if (!getModelIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, modelId_);
      }
      if (!getVersionIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, versionId_);
      }
      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 clarifai2.internal.grpc.api.ModelVersionOuterClass.DeleteModelVersionRequest)) {
        return super.equals(obj);
      }
      clarifai2.internal.grpc.api.ModelVersionOuterClass.DeleteModelVersionRequest other = (clarifai2.internal.grpc.api.ModelVersionOuterClass.DeleteModelVersionRequest) obj;

      boolean result = true;
      result = result && (hasUserAppId() == other.hasUserAppId());
      if (hasUserAppId()) {
        result = result && getUserAppId()
            .equals(other.getUserAppId());
      }
      result = result && getModelId()
          .equals(other.getModelId());
      result = result && getVersionId()
          .equals(other.getVersionId());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasUserAppId()) {
        hash = (37 * hash) + USER_APP_ID_FIELD_NUMBER;
        hash = (53 * hash) + getUserAppId().hashCode();
      }
      hash = (37 * hash) + MODEL_ID_FIELD_NUMBER;
      hash = (53 * hash) + getModelId().hashCode();
      hash = (37 * hash) + VERSION_ID_FIELD_NUMBER;
      hash = (53 * hash) + getVersionId().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(clarifai2.internal.grpc.api.ModelVersionOuterClass.DeleteModelVersionRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code clarifai.api.DeleteModelVersionRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:clarifai.api.DeleteModelVersionRequest)
        clarifai2.internal.grpc.api.ModelVersionOuterClass.DeleteModelVersionRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_DeleteModelVersionRequest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_DeleteModelVersionRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                clarifai2.internal.grpc.api.ModelVersionOuterClass.DeleteModelVersionRequest.class, clarifai2.internal.grpc.api.ModelVersionOuterClass.DeleteModelVersionRequest.Builder.class);
      }

      // Construct using clarifai2.internal.grpc.api.ModelVersionOuterClass.DeleteModelVersionRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        if (userAppIdBuilder_ == null) {
          userAppId_ = null;
        } else {
          userAppId_ = null;
          userAppIdBuilder_ = null;
        }
        modelId_ = "";

        versionId_ = "";

        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_DeleteModelVersionRequest_descriptor;
      }

      public clarifai2.internal.grpc.api.ModelVersionOuterClass.DeleteModelVersionRequest getDefaultInstanceForType() {
        return clarifai2.internal.grpc.api.ModelVersionOuterClass.DeleteModelVersionRequest.getDefaultInstance();
      }

      public clarifai2.internal.grpc.api.ModelVersionOuterClass.DeleteModelVersionRequest build() {
        clarifai2.internal.grpc.api.ModelVersionOuterClass.DeleteModelVersionRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public clarifai2.internal.grpc.api.ModelVersionOuterClass.DeleteModelVersionRequest buildPartial() {
        clarifai2.internal.grpc.api.ModelVersionOuterClass.DeleteModelVersionRequest result = new clarifai2.internal.grpc.api.ModelVersionOuterClass.DeleteModelVersionRequest(this);
        if (userAppIdBuilder_ == null) {
          result.userAppId_ = userAppId_;
        } else {
          result.userAppId_ = userAppIdBuilder_.build();
        }
        result.modelId_ = modelId_;
        result.versionId_ = versionId_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof clarifai2.internal.grpc.api.ModelVersionOuterClass.DeleteModelVersionRequest) {
          return mergeFrom((clarifai2.internal.grpc.api.ModelVersionOuterClass.DeleteModelVersionRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(clarifai2.internal.grpc.api.ModelVersionOuterClass.DeleteModelVersionRequest other) {
        if (other == clarifai2.internal.grpc.api.ModelVersionOuterClass.DeleteModelVersionRequest.getDefaultInstance()) return this;
        if (other.hasUserAppId()) {
          mergeUserAppId(other.getUserAppId());
        }
        if (!other.getModelId().isEmpty()) {
          modelId_ = other.modelId_;
          onChanged();
        }
        if (!other.getVersionId().isEmpty()) {
          versionId_ = other.versionId_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        clarifai2.internal.grpc.api.ModelVersionOuterClass.DeleteModelVersionRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (clarifai2.internal.grpc.api.ModelVersionOuterClass.DeleteModelVersionRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private clarifai2.internal.grpc.api.Common.UserAppIDSet userAppId_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          clarifai2.internal.grpc.api.Common.UserAppIDSet, clarifai2.internal.grpc.api.Common.UserAppIDSet.Builder, clarifai2.internal.grpc.api.Common.UserAppIDSetOrBuilder> userAppIdBuilder_;
      /**
       * .clarifai.api.UserAppIDSet user_app_id = 1;
       */
      public boolean hasUserAppId() {
        return userAppIdBuilder_ != null || userAppId_ != null;
      }
      /**
       * .clarifai.api.UserAppIDSet user_app_id = 1;
       */
      public clarifai2.internal.grpc.api.Common.UserAppIDSet getUserAppId() {
        if (userAppIdBuilder_ == null) {
          return userAppId_ == null ? clarifai2.internal.grpc.api.Common.UserAppIDSet.getDefaultInstance() : userAppId_;
        } else {
          return userAppIdBuilder_.getMessage();
        }
      }
      /**
       * .clarifai.api.UserAppIDSet user_app_id = 1;
       */
      public Builder setUserAppId(clarifai2.internal.grpc.api.Common.UserAppIDSet value) {
        if (userAppIdBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          userAppId_ = value;
          onChanged();
        } else {
          userAppIdBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * .clarifai.api.UserAppIDSet user_app_id = 1;
       */
      public Builder setUserAppId(
          clarifai2.internal.grpc.api.Common.UserAppIDSet.Builder builderForValue) {
        if (userAppIdBuilder_ == null) {
          userAppId_ = builderForValue.build();
          onChanged();
        } else {
          userAppIdBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * .clarifai.api.UserAppIDSet user_app_id = 1;
       */
      public Builder mergeUserAppId(clarifai2.internal.grpc.api.Common.UserAppIDSet value) {
        if (userAppIdBuilder_ == null) {
          if (userAppId_ != null) {
            userAppId_ =
              clarifai2.internal.grpc.api.Common.UserAppIDSet.newBuilder(userAppId_).mergeFrom(value).buildPartial();
          } else {
            userAppId_ = value;
          }
          onChanged();
        } else {
          userAppIdBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * .clarifai.api.UserAppIDSet user_app_id = 1;
       */
      public Builder clearUserAppId() {
        if (userAppIdBuilder_ == null) {
          userAppId_ = null;
          onChanged();
        } else {
          userAppId_ = null;
          userAppIdBuilder_ = null;
        }

        return this;
      }
      /**
       * .clarifai.api.UserAppIDSet user_app_id = 1;
       */
      public clarifai2.internal.grpc.api.Common.UserAppIDSet.Builder getUserAppIdBuilder() {
        
        onChanged();
        return getUserAppIdFieldBuilder().getBuilder();
      }
      /**
       * .clarifai.api.UserAppIDSet user_app_id = 1;
       */
      public clarifai2.internal.grpc.api.Common.UserAppIDSetOrBuilder getUserAppIdOrBuilder() {
        if (userAppIdBuilder_ != null) {
          return userAppIdBuilder_.getMessageOrBuilder();
        } else {
          return userAppId_ == null ?
              clarifai2.internal.grpc.api.Common.UserAppIDSet.getDefaultInstance() : userAppId_;
        }
      }
      /**
       * .clarifai.api.UserAppIDSet user_app_id = 1;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          clarifai2.internal.grpc.api.Common.UserAppIDSet, clarifai2.internal.grpc.api.Common.UserAppIDSet.Builder, clarifai2.internal.grpc.api.Common.UserAppIDSetOrBuilder> 
          getUserAppIdFieldBuilder() {
        if (userAppIdBuilder_ == null) {
          userAppIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              clarifai2.internal.grpc.api.Common.UserAppIDSet, clarifai2.internal.grpc.api.Common.UserAppIDSet.Builder, clarifai2.internal.grpc.api.Common.UserAppIDSetOrBuilder>(
                  getUserAppId(),
                  getParentForChildren(),
                  isClean());
          userAppId_ = null;
        }
        return userAppIdBuilder_;
      }

      private java.lang.Object modelId_ = "";
      /**
       * string model_id = 3;
       */
      public java.lang.String getModelId() {
        java.lang.Object ref = modelId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          modelId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string model_id = 3;
       */
      public com.google.protobuf.ByteString
          getModelIdBytes() {
        java.lang.Object ref = modelId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          modelId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string model_id = 3;
       */
      public Builder setModelId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        modelId_ = value;
        onChanged();
        return this;
      }
      /**
       * string model_id = 3;
       */
      public Builder clearModelId() {
        
        modelId_ = getDefaultInstance().getModelId();
        onChanged();
        return this;
      }
      /**
       * string model_id = 3;
       */
      public Builder setModelIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        modelId_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object versionId_ = "";
      /**
       * string version_id = 4;
       */
      public java.lang.String getVersionId() {
        java.lang.Object ref = versionId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          versionId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string version_id = 4;
       */
      public com.google.protobuf.ByteString
          getVersionIdBytes() {
        java.lang.Object ref = versionId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          versionId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string version_id = 4;
       */
      public Builder setVersionId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        versionId_ = value;
        onChanged();
        return this;
      }
      /**
       * string version_id = 4;
       */
      public Builder clearVersionId() {
        
        versionId_ = getDefaultInstance().getVersionId();
        onChanged();
        return this;
      }
      /**
       * string version_id = 4;
       */
      public Builder setVersionIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        versionId_ = value;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:clarifai.api.DeleteModelVersionRequest)
    }

    // @@protoc_insertion_point(class_scope:clarifai.api.DeleteModelVersionRequest)
    private static final clarifai2.internal.grpc.api.ModelVersionOuterClass.DeleteModelVersionRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new clarifai2.internal.grpc.api.ModelVersionOuterClass.DeleteModelVersionRequest();
    }

    public static clarifai2.internal.grpc.api.ModelVersionOuterClass.DeleteModelVersionRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public clarifai2.internal.grpc.api.ModelVersionOuterClass.DeleteModelVersionRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SingleModelVersionResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:clarifai.api.SingleModelVersionResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * .clarifai.api.status.Status status = 1;
     */
    boolean hasStatus();
    /**
     * .clarifai.api.status.Status status = 1;
     */
    clarifai2.internal.grpc.api.status.StatusOuterClass.Status getStatus();
    /**
     * .clarifai.api.status.Status status = 1;
     */
    clarifai2.internal.grpc.api.status.StatusOuterClass.StatusOrBuilder getStatusOrBuilder();

    /**
     * .clarifai.api.ModelVersion model_version = 2;
     */
    boolean hasModelVersion();
    /**
     * .clarifai.api.ModelVersion model_version = 2;
     */
    clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersion getModelVersion();
    /**
     * .clarifai.api.ModelVersion model_version = 2;
     */
    clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersionOrBuilder getModelVersionOrBuilder();
  }
  /**
   * Protobuf type {@code clarifai.api.SingleModelVersionResponse}
   */
  public  static final class SingleModelVersionResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:clarifai.api.SingleModelVersionResponse)
      SingleModelVersionResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use SingleModelVersionResponse.newBuilder() to construct.
    private SingleModelVersionResponse(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private SingleModelVersionResponse() {
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private SingleModelVersionResponse(
        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;
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              clarifai2.internal.grpc.api.status.StatusOuterClass.Status.Builder subBuilder = null;
              if (status_ != null) {
                subBuilder = status_.toBuilder();
              }
              status_ = input.readMessage(clarifai2.internal.grpc.api.status.StatusOuterClass.Status.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(status_);
                status_ = subBuilder.buildPartial();
              }

              break;
            }
            case 18: {
              clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersion.Builder subBuilder = null;
              if (modelVersion_ != null) {
                subBuilder = modelVersion_.toBuilder();
              }
              modelVersion_ = input.readMessage(clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersion.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(modelVersion_);
                modelVersion_ = subBuilder.buildPartial();
              }

              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 clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_SingleModelVersionResponse_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_SingleModelVersionResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              clarifai2.internal.grpc.api.ModelVersionOuterClass.SingleModelVersionResponse.class, clarifai2.internal.grpc.api.ModelVersionOuterClass.SingleModelVersionResponse.Builder.class);
    }

    public static final int STATUS_FIELD_NUMBER = 1;
    private clarifai2.internal.grpc.api.status.StatusOuterClass.Status status_;
    /**
     * .clarifai.api.status.Status status = 1;
     */
    public boolean hasStatus() {
      return status_ != null;
    }
    /**
     * .clarifai.api.status.Status status = 1;
     */
    public clarifai2.internal.grpc.api.status.StatusOuterClass.Status getStatus() {
      return status_ == null ? clarifai2.internal.grpc.api.status.StatusOuterClass.Status.getDefaultInstance() : status_;
    }
    /**
     * .clarifai.api.status.Status status = 1;
     */
    public clarifai2.internal.grpc.api.status.StatusOuterClass.StatusOrBuilder getStatusOrBuilder() {
      return getStatus();
    }

    public static final int MODEL_VERSION_FIELD_NUMBER = 2;
    private clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersion modelVersion_;
    /**
     * .clarifai.api.ModelVersion model_version = 2;
     */
    public boolean hasModelVersion() {
      return modelVersion_ != null;
    }
    /**
     * .clarifai.api.ModelVersion model_version = 2;
     */
    public clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersion getModelVersion() {
      return modelVersion_ == null ? clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersion.getDefaultInstance() : modelVersion_;
    }
    /**
     * .clarifai.api.ModelVersion model_version = 2;
     */
    public clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersionOrBuilder getModelVersionOrBuilder() {
      return getModelVersion();
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (status_ != null) {
        output.writeMessage(1, getStatus());
      }
      if (modelVersion_ != null) {
        output.writeMessage(2, getModelVersion());
      }
      unknownFields.writeTo(output);
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (status_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getStatus());
      }
      if (modelVersion_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getModelVersion());
      }
      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 clarifai2.internal.grpc.api.ModelVersionOuterClass.SingleModelVersionResponse)) {
        return super.equals(obj);
      }
      clarifai2.internal.grpc.api.ModelVersionOuterClass.SingleModelVersionResponse other = (clarifai2.internal.grpc.api.ModelVersionOuterClass.SingleModelVersionResponse) obj;

      boolean result = true;
      result = result && (hasStatus() == other.hasStatus());
      if (hasStatus()) {
        result = result && getStatus()
            .equals(other.getStatus());
      }
      result = result && (hasModelVersion() == other.hasModelVersion());
      if (hasModelVersion()) {
        result = result && getModelVersion()
            .equals(other.getModelVersion());
      }
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasStatus()) {
        hash = (37 * hash) + STATUS_FIELD_NUMBER;
        hash = (53 * hash) + getStatus().hashCode();
      }
      if (hasModelVersion()) {
        hash = (37 * hash) + MODEL_VERSION_FIELD_NUMBER;
        hash = (53 * hash) + getModelVersion().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(clarifai2.internal.grpc.api.ModelVersionOuterClass.SingleModelVersionResponse prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code clarifai.api.SingleModelVersionResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:clarifai.api.SingleModelVersionResponse)
        clarifai2.internal.grpc.api.ModelVersionOuterClass.SingleModelVersionResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_SingleModelVersionResponse_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_SingleModelVersionResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                clarifai2.internal.grpc.api.ModelVersionOuterClass.SingleModelVersionResponse.class, clarifai2.internal.grpc.api.ModelVersionOuterClass.SingleModelVersionResponse.Builder.class);
      }

      // Construct using clarifai2.internal.grpc.api.ModelVersionOuterClass.SingleModelVersionResponse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        if (statusBuilder_ == null) {
          status_ = null;
        } else {
          status_ = null;
          statusBuilder_ = null;
        }
        if (modelVersionBuilder_ == null) {
          modelVersion_ = null;
        } else {
          modelVersion_ = null;
          modelVersionBuilder_ = null;
        }
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_SingleModelVersionResponse_descriptor;
      }

      public clarifai2.internal.grpc.api.ModelVersionOuterClass.SingleModelVersionResponse getDefaultInstanceForType() {
        return clarifai2.internal.grpc.api.ModelVersionOuterClass.SingleModelVersionResponse.getDefaultInstance();
      }

      public clarifai2.internal.grpc.api.ModelVersionOuterClass.SingleModelVersionResponse build() {
        clarifai2.internal.grpc.api.ModelVersionOuterClass.SingleModelVersionResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public clarifai2.internal.grpc.api.ModelVersionOuterClass.SingleModelVersionResponse buildPartial() {
        clarifai2.internal.grpc.api.ModelVersionOuterClass.SingleModelVersionResponse result = new clarifai2.internal.grpc.api.ModelVersionOuterClass.SingleModelVersionResponse(this);
        if (statusBuilder_ == null) {
          result.status_ = status_;
        } else {
          result.status_ = statusBuilder_.build();
        }
        if (modelVersionBuilder_ == null) {
          result.modelVersion_ = modelVersion_;
        } else {
          result.modelVersion_ = modelVersionBuilder_.build();
        }
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof clarifai2.internal.grpc.api.ModelVersionOuterClass.SingleModelVersionResponse) {
          return mergeFrom((clarifai2.internal.grpc.api.ModelVersionOuterClass.SingleModelVersionResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(clarifai2.internal.grpc.api.ModelVersionOuterClass.SingleModelVersionResponse other) {
        if (other == clarifai2.internal.grpc.api.ModelVersionOuterClass.SingleModelVersionResponse.getDefaultInstance()) return this;
        if (other.hasStatus()) {
          mergeStatus(other.getStatus());
        }
        if (other.hasModelVersion()) {
          mergeModelVersion(other.getModelVersion());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        clarifai2.internal.grpc.api.ModelVersionOuterClass.SingleModelVersionResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (clarifai2.internal.grpc.api.ModelVersionOuterClass.SingleModelVersionResponse) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private clarifai2.internal.grpc.api.status.StatusOuterClass.Status status_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          clarifai2.internal.grpc.api.status.StatusOuterClass.Status, clarifai2.internal.grpc.api.status.StatusOuterClass.Status.Builder, clarifai2.internal.grpc.api.status.StatusOuterClass.StatusOrBuilder> statusBuilder_;
      /**
       * .clarifai.api.status.Status status = 1;
       */
      public boolean hasStatus() {
        return statusBuilder_ != null || status_ != null;
      }
      /**
       * .clarifai.api.status.Status status = 1;
       */
      public clarifai2.internal.grpc.api.status.StatusOuterClass.Status getStatus() {
        if (statusBuilder_ == null) {
          return status_ == null ? clarifai2.internal.grpc.api.status.StatusOuterClass.Status.getDefaultInstance() : status_;
        } else {
          return statusBuilder_.getMessage();
        }
      }
      /**
       * .clarifai.api.status.Status status = 1;
       */
      public Builder setStatus(clarifai2.internal.grpc.api.status.StatusOuterClass.Status value) {
        if (statusBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          status_ = value;
          onChanged();
        } else {
          statusBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * .clarifai.api.status.Status status = 1;
       */
      public Builder setStatus(
          clarifai2.internal.grpc.api.status.StatusOuterClass.Status.Builder builderForValue) {
        if (statusBuilder_ == null) {
          status_ = builderForValue.build();
          onChanged();
        } else {
          statusBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * .clarifai.api.status.Status status = 1;
       */
      public Builder mergeStatus(clarifai2.internal.grpc.api.status.StatusOuterClass.Status value) {
        if (statusBuilder_ == null) {
          if (status_ != null) {
            status_ =
              clarifai2.internal.grpc.api.status.StatusOuterClass.Status.newBuilder(status_).mergeFrom(value).buildPartial();
          } else {
            status_ = value;
          }
          onChanged();
        } else {
          statusBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * .clarifai.api.status.Status status = 1;
       */
      public Builder clearStatus() {
        if (statusBuilder_ == null) {
          status_ = null;
          onChanged();
        } else {
          status_ = null;
          statusBuilder_ = null;
        }

        return this;
      }
      /**
       * .clarifai.api.status.Status status = 1;
       */
      public clarifai2.internal.grpc.api.status.StatusOuterClass.Status.Builder getStatusBuilder() {
        
        onChanged();
        return getStatusFieldBuilder().getBuilder();
      }
      /**
       * .clarifai.api.status.Status status = 1;
       */
      public clarifai2.internal.grpc.api.status.StatusOuterClass.StatusOrBuilder getStatusOrBuilder() {
        if (statusBuilder_ != null) {
          return statusBuilder_.getMessageOrBuilder();
        } else {
          return status_ == null ?
              clarifai2.internal.grpc.api.status.StatusOuterClass.Status.getDefaultInstance() : status_;
        }
      }
      /**
       * .clarifai.api.status.Status status = 1;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          clarifai2.internal.grpc.api.status.StatusOuterClass.Status, clarifai2.internal.grpc.api.status.StatusOuterClass.Status.Builder, clarifai2.internal.grpc.api.status.StatusOuterClass.StatusOrBuilder> 
          getStatusFieldBuilder() {
        if (statusBuilder_ == null) {
          statusBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              clarifai2.internal.grpc.api.status.StatusOuterClass.Status, clarifai2.internal.grpc.api.status.StatusOuterClass.Status.Builder, clarifai2.internal.grpc.api.status.StatusOuterClass.StatusOrBuilder>(
                  getStatus(),
                  getParentForChildren(),
                  isClean());
          status_ = null;
        }
        return statusBuilder_;
      }

      private clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersion modelVersion_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersion, clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersion.Builder, clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersionOrBuilder> modelVersionBuilder_;
      /**
       * .clarifai.api.ModelVersion model_version = 2;
       */
      public boolean hasModelVersion() {
        return modelVersionBuilder_ != null || modelVersion_ != null;
      }
      /**
       * .clarifai.api.ModelVersion model_version = 2;
       */
      public clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersion getModelVersion() {
        if (modelVersionBuilder_ == null) {
          return modelVersion_ == null ? clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersion.getDefaultInstance() : modelVersion_;
        } else {
          return modelVersionBuilder_.getMessage();
        }
      }
      /**
       * .clarifai.api.ModelVersion model_version = 2;
       */
      public Builder setModelVersion(clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersion value) {
        if (modelVersionBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          modelVersion_ = value;
          onChanged();
        } else {
          modelVersionBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * .clarifai.api.ModelVersion model_version = 2;
       */
      public Builder setModelVersion(
          clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersion.Builder builderForValue) {
        if (modelVersionBuilder_ == null) {
          modelVersion_ = builderForValue.build();
          onChanged();
        } else {
          modelVersionBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * .clarifai.api.ModelVersion model_version = 2;
       */
      public Builder mergeModelVersion(clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersion value) {
        if (modelVersionBuilder_ == null) {
          if (modelVersion_ != null) {
            modelVersion_ =
              clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersion.newBuilder(modelVersion_).mergeFrom(value).buildPartial();
          } else {
            modelVersion_ = value;
          }
          onChanged();
        } else {
          modelVersionBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * .clarifai.api.ModelVersion model_version = 2;
       */
      public Builder clearModelVersion() {
        if (modelVersionBuilder_ == null) {
          modelVersion_ = null;
          onChanged();
        } else {
          modelVersion_ = null;
          modelVersionBuilder_ = null;
        }

        return this;
      }
      /**
       * .clarifai.api.ModelVersion model_version = 2;
       */
      public clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersion.Builder getModelVersionBuilder() {
        
        onChanged();
        return getModelVersionFieldBuilder().getBuilder();
      }
      /**
       * .clarifai.api.ModelVersion model_version = 2;
       */
      public clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersionOrBuilder getModelVersionOrBuilder() {
        if (modelVersionBuilder_ != null) {
          return modelVersionBuilder_.getMessageOrBuilder();
        } else {
          return modelVersion_ == null ?
              clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersion.getDefaultInstance() : modelVersion_;
        }
      }
      /**
       * .clarifai.api.ModelVersion model_version = 2;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersion, clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersion.Builder, clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersionOrBuilder> 
          getModelVersionFieldBuilder() {
        if (modelVersionBuilder_ == null) {
          modelVersionBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersion, clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersion.Builder, clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersionOrBuilder>(
                  getModelVersion(),
                  getParentForChildren(),
                  isClean());
          modelVersion_ = null;
        }
        return modelVersionBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:clarifai.api.SingleModelVersionResponse)
    }

    // @@protoc_insertion_point(class_scope:clarifai.api.SingleModelVersionResponse)
    private static final clarifai2.internal.grpc.api.ModelVersionOuterClass.SingleModelVersionResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new clarifai2.internal.grpc.api.ModelVersionOuterClass.SingleModelVersionResponse();
    }

    public static clarifai2.internal.grpc.api.ModelVersionOuterClass.SingleModelVersionResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public clarifai2.internal.grpc.api.ModelVersionOuterClass.SingleModelVersionResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface MultiModelVersionResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:clarifai.api.MultiModelVersionResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * .clarifai.api.status.Status status = 1;
     */
    boolean hasStatus();
    /**
     * .clarifai.api.status.Status status = 1;
     */
    clarifai2.internal.grpc.api.status.StatusOuterClass.Status getStatus();
    /**
     * .clarifai.api.status.Status status = 1;
     */
    clarifai2.internal.grpc.api.status.StatusOuterClass.StatusOrBuilder getStatusOrBuilder();

    /**
     * repeated .clarifai.api.ModelVersion model_versions = 2 [(.clarifai.api.utils.cl_show_if_empty) = true];
     */
    java.util.List 
        getModelVersionsList();
    /**
     * repeated .clarifai.api.ModelVersion model_versions = 2 [(.clarifai.api.utils.cl_show_if_empty) = true];
     */
    clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersion getModelVersions(int index);
    /**
     * repeated .clarifai.api.ModelVersion model_versions = 2 [(.clarifai.api.utils.cl_show_if_empty) = true];
     */
    int getModelVersionsCount();
    /**
     * repeated .clarifai.api.ModelVersion model_versions = 2 [(.clarifai.api.utils.cl_show_if_empty) = true];
     */
    java.util.List 
        getModelVersionsOrBuilderList();
    /**
     * repeated .clarifai.api.ModelVersion model_versions = 2 [(.clarifai.api.utils.cl_show_if_empty) = true];
     */
    clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersionOrBuilder getModelVersionsOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code clarifai.api.MultiModelVersionResponse}
   */
  public  static final class MultiModelVersionResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:clarifai.api.MultiModelVersionResponse)
      MultiModelVersionResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use MultiModelVersionResponse.newBuilder() to construct.
    private MultiModelVersionResponse(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private MultiModelVersionResponse() {
      modelVersions_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private MultiModelVersionResponse(
        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;
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              clarifai2.internal.grpc.api.status.StatusOuterClass.Status.Builder subBuilder = null;
              if (status_ != null) {
                subBuilder = status_.toBuilder();
              }
              status_ = input.readMessage(clarifai2.internal.grpc.api.status.StatusOuterClass.Status.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(status_);
                status_ = subBuilder.buildPartial();
              }

              break;
            }
            case 18: {
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                modelVersions_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000002;
              }
              modelVersions_.add(
                  input.readMessage(clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersion.parser(), extensionRegistry));
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          modelVersions_ = java.util.Collections.unmodifiableList(modelVersions_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_MultiModelVersionResponse_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_MultiModelVersionResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              clarifai2.internal.grpc.api.ModelVersionOuterClass.MultiModelVersionResponse.class, clarifai2.internal.grpc.api.ModelVersionOuterClass.MultiModelVersionResponse.Builder.class);
    }

    private int bitField0_;
    public static final int STATUS_FIELD_NUMBER = 1;
    private clarifai2.internal.grpc.api.status.StatusOuterClass.Status status_;
    /**
     * .clarifai.api.status.Status status = 1;
     */
    public boolean hasStatus() {
      return status_ != null;
    }
    /**
     * .clarifai.api.status.Status status = 1;
     */
    public clarifai2.internal.grpc.api.status.StatusOuterClass.Status getStatus() {
      return status_ == null ? clarifai2.internal.grpc.api.status.StatusOuterClass.Status.getDefaultInstance() : status_;
    }
    /**
     * .clarifai.api.status.Status status = 1;
     */
    public clarifai2.internal.grpc.api.status.StatusOuterClass.StatusOrBuilder getStatusOrBuilder() {
      return getStatus();
    }

    public static final int MODEL_VERSIONS_FIELD_NUMBER = 2;
    private java.util.List modelVersions_;
    /**
     * repeated .clarifai.api.ModelVersion model_versions = 2 [(.clarifai.api.utils.cl_show_if_empty) = true];
     */
    public java.util.List getModelVersionsList() {
      return modelVersions_;
    }
    /**
     * repeated .clarifai.api.ModelVersion model_versions = 2 [(.clarifai.api.utils.cl_show_if_empty) = true];
     */
    public java.util.List 
        getModelVersionsOrBuilderList() {
      return modelVersions_;
    }
    /**
     * repeated .clarifai.api.ModelVersion model_versions = 2 [(.clarifai.api.utils.cl_show_if_empty) = true];
     */
    public int getModelVersionsCount() {
      return modelVersions_.size();
    }
    /**
     * repeated .clarifai.api.ModelVersion model_versions = 2 [(.clarifai.api.utils.cl_show_if_empty) = true];
     */
    public clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersion getModelVersions(int index) {
      return modelVersions_.get(index);
    }
    /**
     * repeated .clarifai.api.ModelVersion model_versions = 2 [(.clarifai.api.utils.cl_show_if_empty) = true];
     */
    public clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersionOrBuilder getModelVersionsOrBuilder(
        int index) {
      return modelVersions_.get(index);
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (status_ != null) {
        output.writeMessage(1, getStatus());
      }
      for (int i = 0; i < modelVersions_.size(); i++) {
        output.writeMessage(2, modelVersions_.get(i));
      }
      unknownFields.writeTo(output);
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (status_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getStatus());
      }
      for (int i = 0; i < modelVersions_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, modelVersions_.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 clarifai2.internal.grpc.api.ModelVersionOuterClass.MultiModelVersionResponse)) {
        return super.equals(obj);
      }
      clarifai2.internal.grpc.api.ModelVersionOuterClass.MultiModelVersionResponse other = (clarifai2.internal.grpc.api.ModelVersionOuterClass.MultiModelVersionResponse) obj;

      boolean result = true;
      result = result && (hasStatus() == other.hasStatus());
      if (hasStatus()) {
        result = result && getStatus()
            .equals(other.getStatus());
      }
      result = result && getModelVersionsList()
          .equals(other.getModelVersionsList());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasStatus()) {
        hash = (37 * hash) + STATUS_FIELD_NUMBER;
        hash = (53 * hash) + getStatus().hashCode();
      }
      if (getModelVersionsCount() > 0) {
        hash = (37 * hash) + MODEL_VERSIONS_FIELD_NUMBER;
        hash = (53 * hash) + getModelVersionsList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(clarifai2.internal.grpc.api.ModelVersionOuterClass.MultiModelVersionResponse prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code clarifai.api.MultiModelVersionResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:clarifai.api.MultiModelVersionResponse)
        clarifai2.internal.grpc.api.ModelVersionOuterClass.MultiModelVersionResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_MultiModelVersionResponse_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_MultiModelVersionResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                clarifai2.internal.grpc.api.ModelVersionOuterClass.MultiModelVersionResponse.class, clarifai2.internal.grpc.api.ModelVersionOuterClass.MultiModelVersionResponse.Builder.class);
      }

      // Construct using clarifai2.internal.grpc.api.ModelVersionOuterClass.MultiModelVersionResponse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getModelVersionsFieldBuilder();
        }
      }
      public Builder clear() {
        super.clear();
        if (statusBuilder_ == null) {
          status_ = null;
        } else {
          status_ = null;
          statusBuilder_ = null;
        }
        if (modelVersionsBuilder_ == null) {
          modelVersions_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
        } else {
          modelVersionsBuilder_.clear();
        }
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_MultiModelVersionResponse_descriptor;
      }

      public clarifai2.internal.grpc.api.ModelVersionOuterClass.MultiModelVersionResponse getDefaultInstanceForType() {
        return clarifai2.internal.grpc.api.ModelVersionOuterClass.MultiModelVersionResponse.getDefaultInstance();
      }

      public clarifai2.internal.grpc.api.ModelVersionOuterClass.MultiModelVersionResponse build() {
        clarifai2.internal.grpc.api.ModelVersionOuterClass.MultiModelVersionResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public clarifai2.internal.grpc.api.ModelVersionOuterClass.MultiModelVersionResponse buildPartial() {
        clarifai2.internal.grpc.api.ModelVersionOuterClass.MultiModelVersionResponse result = new clarifai2.internal.grpc.api.ModelVersionOuterClass.MultiModelVersionResponse(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (statusBuilder_ == null) {
          result.status_ = status_;
        } else {
          result.status_ = statusBuilder_.build();
        }
        if (modelVersionsBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            modelVersions_ = java.util.Collections.unmodifiableList(modelVersions_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.modelVersions_ = modelVersions_;
        } else {
          result.modelVersions_ = modelVersionsBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof clarifai2.internal.grpc.api.ModelVersionOuterClass.MultiModelVersionResponse) {
          return mergeFrom((clarifai2.internal.grpc.api.ModelVersionOuterClass.MultiModelVersionResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(clarifai2.internal.grpc.api.ModelVersionOuterClass.MultiModelVersionResponse other) {
        if (other == clarifai2.internal.grpc.api.ModelVersionOuterClass.MultiModelVersionResponse.getDefaultInstance()) return this;
        if (other.hasStatus()) {
          mergeStatus(other.getStatus());
        }
        if (modelVersionsBuilder_ == null) {
          if (!other.modelVersions_.isEmpty()) {
            if (modelVersions_.isEmpty()) {
              modelVersions_ = other.modelVersions_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureModelVersionsIsMutable();
              modelVersions_.addAll(other.modelVersions_);
            }
            onChanged();
          }
        } else {
          if (!other.modelVersions_.isEmpty()) {
            if (modelVersionsBuilder_.isEmpty()) {
              modelVersionsBuilder_.dispose();
              modelVersionsBuilder_ = null;
              modelVersions_ = other.modelVersions_;
              bitField0_ = (bitField0_ & ~0x00000002);
              modelVersionsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getModelVersionsFieldBuilder() : null;
            } else {
              modelVersionsBuilder_.addAllMessages(other.modelVersions_);
            }
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        clarifai2.internal.grpc.api.ModelVersionOuterClass.MultiModelVersionResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (clarifai2.internal.grpc.api.ModelVersionOuterClass.MultiModelVersionResponse) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private clarifai2.internal.grpc.api.status.StatusOuterClass.Status status_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          clarifai2.internal.grpc.api.status.StatusOuterClass.Status, clarifai2.internal.grpc.api.status.StatusOuterClass.Status.Builder, clarifai2.internal.grpc.api.status.StatusOuterClass.StatusOrBuilder> statusBuilder_;
      /**
       * .clarifai.api.status.Status status = 1;
       */
      public boolean hasStatus() {
        return statusBuilder_ != null || status_ != null;
      }
      /**
       * .clarifai.api.status.Status status = 1;
       */
      public clarifai2.internal.grpc.api.status.StatusOuterClass.Status getStatus() {
        if (statusBuilder_ == null) {
          return status_ == null ? clarifai2.internal.grpc.api.status.StatusOuterClass.Status.getDefaultInstance() : status_;
        } else {
          return statusBuilder_.getMessage();
        }
      }
      /**
       * .clarifai.api.status.Status status = 1;
       */
      public Builder setStatus(clarifai2.internal.grpc.api.status.StatusOuterClass.Status value) {
        if (statusBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          status_ = value;
          onChanged();
        } else {
          statusBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * .clarifai.api.status.Status status = 1;
       */
      public Builder setStatus(
          clarifai2.internal.grpc.api.status.StatusOuterClass.Status.Builder builderForValue) {
        if (statusBuilder_ == null) {
          status_ = builderForValue.build();
          onChanged();
        } else {
          statusBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * .clarifai.api.status.Status status = 1;
       */
      public Builder mergeStatus(clarifai2.internal.grpc.api.status.StatusOuterClass.Status value) {
        if (statusBuilder_ == null) {
          if (status_ != null) {
            status_ =
              clarifai2.internal.grpc.api.status.StatusOuterClass.Status.newBuilder(status_).mergeFrom(value).buildPartial();
          } else {
            status_ = value;
          }
          onChanged();
        } else {
          statusBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * .clarifai.api.status.Status status = 1;
       */
      public Builder clearStatus() {
        if (statusBuilder_ == null) {
          status_ = null;
          onChanged();
        } else {
          status_ = null;
          statusBuilder_ = null;
        }

        return this;
      }
      /**
       * .clarifai.api.status.Status status = 1;
       */
      public clarifai2.internal.grpc.api.status.StatusOuterClass.Status.Builder getStatusBuilder() {
        
        onChanged();
        return getStatusFieldBuilder().getBuilder();
      }
      /**
       * .clarifai.api.status.Status status = 1;
       */
      public clarifai2.internal.grpc.api.status.StatusOuterClass.StatusOrBuilder getStatusOrBuilder() {
        if (statusBuilder_ != null) {
          return statusBuilder_.getMessageOrBuilder();
        } else {
          return status_ == null ?
              clarifai2.internal.grpc.api.status.StatusOuterClass.Status.getDefaultInstance() : status_;
        }
      }
      /**
       * .clarifai.api.status.Status status = 1;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          clarifai2.internal.grpc.api.status.StatusOuterClass.Status, clarifai2.internal.grpc.api.status.StatusOuterClass.Status.Builder, clarifai2.internal.grpc.api.status.StatusOuterClass.StatusOrBuilder> 
          getStatusFieldBuilder() {
        if (statusBuilder_ == null) {
          statusBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              clarifai2.internal.grpc.api.status.StatusOuterClass.Status, clarifai2.internal.grpc.api.status.StatusOuterClass.Status.Builder, clarifai2.internal.grpc.api.status.StatusOuterClass.StatusOrBuilder>(
                  getStatus(),
                  getParentForChildren(),
                  isClean());
          status_ = null;
        }
        return statusBuilder_;
      }

      private java.util.List modelVersions_ =
        java.util.Collections.emptyList();
      private void ensureModelVersionsIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          modelVersions_ = new java.util.ArrayList(modelVersions_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersion, clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersion.Builder, clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersionOrBuilder> modelVersionsBuilder_;

      /**
       * repeated .clarifai.api.ModelVersion model_versions = 2 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public java.util.List getModelVersionsList() {
        if (modelVersionsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(modelVersions_);
        } else {
          return modelVersionsBuilder_.getMessageList();
        }
      }
      /**
       * repeated .clarifai.api.ModelVersion model_versions = 2 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public int getModelVersionsCount() {
        if (modelVersionsBuilder_ == null) {
          return modelVersions_.size();
        } else {
          return modelVersionsBuilder_.getCount();
        }
      }
      /**
       * repeated .clarifai.api.ModelVersion model_versions = 2 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersion getModelVersions(int index) {
        if (modelVersionsBuilder_ == null) {
          return modelVersions_.get(index);
        } else {
          return modelVersionsBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .clarifai.api.ModelVersion model_versions = 2 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public Builder setModelVersions(
          int index, clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersion value) {
        if (modelVersionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureModelVersionsIsMutable();
          modelVersions_.set(index, value);
          onChanged();
        } else {
          modelVersionsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .clarifai.api.ModelVersion model_versions = 2 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public Builder setModelVersions(
          int index, clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersion.Builder builderForValue) {
        if (modelVersionsBuilder_ == null) {
          ensureModelVersionsIsMutable();
          modelVersions_.set(index, builderForValue.build());
          onChanged();
        } else {
          modelVersionsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .clarifai.api.ModelVersion model_versions = 2 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public Builder addModelVersions(clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersion value) {
        if (modelVersionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureModelVersionsIsMutable();
          modelVersions_.add(value);
          onChanged();
        } else {
          modelVersionsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .clarifai.api.ModelVersion model_versions = 2 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public Builder addModelVersions(
          int index, clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersion value) {
        if (modelVersionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureModelVersionsIsMutable();
          modelVersions_.add(index, value);
          onChanged();
        } else {
          modelVersionsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .clarifai.api.ModelVersion model_versions = 2 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public Builder addModelVersions(
          clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersion.Builder builderForValue) {
        if (modelVersionsBuilder_ == null) {
          ensureModelVersionsIsMutable();
          modelVersions_.add(builderForValue.build());
          onChanged();
        } else {
          modelVersionsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .clarifai.api.ModelVersion model_versions = 2 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public Builder addModelVersions(
          int index, clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersion.Builder builderForValue) {
        if (modelVersionsBuilder_ == null) {
          ensureModelVersionsIsMutable();
          modelVersions_.add(index, builderForValue.build());
          onChanged();
        } else {
          modelVersionsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .clarifai.api.ModelVersion model_versions = 2 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public Builder addAllModelVersions(
          java.lang.Iterable values) {
        if (modelVersionsBuilder_ == null) {
          ensureModelVersionsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, modelVersions_);
          onChanged();
        } else {
          modelVersionsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .clarifai.api.ModelVersion model_versions = 2 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public Builder clearModelVersions() {
        if (modelVersionsBuilder_ == null) {
          modelVersions_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          modelVersionsBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .clarifai.api.ModelVersion model_versions = 2 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public Builder removeModelVersions(int index) {
        if (modelVersionsBuilder_ == null) {
          ensureModelVersionsIsMutable();
          modelVersions_.remove(index);
          onChanged();
        } else {
          modelVersionsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .clarifai.api.ModelVersion model_versions = 2 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersion.Builder getModelVersionsBuilder(
          int index) {
        return getModelVersionsFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .clarifai.api.ModelVersion model_versions = 2 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersionOrBuilder getModelVersionsOrBuilder(
          int index) {
        if (modelVersionsBuilder_ == null) {
          return modelVersions_.get(index);  } else {
          return modelVersionsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .clarifai.api.ModelVersion model_versions = 2 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public java.util.List 
           getModelVersionsOrBuilderList() {
        if (modelVersionsBuilder_ != null) {
          return modelVersionsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(modelVersions_);
        }
      }
      /**
       * repeated .clarifai.api.ModelVersion model_versions = 2 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersion.Builder addModelVersionsBuilder() {
        return getModelVersionsFieldBuilder().addBuilder(
            clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersion.getDefaultInstance());
      }
      /**
       * repeated .clarifai.api.ModelVersion model_versions = 2 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersion.Builder addModelVersionsBuilder(
          int index) {
        return getModelVersionsFieldBuilder().addBuilder(
            index, clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersion.getDefaultInstance());
      }
      /**
       * repeated .clarifai.api.ModelVersion model_versions = 2 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public java.util.List 
           getModelVersionsBuilderList() {
        return getModelVersionsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersion, clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersion.Builder, clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersionOrBuilder> 
          getModelVersionsFieldBuilder() {
        if (modelVersionsBuilder_ == null) {
          modelVersionsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersion, clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersion.Builder, clarifai2.internal.grpc.api.ModelVersionOuterClass.ModelVersionOrBuilder>(
                  modelVersions_,
                  ((bitField0_ & 0x00000002) == 0x00000002),
                  getParentForChildren(),
                  isClean());
          modelVersions_ = null;
        }
        return modelVersionsBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:clarifai.api.MultiModelVersionResponse)
    }

    // @@protoc_insertion_point(class_scope:clarifai.api.MultiModelVersionResponse)
    private static final clarifai2.internal.grpc.api.ModelVersionOuterClass.MultiModelVersionResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new clarifai2.internal.grpc.api.ModelVersionOuterClass.MultiModelVersionResponse();
    }

    public static clarifai2.internal.grpc.api.ModelVersionOuterClass.MultiModelVersionResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public clarifai2.internal.grpc.api.ModelVersionOuterClass.MultiModelVersionResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface LabelCountOrBuilder extends
      // @@protoc_insertion_point(interface_extends:clarifai.api.LabelCount)
      com.google.protobuf.MessageOrBuilder {

    /**
     * string concept_name = 1;
     */
    java.lang.String getConceptName();
    /**
     * string concept_name = 1;
     */
    com.google.protobuf.ByteString
        getConceptNameBytes();

    /**
     * uint32 count = 2;
     */
    int getCount();
  }
  /**
   * Protobuf type {@code clarifai.api.LabelCount}
   */
  public  static final class LabelCount extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:clarifai.api.LabelCount)
      LabelCountOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use LabelCount.newBuilder() to construct.
    private LabelCount(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private LabelCount() {
      conceptName_ = "";
      count_ = 0;
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private LabelCount(
        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;
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

              conceptName_ = s;
              break;
            }
            case 16: {

              count_ = input.readUInt32();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_LabelCount_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_LabelCount_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelCount.class, clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelCount.Builder.class);
    }

    public static final int CONCEPT_NAME_FIELD_NUMBER = 1;
    private volatile java.lang.Object conceptName_;
    /**
     * string concept_name = 1;
     */
    public java.lang.String getConceptName() {
      java.lang.Object ref = conceptName_;
      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();
        conceptName_ = s;
        return s;
      }
    }
    /**
     * string concept_name = 1;
     */
    public com.google.protobuf.ByteString
        getConceptNameBytes() {
      java.lang.Object ref = conceptName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        conceptName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int COUNT_FIELD_NUMBER = 2;
    private int count_;
    /**
     * uint32 count = 2;
     */
    public int getCount() {
      return count_;
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getConceptNameBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, conceptName_);
      }
      if (count_ != 0) {
        output.writeUInt32(2, count_);
      }
      unknownFields.writeTo(output);
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!getConceptNameBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, conceptName_);
      }
      if (count_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(2, count_);
      }
      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 clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelCount)) {
        return super.equals(obj);
      }
      clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelCount other = (clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelCount) obj;

      boolean result = true;
      result = result && getConceptName()
          .equals(other.getConceptName());
      result = result && (getCount()
          == other.getCount());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

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

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

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelCount prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code clarifai.api.LabelCount}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:clarifai.api.LabelCount)
        clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelCountOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_LabelCount_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_LabelCount_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelCount.class, clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelCount.Builder.class);
      }

      // Construct using clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelCount.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        conceptName_ = "";

        count_ = 0;

        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_LabelCount_descriptor;
      }

      public clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelCount getDefaultInstanceForType() {
        return clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelCount.getDefaultInstance();
      }

      public clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelCount build() {
        clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelCount result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelCount buildPartial() {
        clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelCount result = new clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelCount(this);
        result.conceptName_ = conceptName_;
        result.count_ = count_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelCount) {
          return mergeFrom((clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelCount)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelCount other) {
        if (other == clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelCount.getDefaultInstance()) return this;
        if (!other.getConceptName().isEmpty()) {
          conceptName_ = other.conceptName_;
          onChanged();
        }
        if (other.getCount() != 0) {
          setCount(other.getCount());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelCount parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelCount) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object conceptName_ = "";
      /**
       * string concept_name = 1;
       */
      public java.lang.String getConceptName() {
        java.lang.Object ref = conceptName_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          conceptName_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string concept_name = 1;
       */
      public com.google.protobuf.ByteString
          getConceptNameBytes() {
        java.lang.Object ref = conceptName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          conceptName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string concept_name = 1;
       */
      public Builder setConceptName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        conceptName_ = value;
        onChanged();
        return this;
      }
      /**
       * string concept_name = 1;
       */
      public Builder clearConceptName() {
        
        conceptName_ = getDefaultInstance().getConceptName();
        onChanged();
        return this;
      }
      /**
       * string concept_name = 1;
       */
      public Builder setConceptNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        conceptName_ = value;
        onChanged();
        return this;
      }

      private int count_ ;
      /**
       * uint32 count = 2;
       */
      public int getCount() {
        return count_;
      }
      /**
       * uint32 count = 2;
       */
      public Builder setCount(int value) {
        
        count_ = value;
        onChanged();
        return this;
      }
      /**
       * uint32 count = 2;
       */
      public Builder clearCount() {
        
        count_ = 0;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:clarifai.api.LabelCount)
    }

    // @@protoc_insertion_point(class_scope:clarifai.api.LabelCount)
    private static final clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelCount DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelCount();
    }

    public static clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelCount getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelCount getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface LabelDistributionOrBuilder extends
      // @@protoc_insertion_point(interface_extends:clarifai.api.LabelDistribution)
      com.google.protobuf.MessageOrBuilder {

    /**
     * repeated .clarifai.api.LabelCount positive_label_counts = 1;
     */
    java.util.List 
        getPositiveLabelCountsList();
    /**
     * repeated .clarifai.api.LabelCount positive_label_counts = 1;
     */
    clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelCount getPositiveLabelCounts(int index);
    /**
     * repeated .clarifai.api.LabelCount positive_label_counts = 1;
     */
    int getPositiveLabelCountsCount();
    /**
     * repeated .clarifai.api.LabelCount positive_label_counts = 1;
     */
    java.util.List 
        getPositiveLabelCountsOrBuilderList();
    /**
     * repeated .clarifai.api.LabelCount positive_label_counts = 1;
     */
    clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelCountOrBuilder getPositiveLabelCountsOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code clarifai.api.LabelDistribution}
   */
  public  static final class LabelDistribution extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:clarifai.api.LabelDistribution)
      LabelDistributionOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use LabelDistribution.newBuilder() to construct.
    private LabelDistribution(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private LabelDistribution() {
      positiveLabelCounts_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private LabelDistribution(
        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;
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                positiveLabelCounts_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000001;
              }
              positiveLabelCounts_.add(
                  input.readMessage(clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelCount.parser(), extensionRegistry));
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
          positiveLabelCounts_ = java.util.Collections.unmodifiableList(positiveLabelCounts_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_LabelDistribution_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_LabelDistribution_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelDistribution.class, clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelDistribution.Builder.class);
    }

    public static final int POSITIVE_LABEL_COUNTS_FIELD_NUMBER = 1;
    private java.util.List positiveLabelCounts_;
    /**
     * repeated .clarifai.api.LabelCount positive_label_counts = 1;
     */
    public java.util.List getPositiveLabelCountsList() {
      return positiveLabelCounts_;
    }
    /**
     * repeated .clarifai.api.LabelCount positive_label_counts = 1;
     */
    public java.util.List 
        getPositiveLabelCountsOrBuilderList() {
      return positiveLabelCounts_;
    }
    /**
     * repeated .clarifai.api.LabelCount positive_label_counts = 1;
     */
    public int getPositiveLabelCountsCount() {
      return positiveLabelCounts_.size();
    }
    /**
     * repeated .clarifai.api.LabelCount positive_label_counts = 1;
     */
    public clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelCount getPositiveLabelCounts(int index) {
      return positiveLabelCounts_.get(index);
    }
    /**
     * repeated .clarifai.api.LabelCount positive_label_counts = 1;
     */
    public clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelCountOrBuilder getPositiveLabelCountsOrBuilder(
        int index) {
      return positiveLabelCounts_.get(index);
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

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

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < positiveLabelCounts_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, positiveLabelCounts_.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 clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelDistribution)) {
        return super.equals(obj);
      }
      clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelDistribution other = (clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelDistribution) obj;

      boolean result = true;
      result = result && getPositiveLabelCountsList()
          .equals(other.getPositiveLabelCountsList());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

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

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

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelDistribution prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code clarifai.api.LabelDistribution}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:clarifai.api.LabelDistribution)
        clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelDistributionOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_LabelDistribution_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_LabelDistribution_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelDistribution.class, clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelDistribution.Builder.class);
      }

      // Construct using clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelDistribution.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getPositiveLabelCountsFieldBuilder();
        }
      }
      public Builder clear() {
        super.clear();
        if (positiveLabelCountsBuilder_ == null) {
          positiveLabelCounts_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          positiveLabelCountsBuilder_.clear();
        }
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_LabelDistribution_descriptor;
      }

      public clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelDistribution getDefaultInstanceForType() {
        return clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelDistribution.getDefaultInstance();
      }

      public clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelDistribution build() {
        clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelDistribution result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelDistribution buildPartial() {
        clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelDistribution result = new clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelDistribution(this);
        int from_bitField0_ = bitField0_;
        if (positiveLabelCountsBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            positiveLabelCounts_ = java.util.Collections.unmodifiableList(positiveLabelCounts_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.positiveLabelCounts_ = positiveLabelCounts_;
        } else {
          result.positiveLabelCounts_ = positiveLabelCountsBuilder_.build();
        }
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelDistribution) {
          return mergeFrom((clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelDistribution)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelDistribution other) {
        if (other == clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelDistribution.getDefaultInstance()) return this;
        if (positiveLabelCountsBuilder_ == null) {
          if (!other.positiveLabelCounts_.isEmpty()) {
            if (positiveLabelCounts_.isEmpty()) {
              positiveLabelCounts_ = other.positiveLabelCounts_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensurePositiveLabelCountsIsMutable();
              positiveLabelCounts_.addAll(other.positiveLabelCounts_);
            }
            onChanged();
          }
        } else {
          if (!other.positiveLabelCounts_.isEmpty()) {
            if (positiveLabelCountsBuilder_.isEmpty()) {
              positiveLabelCountsBuilder_.dispose();
              positiveLabelCountsBuilder_ = null;
              positiveLabelCounts_ = other.positiveLabelCounts_;
              bitField0_ = (bitField0_ & ~0x00000001);
              positiveLabelCountsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getPositiveLabelCountsFieldBuilder() : null;
            } else {
              positiveLabelCountsBuilder_.addAllMessages(other.positiveLabelCounts_);
            }
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelDistribution parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelDistribution) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

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

      private com.google.protobuf.RepeatedFieldBuilderV3<
          clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelCount, clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelCount.Builder, clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelCountOrBuilder> positiveLabelCountsBuilder_;

      /**
       * repeated .clarifai.api.LabelCount positive_label_counts = 1;
       */
      public java.util.List getPositiveLabelCountsList() {
        if (positiveLabelCountsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(positiveLabelCounts_);
        } else {
          return positiveLabelCountsBuilder_.getMessageList();
        }
      }
      /**
       * repeated .clarifai.api.LabelCount positive_label_counts = 1;
       */
      public int getPositiveLabelCountsCount() {
        if (positiveLabelCountsBuilder_ == null) {
          return positiveLabelCounts_.size();
        } else {
          return positiveLabelCountsBuilder_.getCount();
        }
      }
      /**
       * repeated .clarifai.api.LabelCount positive_label_counts = 1;
       */
      public clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelCount getPositiveLabelCounts(int index) {
        if (positiveLabelCountsBuilder_ == null) {
          return positiveLabelCounts_.get(index);
        } else {
          return positiveLabelCountsBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .clarifai.api.LabelCount positive_label_counts = 1;
       */
      public Builder setPositiveLabelCounts(
          int index, clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelCount value) {
        if (positiveLabelCountsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePositiveLabelCountsIsMutable();
          positiveLabelCounts_.set(index, value);
          onChanged();
        } else {
          positiveLabelCountsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .clarifai.api.LabelCount positive_label_counts = 1;
       */
      public Builder setPositiveLabelCounts(
          int index, clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelCount.Builder builderForValue) {
        if (positiveLabelCountsBuilder_ == null) {
          ensurePositiveLabelCountsIsMutable();
          positiveLabelCounts_.set(index, builderForValue.build());
          onChanged();
        } else {
          positiveLabelCountsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .clarifai.api.LabelCount positive_label_counts = 1;
       */
      public Builder addPositiveLabelCounts(clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelCount value) {
        if (positiveLabelCountsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePositiveLabelCountsIsMutable();
          positiveLabelCounts_.add(value);
          onChanged();
        } else {
          positiveLabelCountsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .clarifai.api.LabelCount positive_label_counts = 1;
       */
      public Builder addPositiveLabelCounts(
          int index, clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelCount value) {
        if (positiveLabelCountsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePositiveLabelCountsIsMutable();
          positiveLabelCounts_.add(index, value);
          onChanged();
        } else {
          positiveLabelCountsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .clarifai.api.LabelCount positive_label_counts = 1;
       */
      public Builder addPositiveLabelCounts(
          clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelCount.Builder builderForValue) {
        if (positiveLabelCountsBuilder_ == null) {
          ensurePositiveLabelCountsIsMutable();
          positiveLabelCounts_.add(builderForValue.build());
          onChanged();
        } else {
          positiveLabelCountsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .clarifai.api.LabelCount positive_label_counts = 1;
       */
      public Builder addPositiveLabelCounts(
          int index, clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelCount.Builder builderForValue) {
        if (positiveLabelCountsBuilder_ == null) {
          ensurePositiveLabelCountsIsMutable();
          positiveLabelCounts_.add(index, builderForValue.build());
          onChanged();
        } else {
          positiveLabelCountsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .clarifai.api.LabelCount positive_label_counts = 1;
       */
      public Builder addAllPositiveLabelCounts(
          java.lang.Iterable values) {
        if (positiveLabelCountsBuilder_ == null) {
          ensurePositiveLabelCountsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, positiveLabelCounts_);
          onChanged();
        } else {
          positiveLabelCountsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .clarifai.api.LabelCount positive_label_counts = 1;
       */
      public Builder clearPositiveLabelCounts() {
        if (positiveLabelCountsBuilder_ == null) {
          positiveLabelCounts_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          positiveLabelCountsBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .clarifai.api.LabelCount positive_label_counts = 1;
       */
      public Builder removePositiveLabelCounts(int index) {
        if (positiveLabelCountsBuilder_ == null) {
          ensurePositiveLabelCountsIsMutable();
          positiveLabelCounts_.remove(index);
          onChanged();
        } else {
          positiveLabelCountsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .clarifai.api.LabelCount positive_label_counts = 1;
       */
      public clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelCount.Builder getPositiveLabelCountsBuilder(
          int index) {
        return getPositiveLabelCountsFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .clarifai.api.LabelCount positive_label_counts = 1;
       */
      public clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelCountOrBuilder getPositiveLabelCountsOrBuilder(
          int index) {
        if (positiveLabelCountsBuilder_ == null) {
          return positiveLabelCounts_.get(index);  } else {
          return positiveLabelCountsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .clarifai.api.LabelCount positive_label_counts = 1;
       */
      public java.util.List 
           getPositiveLabelCountsOrBuilderList() {
        if (positiveLabelCountsBuilder_ != null) {
          return positiveLabelCountsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(positiveLabelCounts_);
        }
      }
      /**
       * repeated .clarifai.api.LabelCount positive_label_counts = 1;
       */
      public clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelCount.Builder addPositiveLabelCountsBuilder() {
        return getPositiveLabelCountsFieldBuilder().addBuilder(
            clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelCount.getDefaultInstance());
      }
      /**
       * repeated .clarifai.api.LabelCount positive_label_counts = 1;
       */
      public clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelCount.Builder addPositiveLabelCountsBuilder(
          int index) {
        return getPositiveLabelCountsFieldBuilder().addBuilder(
            index, clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelCount.getDefaultInstance());
      }
      /**
       * repeated .clarifai.api.LabelCount positive_label_counts = 1;
       */
      public java.util.List 
           getPositiveLabelCountsBuilderList() {
        return getPositiveLabelCountsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelCount, clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelCount.Builder, clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelCountOrBuilder> 
          getPositiveLabelCountsFieldBuilder() {
        if (positiveLabelCountsBuilder_ == null) {
          positiveLabelCountsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelCount, clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelCount.Builder, clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelCountOrBuilder>(
                  positiveLabelCounts_,
                  ((bitField0_ & 0x00000001) == 0x00000001),
                  getParentForChildren(),
                  isClean());
          positiveLabelCounts_ = null;
        }
        return positiveLabelCountsBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:clarifai.api.LabelDistribution)
    }

    // @@protoc_insertion_point(class_scope:clarifai.api.LabelDistribution)
    private static final clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelDistribution DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelDistribution();
    }

    public static clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelDistribution getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelDistribution getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface CooccurrenceMatrixEntryOrBuilder extends
      // @@protoc_insertion_point(interface_extends:clarifai.api.CooccurrenceMatrixEntry)
      com.google.protobuf.MessageOrBuilder {

    /**
     * string row = 1;
     */
    java.lang.String getRow();
    /**
     * string row = 1;
     */
    com.google.protobuf.ByteString
        getRowBytes();

    /**
     * string col = 2;
     */
    java.lang.String getCol();
    /**
     * string col = 2;
     */
    com.google.protobuf.ByteString
        getColBytes();

    /**
     * uint32 count = 3;
     */
    int getCount();
  }
  /**
   * Protobuf type {@code clarifai.api.CooccurrenceMatrixEntry}
   */
  public  static final class CooccurrenceMatrixEntry extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:clarifai.api.CooccurrenceMatrixEntry)
      CooccurrenceMatrixEntryOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use CooccurrenceMatrixEntry.newBuilder() to construct.
    private CooccurrenceMatrixEntry(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private CooccurrenceMatrixEntry() {
      row_ = "";
      col_ = "";
      count_ = 0;
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private CooccurrenceMatrixEntry(
        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;
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

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

              col_ = s;
              break;
            }
            case 24: {

              count_ = input.readUInt32();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_CooccurrenceMatrixEntry_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_CooccurrenceMatrixEntry_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrixEntry.class, clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrixEntry.Builder.class);
    }

    public static final int ROW_FIELD_NUMBER = 1;
    private volatile java.lang.Object row_;
    /**
     * string row = 1;
     */
    public java.lang.String getRow() {
      java.lang.Object ref = row_;
      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();
        row_ = s;
        return s;
      }
    }
    /**
     * string row = 1;
     */
    public com.google.protobuf.ByteString
        getRowBytes() {
      java.lang.Object ref = row_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        row_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int COL_FIELD_NUMBER = 2;
    private volatile java.lang.Object col_;
    /**
     * string col = 2;
     */
    public java.lang.String getCol() {
      java.lang.Object ref = col_;
      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();
        col_ = s;
        return s;
      }
    }
    /**
     * string col = 2;
     */
    public com.google.protobuf.ByteString
        getColBytes() {
      java.lang.Object ref = col_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        col_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int COUNT_FIELD_NUMBER = 3;
    private int count_;
    /**
     * uint32 count = 3;
     */
    public int getCount() {
      return count_;
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getRowBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, row_);
      }
      if (!getColBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, col_);
      }
      if (count_ != 0) {
        output.writeUInt32(3, count_);
      }
      unknownFields.writeTo(output);
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!getRowBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, row_);
      }
      if (!getColBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, col_);
      }
      if (count_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(3, count_);
      }
      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 clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrixEntry)) {
        return super.equals(obj);
      }
      clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrixEntry other = (clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrixEntry) obj;

      boolean result = true;
      result = result && getRow()
          .equals(other.getRow());
      result = result && getCol()
          .equals(other.getCol());
      result = result && (getCount()
          == other.getCount());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + ROW_FIELD_NUMBER;
      hash = (53 * hash) + getRow().hashCode();
      hash = (37 * hash) + COL_FIELD_NUMBER;
      hash = (53 * hash) + getCol().hashCode();
      hash = (37 * hash) + COUNT_FIELD_NUMBER;
      hash = (53 * hash) + getCount();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrixEntry prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code clarifai.api.CooccurrenceMatrixEntry}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:clarifai.api.CooccurrenceMatrixEntry)
        clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrixEntryOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_CooccurrenceMatrixEntry_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_CooccurrenceMatrixEntry_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrixEntry.class, clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrixEntry.Builder.class);
      }

      // Construct using clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrixEntry.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        row_ = "";

        col_ = "";

        count_ = 0;

        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_CooccurrenceMatrixEntry_descriptor;
      }

      public clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrixEntry getDefaultInstanceForType() {
        return clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrixEntry.getDefaultInstance();
      }

      public clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrixEntry build() {
        clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrixEntry result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrixEntry buildPartial() {
        clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrixEntry result = new clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrixEntry(this);
        result.row_ = row_;
        result.col_ = col_;
        result.count_ = count_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrixEntry) {
          return mergeFrom((clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrixEntry)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrixEntry other) {
        if (other == clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrixEntry.getDefaultInstance()) return this;
        if (!other.getRow().isEmpty()) {
          row_ = other.row_;
          onChanged();
        }
        if (!other.getCol().isEmpty()) {
          col_ = other.col_;
          onChanged();
        }
        if (other.getCount() != 0) {
          setCount(other.getCount());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrixEntry parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrixEntry) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object row_ = "";
      /**
       * string row = 1;
       */
      public java.lang.String getRow() {
        java.lang.Object ref = row_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          row_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string row = 1;
       */
      public com.google.protobuf.ByteString
          getRowBytes() {
        java.lang.Object ref = row_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          row_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string row = 1;
       */
      public Builder setRow(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        row_ = value;
        onChanged();
        return this;
      }
      /**
       * string row = 1;
       */
      public Builder clearRow() {
        
        row_ = getDefaultInstance().getRow();
        onChanged();
        return this;
      }
      /**
       * string row = 1;
       */
      public Builder setRowBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        row_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object col_ = "";
      /**
       * string col = 2;
       */
      public java.lang.String getCol() {
        java.lang.Object ref = col_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          col_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string col = 2;
       */
      public com.google.protobuf.ByteString
          getColBytes() {
        java.lang.Object ref = col_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          col_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string col = 2;
       */
      public Builder setCol(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        col_ = value;
        onChanged();
        return this;
      }
      /**
       * string col = 2;
       */
      public Builder clearCol() {
        
        col_ = getDefaultInstance().getCol();
        onChanged();
        return this;
      }
      /**
       * string col = 2;
       */
      public Builder setColBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        col_ = value;
        onChanged();
        return this;
      }

      private int count_ ;
      /**
       * uint32 count = 3;
       */
      public int getCount() {
        return count_;
      }
      /**
       * uint32 count = 3;
       */
      public Builder setCount(int value) {
        
        count_ = value;
        onChanged();
        return this;
      }
      /**
       * uint32 count = 3;
       */
      public Builder clearCount() {
        
        count_ = 0;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:clarifai.api.CooccurrenceMatrixEntry)
    }

    // @@protoc_insertion_point(class_scope:clarifai.api.CooccurrenceMatrixEntry)
    private static final clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrixEntry DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrixEntry();
    }

    public static clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrixEntry getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrixEntry getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface CooccurrenceMatrixOrBuilder extends
      // @@protoc_insertion_point(interface_extends:clarifai.api.CooccurrenceMatrix)
      com.google.protobuf.MessageOrBuilder {

    /**
     * repeated .clarifai.api.CooccurrenceMatrixEntry matrix = 1;
     */
    java.util.List 
        getMatrixList();
    /**
     * repeated .clarifai.api.CooccurrenceMatrixEntry matrix = 1;
     */
    clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrixEntry getMatrix(int index);
    /**
     * repeated .clarifai.api.CooccurrenceMatrixEntry matrix = 1;
     */
    int getMatrixCount();
    /**
     * repeated .clarifai.api.CooccurrenceMatrixEntry matrix = 1;
     */
    java.util.List 
        getMatrixOrBuilderList();
    /**
     * repeated .clarifai.api.CooccurrenceMatrixEntry matrix = 1;
     */
    clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrixEntryOrBuilder getMatrixOrBuilder(
        int index);

    /**
     * repeated string concept_ids = 2;
     */
    java.util.List
        getConceptIdsList();
    /**
     * repeated string concept_ids = 2;
     */
    int getConceptIdsCount();
    /**
     * repeated string concept_ids = 2;
     */
    java.lang.String getConceptIds(int index);
    /**
     * repeated string concept_ids = 2;
     */
    com.google.protobuf.ByteString
        getConceptIdsBytes(int index);
  }
  /**
   * Protobuf type {@code clarifai.api.CooccurrenceMatrix}
   */
  public  static final class CooccurrenceMatrix extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:clarifai.api.CooccurrenceMatrix)
      CooccurrenceMatrixOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use CooccurrenceMatrix.newBuilder() to construct.
    private CooccurrenceMatrix(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private CooccurrenceMatrix() {
      matrix_ = java.util.Collections.emptyList();
      conceptIds_ = com.google.protobuf.LazyStringArrayList.EMPTY;
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private CooccurrenceMatrix(
        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;
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                matrix_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000001;
              }
              matrix_.add(
                  input.readMessage(clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrixEntry.parser(), extensionRegistry));
              break;
            }
            case 18: {
              java.lang.String s = input.readStringRequireUtf8();
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                conceptIds_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000002;
              }
              conceptIds_.add(s);
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
          matrix_ = java.util.Collections.unmodifiableList(matrix_);
        }
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          conceptIds_ = conceptIds_.getUnmodifiableView();
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_CooccurrenceMatrix_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_CooccurrenceMatrix_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrix.class, clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrix.Builder.class);
    }

    public static final int MATRIX_FIELD_NUMBER = 1;
    private java.util.List matrix_;
    /**
     * repeated .clarifai.api.CooccurrenceMatrixEntry matrix = 1;
     */
    public java.util.List getMatrixList() {
      return matrix_;
    }
    /**
     * repeated .clarifai.api.CooccurrenceMatrixEntry matrix = 1;
     */
    public java.util.List 
        getMatrixOrBuilderList() {
      return matrix_;
    }
    /**
     * repeated .clarifai.api.CooccurrenceMatrixEntry matrix = 1;
     */
    public int getMatrixCount() {
      return matrix_.size();
    }
    /**
     * repeated .clarifai.api.CooccurrenceMatrixEntry matrix = 1;
     */
    public clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrixEntry getMatrix(int index) {
      return matrix_.get(index);
    }
    /**
     * repeated .clarifai.api.CooccurrenceMatrixEntry matrix = 1;
     */
    public clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrixEntryOrBuilder getMatrixOrBuilder(
        int index) {
      return matrix_.get(index);
    }

    public static final int CONCEPT_IDS_FIELD_NUMBER = 2;
    private com.google.protobuf.LazyStringList conceptIds_;
    /**
     * repeated string concept_ids = 2;
     */
    public com.google.protobuf.ProtocolStringList
        getConceptIdsList() {
      return conceptIds_;
    }
    /**
     * repeated string concept_ids = 2;
     */
    public int getConceptIdsCount() {
      return conceptIds_.size();
    }
    /**
     * repeated string concept_ids = 2;
     */
    public java.lang.String getConceptIds(int index) {
      return conceptIds_.get(index);
    }
    /**
     * repeated string concept_ids = 2;
     */
    public com.google.protobuf.ByteString
        getConceptIdsBytes(int index) {
      return conceptIds_.getByteString(index);
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < matrix_.size(); i++) {
        output.writeMessage(1, matrix_.get(i));
      }
      for (int i = 0; i < conceptIds_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, conceptIds_.getRaw(i));
      }
      unknownFields.writeTo(output);
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < matrix_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, matrix_.get(i));
      }
      {
        int dataSize = 0;
        for (int i = 0; i < conceptIds_.size(); i++) {
          dataSize += computeStringSizeNoTag(conceptIds_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getConceptIdsList().size();
      }
      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 clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrix)) {
        return super.equals(obj);
      }
      clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrix other = (clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrix) obj;

      boolean result = true;
      result = result && getMatrixList()
          .equals(other.getMatrixList());
      result = result && getConceptIdsList()
          .equals(other.getConceptIdsList());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getMatrixCount() > 0) {
        hash = (37 * hash) + MATRIX_FIELD_NUMBER;
        hash = (53 * hash) + getMatrixList().hashCode();
      }
      if (getConceptIdsCount() > 0) {
        hash = (37 * hash) + CONCEPT_IDS_FIELD_NUMBER;
        hash = (53 * hash) + getConceptIdsList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrix prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code clarifai.api.CooccurrenceMatrix}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:clarifai.api.CooccurrenceMatrix)
        clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrixOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_CooccurrenceMatrix_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_CooccurrenceMatrix_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrix.class, clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrix.Builder.class);
      }

      // Construct using clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrix.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getMatrixFieldBuilder();
        }
      }
      public Builder clear() {
        super.clear();
        if (matrixBuilder_ == null) {
          matrix_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          matrixBuilder_.clear();
        }
        conceptIds_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_CooccurrenceMatrix_descriptor;
      }

      public clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrix getDefaultInstanceForType() {
        return clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrix.getDefaultInstance();
      }

      public clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrix build() {
        clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrix result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrix buildPartial() {
        clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrix result = new clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrix(this);
        int from_bitField0_ = bitField0_;
        if (matrixBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            matrix_ = java.util.Collections.unmodifiableList(matrix_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.matrix_ = matrix_;
        } else {
          result.matrix_ = matrixBuilder_.build();
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          conceptIds_ = conceptIds_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000002);
        }
        result.conceptIds_ = conceptIds_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrix) {
          return mergeFrom((clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrix)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrix other) {
        if (other == clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrix.getDefaultInstance()) return this;
        if (matrixBuilder_ == null) {
          if (!other.matrix_.isEmpty()) {
            if (matrix_.isEmpty()) {
              matrix_ = other.matrix_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureMatrixIsMutable();
              matrix_.addAll(other.matrix_);
            }
            onChanged();
          }
        } else {
          if (!other.matrix_.isEmpty()) {
            if (matrixBuilder_.isEmpty()) {
              matrixBuilder_.dispose();
              matrixBuilder_ = null;
              matrix_ = other.matrix_;
              bitField0_ = (bitField0_ & ~0x00000001);
              matrixBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getMatrixFieldBuilder() : null;
            } else {
              matrixBuilder_.addAllMessages(other.matrix_);
            }
          }
        }
        if (!other.conceptIds_.isEmpty()) {
          if (conceptIds_.isEmpty()) {
            conceptIds_ = other.conceptIds_;
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            ensureConceptIdsIsMutable();
            conceptIds_.addAll(other.conceptIds_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrix parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrix) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

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

      private com.google.protobuf.RepeatedFieldBuilderV3<
          clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrixEntry, clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrixEntry.Builder, clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrixEntryOrBuilder> matrixBuilder_;

      /**
       * repeated .clarifai.api.CooccurrenceMatrixEntry matrix = 1;
       */
      public java.util.List getMatrixList() {
        if (matrixBuilder_ == null) {
          return java.util.Collections.unmodifiableList(matrix_);
        } else {
          return matrixBuilder_.getMessageList();
        }
      }
      /**
       * repeated .clarifai.api.CooccurrenceMatrixEntry matrix = 1;
       */
      public int getMatrixCount() {
        if (matrixBuilder_ == null) {
          return matrix_.size();
        } else {
          return matrixBuilder_.getCount();
        }
      }
      /**
       * repeated .clarifai.api.CooccurrenceMatrixEntry matrix = 1;
       */
      public clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrixEntry getMatrix(int index) {
        if (matrixBuilder_ == null) {
          return matrix_.get(index);
        } else {
          return matrixBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .clarifai.api.CooccurrenceMatrixEntry matrix = 1;
       */
      public Builder setMatrix(
          int index, clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrixEntry value) {
        if (matrixBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMatrixIsMutable();
          matrix_.set(index, value);
          onChanged();
        } else {
          matrixBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .clarifai.api.CooccurrenceMatrixEntry matrix = 1;
       */
      public Builder setMatrix(
          int index, clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrixEntry.Builder builderForValue) {
        if (matrixBuilder_ == null) {
          ensureMatrixIsMutable();
          matrix_.set(index, builderForValue.build());
          onChanged();
        } else {
          matrixBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .clarifai.api.CooccurrenceMatrixEntry matrix = 1;
       */
      public Builder addMatrix(clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrixEntry value) {
        if (matrixBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMatrixIsMutable();
          matrix_.add(value);
          onChanged();
        } else {
          matrixBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .clarifai.api.CooccurrenceMatrixEntry matrix = 1;
       */
      public Builder addMatrix(
          int index, clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrixEntry value) {
        if (matrixBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMatrixIsMutable();
          matrix_.add(index, value);
          onChanged();
        } else {
          matrixBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .clarifai.api.CooccurrenceMatrixEntry matrix = 1;
       */
      public Builder addMatrix(
          clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrixEntry.Builder builderForValue) {
        if (matrixBuilder_ == null) {
          ensureMatrixIsMutable();
          matrix_.add(builderForValue.build());
          onChanged();
        } else {
          matrixBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .clarifai.api.CooccurrenceMatrixEntry matrix = 1;
       */
      public Builder addMatrix(
          int index, clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrixEntry.Builder builderForValue) {
        if (matrixBuilder_ == null) {
          ensureMatrixIsMutable();
          matrix_.add(index, builderForValue.build());
          onChanged();
        } else {
          matrixBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .clarifai.api.CooccurrenceMatrixEntry matrix = 1;
       */
      public Builder addAllMatrix(
          java.lang.Iterable values) {
        if (matrixBuilder_ == null) {
          ensureMatrixIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, matrix_);
          onChanged();
        } else {
          matrixBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .clarifai.api.CooccurrenceMatrixEntry matrix = 1;
       */
      public Builder clearMatrix() {
        if (matrixBuilder_ == null) {
          matrix_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          matrixBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .clarifai.api.CooccurrenceMatrixEntry matrix = 1;
       */
      public Builder removeMatrix(int index) {
        if (matrixBuilder_ == null) {
          ensureMatrixIsMutable();
          matrix_.remove(index);
          onChanged();
        } else {
          matrixBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .clarifai.api.CooccurrenceMatrixEntry matrix = 1;
       */
      public clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrixEntry.Builder getMatrixBuilder(
          int index) {
        return getMatrixFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .clarifai.api.CooccurrenceMatrixEntry matrix = 1;
       */
      public clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrixEntryOrBuilder getMatrixOrBuilder(
          int index) {
        if (matrixBuilder_ == null) {
          return matrix_.get(index);  } else {
          return matrixBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .clarifai.api.CooccurrenceMatrixEntry matrix = 1;
       */
      public java.util.List 
           getMatrixOrBuilderList() {
        if (matrixBuilder_ != null) {
          return matrixBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(matrix_);
        }
      }
      /**
       * repeated .clarifai.api.CooccurrenceMatrixEntry matrix = 1;
       */
      public clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrixEntry.Builder addMatrixBuilder() {
        return getMatrixFieldBuilder().addBuilder(
            clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrixEntry.getDefaultInstance());
      }
      /**
       * repeated .clarifai.api.CooccurrenceMatrixEntry matrix = 1;
       */
      public clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrixEntry.Builder addMatrixBuilder(
          int index) {
        return getMatrixFieldBuilder().addBuilder(
            index, clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrixEntry.getDefaultInstance());
      }
      /**
       * repeated .clarifai.api.CooccurrenceMatrixEntry matrix = 1;
       */
      public java.util.List 
           getMatrixBuilderList() {
        return getMatrixFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrixEntry, clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrixEntry.Builder, clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrixEntryOrBuilder> 
          getMatrixFieldBuilder() {
        if (matrixBuilder_ == null) {
          matrixBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrixEntry, clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrixEntry.Builder, clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrixEntryOrBuilder>(
                  matrix_,
                  ((bitField0_ & 0x00000001) == 0x00000001),
                  getParentForChildren(),
                  isClean());
          matrix_ = null;
        }
        return matrixBuilder_;
      }

      private com.google.protobuf.LazyStringList conceptIds_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureConceptIdsIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          conceptIds_ = new com.google.protobuf.LazyStringArrayList(conceptIds_);
          bitField0_ |= 0x00000002;
         }
      }
      /**
       * repeated string concept_ids = 2;
       */
      public com.google.protobuf.ProtocolStringList
          getConceptIdsList() {
        return conceptIds_.getUnmodifiableView();
      }
      /**
       * repeated string concept_ids = 2;
       */
      public int getConceptIdsCount() {
        return conceptIds_.size();
      }
      /**
       * repeated string concept_ids = 2;
       */
      public java.lang.String getConceptIds(int index) {
        return conceptIds_.get(index);
      }
      /**
       * repeated string concept_ids = 2;
       */
      public com.google.protobuf.ByteString
          getConceptIdsBytes(int index) {
        return conceptIds_.getByteString(index);
      }
      /**
       * repeated string concept_ids = 2;
       */
      public Builder setConceptIds(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureConceptIdsIsMutable();
        conceptIds_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * repeated string concept_ids = 2;
       */
      public Builder addConceptIds(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureConceptIdsIsMutable();
        conceptIds_.add(value);
        onChanged();
        return this;
      }
      /**
       * repeated string concept_ids = 2;
       */
      public Builder addAllConceptIds(
          java.lang.Iterable values) {
        ensureConceptIdsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, conceptIds_);
        onChanged();
        return this;
      }
      /**
       * repeated string concept_ids = 2;
       */
      public Builder clearConceptIds() {
        conceptIds_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * repeated string concept_ids = 2;
       */
      public Builder addConceptIdsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureConceptIdsIsMutable();
        conceptIds_.add(value);
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:clarifai.api.CooccurrenceMatrix)
    }

    // @@protoc_insertion_point(class_scope:clarifai.api.CooccurrenceMatrix)
    private static final clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrix DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrix();
    }

    public static clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrix getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrix getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ConfusionMatrixEntryOrBuilder extends
      // @@protoc_insertion_point(interface_extends:clarifai.api.ConfusionMatrixEntry)
      com.google.protobuf.MessageOrBuilder {

    /**
     * string predicted = 1;
     */
    java.lang.String getPredicted();
    /**
     * string predicted = 1;
     */
    com.google.protobuf.ByteString
        getPredictedBytes();

    /**
     * string actual = 2;
     */
    java.lang.String getActual();
    /**
     * string actual = 2;
     */
    com.google.protobuf.ByteString
        getActualBytes();

    /**
     * float value = 4 [(.clarifai.api.utils.cl_show_if_empty) = true];
     */
    float getValue();
  }
  /**
   * Protobuf type {@code clarifai.api.ConfusionMatrixEntry}
   */
  public  static final class ConfusionMatrixEntry extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:clarifai.api.ConfusionMatrixEntry)
      ConfusionMatrixEntryOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ConfusionMatrixEntry.newBuilder() to construct.
    private ConfusionMatrixEntry(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private ConfusionMatrixEntry() {
      predicted_ = "";
      actual_ = "";
      value_ = 0F;
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private ConfusionMatrixEntry(
        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;
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

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

              actual_ = s;
              break;
            }
            case 37: {

              value_ = input.readFloat();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_ConfusionMatrixEntry_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_ConfusionMatrixEntry_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrixEntry.class, clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrixEntry.Builder.class);
    }

    public static final int PREDICTED_FIELD_NUMBER = 1;
    private volatile java.lang.Object predicted_;
    /**
     * string predicted = 1;
     */
    public java.lang.String getPredicted() {
      java.lang.Object ref = predicted_;
      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();
        predicted_ = s;
        return s;
      }
    }
    /**
     * string predicted = 1;
     */
    public com.google.protobuf.ByteString
        getPredictedBytes() {
      java.lang.Object ref = predicted_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        predicted_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int ACTUAL_FIELD_NUMBER = 2;
    private volatile java.lang.Object actual_;
    /**
     * string actual = 2;
     */
    public java.lang.String getActual() {
      java.lang.Object ref = actual_;
      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();
        actual_ = s;
        return s;
      }
    }
    /**
     * string actual = 2;
     */
    public com.google.protobuf.ByteString
        getActualBytes() {
      java.lang.Object ref = actual_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        actual_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int VALUE_FIELD_NUMBER = 4;
    private float value_;
    /**
     * float value = 4 [(.clarifai.api.utils.cl_show_if_empty) = true];
     */
    public float getValue() {
      return value_;
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getPredictedBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, predicted_);
      }
      if (!getActualBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, actual_);
      }
      if (value_ != 0F) {
        output.writeFloat(4, value_);
      }
      unknownFields.writeTo(output);
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!getPredictedBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, predicted_);
      }
      if (!getActualBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, actual_);
      }
      if (value_ != 0F) {
        size += com.google.protobuf.CodedOutputStream
          .computeFloatSize(4, 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 clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrixEntry)) {
        return super.equals(obj);
      }
      clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrixEntry other = (clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrixEntry) obj;

      boolean result = true;
      result = result && getPredicted()
          .equals(other.getPredicted());
      result = result && getActual()
          .equals(other.getActual());
      result = result && (
          java.lang.Float.floatToIntBits(getValue())
          == java.lang.Float.floatToIntBits(
              other.getValue()));
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

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

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

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrixEntry prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code clarifai.api.ConfusionMatrixEntry}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:clarifai.api.ConfusionMatrixEntry)
        clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrixEntryOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_ConfusionMatrixEntry_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_ConfusionMatrixEntry_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrixEntry.class, clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrixEntry.Builder.class);
      }

      // Construct using clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrixEntry.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        predicted_ = "";

        actual_ = "";

        value_ = 0F;

        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_ConfusionMatrixEntry_descriptor;
      }

      public clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrixEntry getDefaultInstanceForType() {
        return clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrixEntry.getDefaultInstance();
      }

      public clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrixEntry build() {
        clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrixEntry result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrixEntry buildPartial() {
        clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrixEntry result = new clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrixEntry(this);
        result.predicted_ = predicted_;
        result.actual_ = actual_;
        result.value_ = value_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrixEntry) {
          return mergeFrom((clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrixEntry)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrixEntry other) {
        if (other == clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrixEntry.getDefaultInstance()) return this;
        if (!other.getPredicted().isEmpty()) {
          predicted_ = other.predicted_;
          onChanged();
        }
        if (!other.getActual().isEmpty()) {
          actual_ = other.actual_;
          onChanged();
        }
        if (other.getValue() != 0F) {
          setValue(other.getValue());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrixEntry parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrixEntry) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object predicted_ = "";
      /**
       * string predicted = 1;
       */
      public java.lang.String getPredicted() {
        java.lang.Object ref = predicted_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          predicted_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string predicted = 1;
       */
      public com.google.protobuf.ByteString
          getPredictedBytes() {
        java.lang.Object ref = predicted_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          predicted_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string predicted = 1;
       */
      public Builder setPredicted(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        predicted_ = value;
        onChanged();
        return this;
      }
      /**
       * string predicted = 1;
       */
      public Builder clearPredicted() {
        
        predicted_ = getDefaultInstance().getPredicted();
        onChanged();
        return this;
      }
      /**
       * string predicted = 1;
       */
      public Builder setPredictedBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        predicted_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object actual_ = "";
      /**
       * string actual = 2;
       */
      public java.lang.String getActual() {
        java.lang.Object ref = actual_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          actual_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string actual = 2;
       */
      public com.google.protobuf.ByteString
          getActualBytes() {
        java.lang.Object ref = actual_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          actual_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string actual = 2;
       */
      public Builder setActual(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        actual_ = value;
        onChanged();
        return this;
      }
      /**
       * string actual = 2;
       */
      public Builder clearActual() {
        
        actual_ = getDefaultInstance().getActual();
        onChanged();
        return this;
      }
      /**
       * string actual = 2;
       */
      public Builder setActualBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        actual_ = value;
        onChanged();
        return this;
      }

      private float value_ ;
      /**
       * float value = 4 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public float getValue() {
        return value_;
      }
      /**
       * float value = 4 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public Builder setValue(float value) {
        
        value_ = value;
        onChanged();
        return this;
      }
      /**
       * float value = 4 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public Builder clearValue() {
        
        value_ = 0F;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:clarifai.api.ConfusionMatrixEntry)
    }

    // @@protoc_insertion_point(class_scope:clarifai.api.ConfusionMatrixEntry)
    private static final clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrixEntry DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrixEntry();
    }

    public static clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrixEntry getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrixEntry getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ConfusionMatrixOrBuilder extends
      // @@protoc_insertion_point(interface_extends:clarifai.api.ConfusionMatrix)
      com.google.protobuf.MessageOrBuilder {

    /**
     * repeated .clarifai.api.ConfusionMatrixEntry matrix = 1;
     */
    java.util.List 
        getMatrixList();
    /**
     * repeated .clarifai.api.ConfusionMatrixEntry matrix = 1;
     */
    clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrixEntry getMatrix(int index);
    /**
     * repeated .clarifai.api.ConfusionMatrixEntry matrix = 1;
     */
    int getMatrixCount();
    /**
     * repeated .clarifai.api.ConfusionMatrixEntry matrix = 1;
     */
    java.util.List 
        getMatrixOrBuilderList();
    /**
     * repeated .clarifai.api.ConfusionMatrixEntry matrix = 1;
     */
    clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrixEntryOrBuilder getMatrixOrBuilder(
        int index);

    /**
     * repeated string concept_ids = 2;
     */
    java.util.List
        getConceptIdsList();
    /**
     * repeated string concept_ids = 2;
     */
    int getConceptIdsCount();
    /**
     * repeated string concept_ids = 2;
     */
    java.lang.String getConceptIds(int index);
    /**
     * repeated string concept_ids = 2;
     */
    com.google.protobuf.ByteString
        getConceptIdsBytes(int index);
  }
  /**
   * Protobuf type {@code clarifai.api.ConfusionMatrix}
   */
  public  static final class ConfusionMatrix extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:clarifai.api.ConfusionMatrix)
      ConfusionMatrixOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ConfusionMatrix.newBuilder() to construct.
    private ConfusionMatrix(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private ConfusionMatrix() {
      matrix_ = java.util.Collections.emptyList();
      conceptIds_ = com.google.protobuf.LazyStringArrayList.EMPTY;
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private ConfusionMatrix(
        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;
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                matrix_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000001;
              }
              matrix_.add(
                  input.readMessage(clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrixEntry.parser(), extensionRegistry));
              break;
            }
            case 18: {
              java.lang.String s = input.readStringRequireUtf8();
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                conceptIds_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000002;
              }
              conceptIds_.add(s);
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
          matrix_ = java.util.Collections.unmodifiableList(matrix_);
        }
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          conceptIds_ = conceptIds_.getUnmodifiableView();
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_ConfusionMatrix_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_ConfusionMatrix_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrix.class, clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrix.Builder.class);
    }

    public static final int MATRIX_FIELD_NUMBER = 1;
    private java.util.List matrix_;
    /**
     * repeated .clarifai.api.ConfusionMatrixEntry matrix = 1;
     */
    public java.util.List getMatrixList() {
      return matrix_;
    }
    /**
     * repeated .clarifai.api.ConfusionMatrixEntry matrix = 1;
     */
    public java.util.List 
        getMatrixOrBuilderList() {
      return matrix_;
    }
    /**
     * repeated .clarifai.api.ConfusionMatrixEntry matrix = 1;
     */
    public int getMatrixCount() {
      return matrix_.size();
    }
    /**
     * repeated .clarifai.api.ConfusionMatrixEntry matrix = 1;
     */
    public clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrixEntry getMatrix(int index) {
      return matrix_.get(index);
    }
    /**
     * repeated .clarifai.api.ConfusionMatrixEntry matrix = 1;
     */
    public clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrixEntryOrBuilder getMatrixOrBuilder(
        int index) {
      return matrix_.get(index);
    }

    public static final int CONCEPT_IDS_FIELD_NUMBER = 2;
    private com.google.protobuf.LazyStringList conceptIds_;
    /**
     * repeated string concept_ids = 2;
     */
    public com.google.protobuf.ProtocolStringList
        getConceptIdsList() {
      return conceptIds_;
    }
    /**
     * repeated string concept_ids = 2;
     */
    public int getConceptIdsCount() {
      return conceptIds_.size();
    }
    /**
     * repeated string concept_ids = 2;
     */
    public java.lang.String getConceptIds(int index) {
      return conceptIds_.get(index);
    }
    /**
     * repeated string concept_ids = 2;
     */
    public com.google.protobuf.ByteString
        getConceptIdsBytes(int index) {
      return conceptIds_.getByteString(index);
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < matrix_.size(); i++) {
        output.writeMessage(1, matrix_.get(i));
      }
      for (int i = 0; i < conceptIds_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, conceptIds_.getRaw(i));
      }
      unknownFields.writeTo(output);
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < matrix_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, matrix_.get(i));
      }
      {
        int dataSize = 0;
        for (int i = 0; i < conceptIds_.size(); i++) {
          dataSize += computeStringSizeNoTag(conceptIds_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getConceptIdsList().size();
      }
      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 clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrix)) {
        return super.equals(obj);
      }
      clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrix other = (clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrix) obj;

      boolean result = true;
      result = result && getMatrixList()
          .equals(other.getMatrixList());
      result = result && getConceptIdsList()
          .equals(other.getConceptIdsList());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getMatrixCount() > 0) {
        hash = (37 * hash) + MATRIX_FIELD_NUMBER;
        hash = (53 * hash) + getMatrixList().hashCode();
      }
      if (getConceptIdsCount() > 0) {
        hash = (37 * hash) + CONCEPT_IDS_FIELD_NUMBER;
        hash = (53 * hash) + getConceptIdsList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrix prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code clarifai.api.ConfusionMatrix}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:clarifai.api.ConfusionMatrix)
        clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrixOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_ConfusionMatrix_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_ConfusionMatrix_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrix.class, clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrix.Builder.class);
      }

      // Construct using clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrix.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getMatrixFieldBuilder();
        }
      }
      public Builder clear() {
        super.clear();
        if (matrixBuilder_ == null) {
          matrix_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          matrixBuilder_.clear();
        }
        conceptIds_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_ConfusionMatrix_descriptor;
      }

      public clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrix getDefaultInstanceForType() {
        return clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrix.getDefaultInstance();
      }

      public clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrix build() {
        clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrix result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrix buildPartial() {
        clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrix result = new clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrix(this);
        int from_bitField0_ = bitField0_;
        if (matrixBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            matrix_ = java.util.Collections.unmodifiableList(matrix_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.matrix_ = matrix_;
        } else {
          result.matrix_ = matrixBuilder_.build();
        }
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          conceptIds_ = conceptIds_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000002);
        }
        result.conceptIds_ = conceptIds_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrix) {
          return mergeFrom((clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrix)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrix other) {
        if (other == clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrix.getDefaultInstance()) return this;
        if (matrixBuilder_ == null) {
          if (!other.matrix_.isEmpty()) {
            if (matrix_.isEmpty()) {
              matrix_ = other.matrix_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureMatrixIsMutable();
              matrix_.addAll(other.matrix_);
            }
            onChanged();
          }
        } else {
          if (!other.matrix_.isEmpty()) {
            if (matrixBuilder_.isEmpty()) {
              matrixBuilder_.dispose();
              matrixBuilder_ = null;
              matrix_ = other.matrix_;
              bitField0_ = (bitField0_ & ~0x00000001);
              matrixBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getMatrixFieldBuilder() : null;
            } else {
              matrixBuilder_.addAllMessages(other.matrix_);
            }
          }
        }
        if (!other.conceptIds_.isEmpty()) {
          if (conceptIds_.isEmpty()) {
            conceptIds_ = other.conceptIds_;
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            ensureConceptIdsIsMutable();
            conceptIds_.addAll(other.conceptIds_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrix parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrix) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

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

      private com.google.protobuf.RepeatedFieldBuilderV3<
          clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrixEntry, clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrixEntry.Builder, clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrixEntryOrBuilder> matrixBuilder_;

      /**
       * repeated .clarifai.api.ConfusionMatrixEntry matrix = 1;
       */
      public java.util.List getMatrixList() {
        if (matrixBuilder_ == null) {
          return java.util.Collections.unmodifiableList(matrix_);
        } else {
          return matrixBuilder_.getMessageList();
        }
      }
      /**
       * repeated .clarifai.api.ConfusionMatrixEntry matrix = 1;
       */
      public int getMatrixCount() {
        if (matrixBuilder_ == null) {
          return matrix_.size();
        } else {
          return matrixBuilder_.getCount();
        }
      }
      /**
       * repeated .clarifai.api.ConfusionMatrixEntry matrix = 1;
       */
      public clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrixEntry getMatrix(int index) {
        if (matrixBuilder_ == null) {
          return matrix_.get(index);
        } else {
          return matrixBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .clarifai.api.ConfusionMatrixEntry matrix = 1;
       */
      public Builder setMatrix(
          int index, clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrixEntry value) {
        if (matrixBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMatrixIsMutable();
          matrix_.set(index, value);
          onChanged();
        } else {
          matrixBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .clarifai.api.ConfusionMatrixEntry matrix = 1;
       */
      public Builder setMatrix(
          int index, clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrixEntry.Builder builderForValue) {
        if (matrixBuilder_ == null) {
          ensureMatrixIsMutable();
          matrix_.set(index, builderForValue.build());
          onChanged();
        } else {
          matrixBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .clarifai.api.ConfusionMatrixEntry matrix = 1;
       */
      public Builder addMatrix(clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrixEntry value) {
        if (matrixBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMatrixIsMutable();
          matrix_.add(value);
          onChanged();
        } else {
          matrixBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .clarifai.api.ConfusionMatrixEntry matrix = 1;
       */
      public Builder addMatrix(
          int index, clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrixEntry value) {
        if (matrixBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMatrixIsMutable();
          matrix_.add(index, value);
          onChanged();
        } else {
          matrixBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .clarifai.api.ConfusionMatrixEntry matrix = 1;
       */
      public Builder addMatrix(
          clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrixEntry.Builder builderForValue) {
        if (matrixBuilder_ == null) {
          ensureMatrixIsMutable();
          matrix_.add(builderForValue.build());
          onChanged();
        } else {
          matrixBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .clarifai.api.ConfusionMatrixEntry matrix = 1;
       */
      public Builder addMatrix(
          int index, clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrixEntry.Builder builderForValue) {
        if (matrixBuilder_ == null) {
          ensureMatrixIsMutable();
          matrix_.add(index, builderForValue.build());
          onChanged();
        } else {
          matrixBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .clarifai.api.ConfusionMatrixEntry matrix = 1;
       */
      public Builder addAllMatrix(
          java.lang.Iterable values) {
        if (matrixBuilder_ == null) {
          ensureMatrixIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, matrix_);
          onChanged();
        } else {
          matrixBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .clarifai.api.ConfusionMatrixEntry matrix = 1;
       */
      public Builder clearMatrix() {
        if (matrixBuilder_ == null) {
          matrix_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          matrixBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .clarifai.api.ConfusionMatrixEntry matrix = 1;
       */
      public Builder removeMatrix(int index) {
        if (matrixBuilder_ == null) {
          ensureMatrixIsMutable();
          matrix_.remove(index);
          onChanged();
        } else {
          matrixBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .clarifai.api.ConfusionMatrixEntry matrix = 1;
       */
      public clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrixEntry.Builder getMatrixBuilder(
          int index) {
        return getMatrixFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .clarifai.api.ConfusionMatrixEntry matrix = 1;
       */
      public clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrixEntryOrBuilder getMatrixOrBuilder(
          int index) {
        if (matrixBuilder_ == null) {
          return matrix_.get(index);  } else {
          return matrixBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .clarifai.api.ConfusionMatrixEntry matrix = 1;
       */
      public java.util.List 
           getMatrixOrBuilderList() {
        if (matrixBuilder_ != null) {
          return matrixBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(matrix_);
        }
      }
      /**
       * repeated .clarifai.api.ConfusionMatrixEntry matrix = 1;
       */
      public clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrixEntry.Builder addMatrixBuilder() {
        return getMatrixFieldBuilder().addBuilder(
            clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrixEntry.getDefaultInstance());
      }
      /**
       * repeated .clarifai.api.ConfusionMatrixEntry matrix = 1;
       */
      public clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrixEntry.Builder addMatrixBuilder(
          int index) {
        return getMatrixFieldBuilder().addBuilder(
            index, clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrixEntry.getDefaultInstance());
      }
      /**
       * repeated .clarifai.api.ConfusionMatrixEntry matrix = 1;
       */
      public java.util.List 
           getMatrixBuilderList() {
        return getMatrixFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrixEntry, clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrixEntry.Builder, clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrixEntryOrBuilder> 
          getMatrixFieldBuilder() {
        if (matrixBuilder_ == null) {
          matrixBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrixEntry, clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrixEntry.Builder, clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrixEntryOrBuilder>(
                  matrix_,
                  ((bitField0_ & 0x00000001) == 0x00000001),
                  getParentForChildren(),
                  isClean());
          matrix_ = null;
        }
        return matrixBuilder_;
      }

      private com.google.protobuf.LazyStringList conceptIds_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureConceptIdsIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          conceptIds_ = new com.google.protobuf.LazyStringArrayList(conceptIds_);
          bitField0_ |= 0x00000002;
         }
      }
      /**
       * repeated string concept_ids = 2;
       */
      public com.google.protobuf.ProtocolStringList
          getConceptIdsList() {
        return conceptIds_.getUnmodifiableView();
      }
      /**
       * repeated string concept_ids = 2;
       */
      public int getConceptIdsCount() {
        return conceptIds_.size();
      }
      /**
       * repeated string concept_ids = 2;
       */
      public java.lang.String getConceptIds(int index) {
        return conceptIds_.get(index);
      }
      /**
       * repeated string concept_ids = 2;
       */
      public com.google.protobuf.ByteString
          getConceptIdsBytes(int index) {
        return conceptIds_.getByteString(index);
      }
      /**
       * repeated string concept_ids = 2;
       */
      public Builder setConceptIds(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureConceptIdsIsMutable();
        conceptIds_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * repeated string concept_ids = 2;
       */
      public Builder addConceptIds(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureConceptIdsIsMutable();
        conceptIds_.add(value);
        onChanged();
        return this;
      }
      /**
       * repeated string concept_ids = 2;
       */
      public Builder addAllConceptIds(
          java.lang.Iterable values) {
        ensureConceptIdsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, conceptIds_);
        onChanged();
        return this;
      }
      /**
       * repeated string concept_ids = 2;
       */
      public Builder clearConceptIds() {
        conceptIds_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * repeated string concept_ids = 2;
       */
      public Builder addConceptIdsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureConceptIdsIsMutable();
        conceptIds_.add(value);
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:clarifai.api.ConfusionMatrix)
    }

    // @@protoc_insertion_point(class_scope:clarifai.api.ConfusionMatrix)
    private static final clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrix DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrix();
    }

    public static clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrix getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrix getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ROCOrBuilder extends
      // @@protoc_insertion_point(interface_extends:clarifai.api.ROC)
      com.google.protobuf.MessageOrBuilder {

    /**
     * repeated float fpr = 1 [(.clarifai.api.utils.cl_show_if_empty) = true];
     */
    java.util.List getFprList();
    /**
     * repeated float fpr = 1 [(.clarifai.api.utils.cl_show_if_empty) = true];
     */
    int getFprCount();
    /**
     * repeated float fpr = 1 [(.clarifai.api.utils.cl_show_if_empty) = true];
     */
    float getFpr(int index);

    /**
     * repeated float tpr = 2 [(.clarifai.api.utils.cl_show_if_empty) = true];
     */
    java.util.List getTprList();
    /**
     * repeated float tpr = 2 [(.clarifai.api.utils.cl_show_if_empty) = true];
     */
    int getTprCount();
    /**
     * repeated float tpr = 2 [(.clarifai.api.utils.cl_show_if_empty) = true];
     */
    float getTpr(int index);

    /**
     * repeated float thresholds = 3 [(.clarifai.api.utils.cl_show_if_empty) = true];
     */
    java.util.List getThresholdsList();
    /**
     * repeated float thresholds = 3 [(.clarifai.api.utils.cl_show_if_empty) = true];
     */
    int getThresholdsCount();
    /**
     * repeated float thresholds = 3 [(.clarifai.api.utils.cl_show_if_empty) = true];
     */
    float getThresholds(int index);
  }
  /**
   * Protobuf type {@code clarifai.api.ROC}
   */
  public  static final class ROC extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:clarifai.api.ROC)
      ROCOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ROC.newBuilder() to construct.
    private ROC(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private ROC() {
      fpr_ = java.util.Collections.emptyList();
      tpr_ = java.util.Collections.emptyList();
      thresholds_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private ROC(
        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;
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 13: {
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                fpr_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000001;
              }
              fpr_.add(input.readFloat());
              break;
            }
            case 10: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001) && input.getBytesUntilLimit() > 0) {
                fpr_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000001;
              }
              while (input.getBytesUntilLimit() > 0) {
                fpr_.add(input.readFloat());
              }
              input.popLimit(limit);
              break;
            }
            case 21: {
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                tpr_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000002;
              }
              tpr_.add(input.readFloat());
              break;
            }
            case 18: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002) && input.getBytesUntilLimit() > 0) {
                tpr_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000002;
              }
              while (input.getBytesUntilLimit() > 0) {
                tpr_.add(input.readFloat());
              }
              input.popLimit(limit);
              break;
            }
            case 29: {
              if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
                thresholds_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000004;
              }
              thresholds_.add(input.readFloat());
              break;
            }
            case 26: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00000004) == 0x00000004) && input.getBytesUntilLimit() > 0) {
                thresholds_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000004;
              }
              while (input.getBytesUntilLimit() > 0) {
                thresholds_.add(input.readFloat());
              }
              input.popLimit(limit);
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
          fpr_ = java.util.Collections.unmodifiableList(fpr_);
        }
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          tpr_ = java.util.Collections.unmodifiableList(tpr_);
        }
        if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
          thresholds_ = java.util.Collections.unmodifiableList(thresholds_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_ROC_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_ROC_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              clarifai2.internal.grpc.api.ModelVersionOuterClass.ROC.class, clarifai2.internal.grpc.api.ModelVersionOuterClass.ROC.Builder.class);
    }

    public static final int FPR_FIELD_NUMBER = 1;
    private java.util.List fpr_;
    /**
     * repeated float fpr = 1 [(.clarifai.api.utils.cl_show_if_empty) = true];
     */
    public java.util.List
        getFprList() {
      return fpr_;
    }
    /**
     * repeated float fpr = 1 [(.clarifai.api.utils.cl_show_if_empty) = true];
     */
    public int getFprCount() {
      return fpr_.size();
    }
    /**
     * repeated float fpr = 1 [(.clarifai.api.utils.cl_show_if_empty) = true];
     */
    public float getFpr(int index) {
      return fpr_.get(index);
    }
    private int fprMemoizedSerializedSize = -1;

    public static final int TPR_FIELD_NUMBER = 2;
    private java.util.List tpr_;
    /**
     * repeated float tpr = 2 [(.clarifai.api.utils.cl_show_if_empty) = true];
     */
    public java.util.List
        getTprList() {
      return tpr_;
    }
    /**
     * repeated float tpr = 2 [(.clarifai.api.utils.cl_show_if_empty) = true];
     */
    public int getTprCount() {
      return tpr_.size();
    }
    /**
     * repeated float tpr = 2 [(.clarifai.api.utils.cl_show_if_empty) = true];
     */
    public float getTpr(int index) {
      return tpr_.get(index);
    }
    private int tprMemoizedSerializedSize = -1;

    public static final int THRESHOLDS_FIELD_NUMBER = 3;
    private java.util.List thresholds_;
    /**
     * repeated float thresholds = 3 [(.clarifai.api.utils.cl_show_if_empty) = true];
     */
    public java.util.List
        getThresholdsList() {
      return thresholds_;
    }
    /**
     * repeated float thresholds = 3 [(.clarifai.api.utils.cl_show_if_empty) = true];
     */
    public int getThresholdsCount() {
      return thresholds_.size();
    }
    /**
     * repeated float thresholds = 3 [(.clarifai.api.utils.cl_show_if_empty) = true];
     */
    public float getThresholds(int index) {
      return thresholds_.get(index);
    }
    private int thresholdsMemoizedSerializedSize = -1;

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (getFprList().size() > 0) {
        output.writeUInt32NoTag(10);
        output.writeUInt32NoTag(fprMemoizedSerializedSize);
      }
      for (int i = 0; i < fpr_.size(); i++) {
        output.writeFloatNoTag(fpr_.get(i));
      }
      if (getTprList().size() > 0) {
        output.writeUInt32NoTag(18);
        output.writeUInt32NoTag(tprMemoizedSerializedSize);
      }
      for (int i = 0; i < tpr_.size(); i++) {
        output.writeFloatNoTag(tpr_.get(i));
      }
      if (getThresholdsList().size() > 0) {
        output.writeUInt32NoTag(26);
        output.writeUInt32NoTag(thresholdsMemoizedSerializedSize);
      }
      for (int i = 0; i < thresholds_.size(); i++) {
        output.writeFloatNoTag(thresholds_.get(i));
      }
      unknownFields.writeTo(output);
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      {
        int dataSize = 0;
        dataSize = 4 * getFprList().size();
        size += dataSize;
        if (!getFprList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        fprMemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        dataSize = 4 * getTprList().size();
        size += dataSize;
        if (!getTprList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        tprMemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        dataSize = 4 * getThresholdsList().size();
        size += dataSize;
        if (!getThresholdsList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        thresholdsMemoizedSerializedSize = dataSize;
      }
      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 clarifai2.internal.grpc.api.ModelVersionOuterClass.ROC)) {
        return super.equals(obj);
      }
      clarifai2.internal.grpc.api.ModelVersionOuterClass.ROC other = (clarifai2.internal.grpc.api.ModelVersionOuterClass.ROC) obj;

      boolean result = true;
      result = result && getFprList()
          .equals(other.getFprList());
      result = result && getTprList()
          .equals(other.getTprList());
      result = result && getThresholdsList()
          .equals(other.getThresholdsList());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getFprCount() > 0) {
        hash = (37 * hash) + FPR_FIELD_NUMBER;
        hash = (53 * hash) + getFprList().hashCode();
      }
      if (getTprCount() > 0) {
        hash = (37 * hash) + TPR_FIELD_NUMBER;
        hash = (53 * hash) + getTprList().hashCode();
      }
      if (getThresholdsCount() > 0) {
        hash = (37 * hash) + THRESHOLDS_FIELD_NUMBER;
        hash = (53 * hash) + getThresholdsList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(clarifai2.internal.grpc.api.ModelVersionOuterClass.ROC prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code clarifai.api.ROC}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:clarifai.api.ROC)
        clarifai2.internal.grpc.api.ModelVersionOuterClass.ROCOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_ROC_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_ROC_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                clarifai2.internal.grpc.api.ModelVersionOuterClass.ROC.class, clarifai2.internal.grpc.api.ModelVersionOuterClass.ROC.Builder.class);
      }

      // Construct using clarifai2.internal.grpc.api.ModelVersionOuterClass.ROC.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        fpr_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);
        tpr_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000002);
        thresholds_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_ROC_descriptor;
      }

      public clarifai2.internal.grpc.api.ModelVersionOuterClass.ROC getDefaultInstanceForType() {
        return clarifai2.internal.grpc.api.ModelVersionOuterClass.ROC.getDefaultInstance();
      }

      public clarifai2.internal.grpc.api.ModelVersionOuterClass.ROC build() {
        clarifai2.internal.grpc.api.ModelVersionOuterClass.ROC result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public clarifai2.internal.grpc.api.ModelVersionOuterClass.ROC buildPartial() {
        clarifai2.internal.grpc.api.ModelVersionOuterClass.ROC result = new clarifai2.internal.grpc.api.ModelVersionOuterClass.ROC(this);
        int from_bitField0_ = bitField0_;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          fpr_ = java.util.Collections.unmodifiableList(fpr_);
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.fpr_ = fpr_;
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          tpr_ = java.util.Collections.unmodifiableList(tpr_);
          bitField0_ = (bitField0_ & ~0x00000002);
        }
        result.tpr_ = tpr_;
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          thresholds_ = java.util.Collections.unmodifiableList(thresholds_);
          bitField0_ = (bitField0_ & ~0x00000004);
        }
        result.thresholds_ = thresholds_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof clarifai2.internal.grpc.api.ModelVersionOuterClass.ROC) {
          return mergeFrom((clarifai2.internal.grpc.api.ModelVersionOuterClass.ROC)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(clarifai2.internal.grpc.api.ModelVersionOuterClass.ROC other) {
        if (other == clarifai2.internal.grpc.api.ModelVersionOuterClass.ROC.getDefaultInstance()) return this;
        if (!other.fpr_.isEmpty()) {
          if (fpr_.isEmpty()) {
            fpr_ = other.fpr_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureFprIsMutable();
            fpr_.addAll(other.fpr_);
          }
          onChanged();
        }
        if (!other.tpr_.isEmpty()) {
          if (tpr_.isEmpty()) {
            tpr_ = other.tpr_;
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            ensureTprIsMutable();
            tpr_.addAll(other.tpr_);
          }
          onChanged();
        }
        if (!other.thresholds_.isEmpty()) {
          if (thresholds_.isEmpty()) {
            thresholds_ = other.thresholds_;
            bitField0_ = (bitField0_ & ~0x00000004);
          } else {
            ensureThresholdsIsMutable();
            thresholds_.addAll(other.thresholds_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        clarifai2.internal.grpc.api.ModelVersionOuterClass.ROC parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (clarifai2.internal.grpc.api.ModelVersionOuterClass.ROC) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.util.List fpr_ = java.util.Collections.emptyList();
      private void ensureFprIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          fpr_ = new java.util.ArrayList(fpr_);
          bitField0_ |= 0x00000001;
         }
      }
      /**
       * repeated float fpr = 1 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public java.util.List
          getFprList() {
        return java.util.Collections.unmodifiableList(fpr_);
      }
      /**
       * repeated float fpr = 1 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public int getFprCount() {
        return fpr_.size();
      }
      /**
       * repeated float fpr = 1 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public float getFpr(int index) {
        return fpr_.get(index);
      }
      /**
       * repeated float fpr = 1 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public Builder setFpr(
          int index, float value) {
        ensureFprIsMutable();
        fpr_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * repeated float fpr = 1 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public Builder addFpr(float value) {
        ensureFprIsMutable();
        fpr_.add(value);
        onChanged();
        return this;
      }
      /**
       * repeated float fpr = 1 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public Builder addAllFpr(
          java.lang.Iterable values) {
        ensureFprIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, fpr_);
        onChanged();
        return this;
      }
      /**
       * repeated float fpr = 1 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public Builder clearFpr() {
        fpr_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }

      private java.util.List tpr_ = java.util.Collections.emptyList();
      private void ensureTprIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          tpr_ = new java.util.ArrayList(tpr_);
          bitField0_ |= 0x00000002;
         }
      }
      /**
       * repeated float tpr = 2 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public java.util.List
          getTprList() {
        return java.util.Collections.unmodifiableList(tpr_);
      }
      /**
       * repeated float tpr = 2 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public int getTprCount() {
        return tpr_.size();
      }
      /**
       * repeated float tpr = 2 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public float getTpr(int index) {
        return tpr_.get(index);
      }
      /**
       * repeated float tpr = 2 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public Builder setTpr(
          int index, float value) {
        ensureTprIsMutable();
        tpr_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * repeated float tpr = 2 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public Builder addTpr(float value) {
        ensureTprIsMutable();
        tpr_.add(value);
        onChanged();
        return this;
      }
      /**
       * repeated float tpr = 2 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public Builder addAllTpr(
          java.lang.Iterable values) {
        ensureTprIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, tpr_);
        onChanged();
        return this;
      }
      /**
       * repeated float tpr = 2 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public Builder clearTpr() {
        tpr_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }

      private java.util.List thresholds_ = java.util.Collections.emptyList();
      private void ensureThresholdsIsMutable() {
        if (!((bitField0_ & 0x00000004) == 0x00000004)) {
          thresholds_ = new java.util.ArrayList(thresholds_);
          bitField0_ |= 0x00000004;
         }
      }
      /**
       * repeated float thresholds = 3 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public java.util.List
          getThresholdsList() {
        return java.util.Collections.unmodifiableList(thresholds_);
      }
      /**
       * repeated float thresholds = 3 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public int getThresholdsCount() {
        return thresholds_.size();
      }
      /**
       * repeated float thresholds = 3 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public float getThresholds(int index) {
        return thresholds_.get(index);
      }
      /**
       * repeated float thresholds = 3 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public Builder setThresholds(
          int index, float value) {
        ensureThresholdsIsMutable();
        thresholds_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * repeated float thresholds = 3 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public Builder addThresholds(float value) {
        ensureThresholdsIsMutable();
        thresholds_.add(value);
        onChanged();
        return this;
      }
      /**
       * repeated float thresholds = 3 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public Builder addAllThresholds(
          java.lang.Iterable values) {
        ensureThresholdsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, thresholds_);
        onChanged();
        return this;
      }
      /**
       * repeated float thresholds = 3 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public Builder clearThresholds() {
        thresholds_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:clarifai.api.ROC)
    }

    // @@protoc_insertion_point(class_scope:clarifai.api.ROC)
    private static final clarifai2.internal.grpc.api.ModelVersionOuterClass.ROC DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new clarifai2.internal.grpc.api.ModelVersionOuterClass.ROC();
    }

    public static clarifai2.internal.grpc.api.ModelVersionOuterClass.ROC getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public clarifai2.internal.grpc.api.ModelVersionOuterClass.ROC getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PrecisionRecallCurveOrBuilder extends
      // @@protoc_insertion_point(interface_extends:clarifai.api.PrecisionRecallCurve)
      com.google.protobuf.MessageOrBuilder {

    /**
     * repeated float recall = 1 [(.clarifai.api.utils.cl_show_if_empty) = true];
     */
    java.util.List getRecallList();
    /**
     * repeated float recall = 1 [(.clarifai.api.utils.cl_show_if_empty) = true];
     */
    int getRecallCount();
    /**
     * repeated float recall = 1 [(.clarifai.api.utils.cl_show_if_empty) = true];
     */
    float getRecall(int index);

    /**
     * repeated float precision = 2 [(.clarifai.api.utils.cl_show_if_empty) = true];
     */
    java.util.List getPrecisionList();
    /**
     * repeated float precision = 2 [(.clarifai.api.utils.cl_show_if_empty) = true];
     */
    int getPrecisionCount();
    /**
     * repeated float precision = 2 [(.clarifai.api.utils.cl_show_if_empty) = true];
     */
    float getPrecision(int index);

    /**
     * repeated float thresholds = 3 [(.clarifai.api.utils.cl_show_if_empty) = true];
     */
    java.util.List getThresholdsList();
    /**
     * repeated float thresholds = 3 [(.clarifai.api.utils.cl_show_if_empty) = true];
     */
    int getThresholdsCount();
    /**
     * repeated float thresholds = 3 [(.clarifai.api.utils.cl_show_if_empty) = true];
     */
    float getThresholds(int index);
  }
  /**
   * Protobuf type {@code clarifai.api.PrecisionRecallCurve}
   */
  public  static final class PrecisionRecallCurve extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:clarifai.api.PrecisionRecallCurve)
      PrecisionRecallCurveOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PrecisionRecallCurve.newBuilder() to construct.
    private PrecisionRecallCurve(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private PrecisionRecallCurve() {
      recall_ = java.util.Collections.emptyList();
      precision_ = java.util.Collections.emptyList();
      thresholds_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private PrecisionRecallCurve(
        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;
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 13: {
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                recall_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000001;
              }
              recall_.add(input.readFloat());
              break;
            }
            case 10: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001) && input.getBytesUntilLimit() > 0) {
                recall_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000001;
              }
              while (input.getBytesUntilLimit() > 0) {
                recall_.add(input.readFloat());
              }
              input.popLimit(limit);
              break;
            }
            case 21: {
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                precision_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000002;
              }
              precision_.add(input.readFloat());
              break;
            }
            case 18: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002) && input.getBytesUntilLimit() > 0) {
                precision_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000002;
              }
              while (input.getBytesUntilLimit() > 0) {
                precision_.add(input.readFloat());
              }
              input.popLimit(limit);
              break;
            }
            case 29: {
              if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
                thresholds_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000004;
              }
              thresholds_.add(input.readFloat());
              break;
            }
            case 26: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00000004) == 0x00000004) && input.getBytesUntilLimit() > 0) {
                thresholds_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000004;
              }
              while (input.getBytesUntilLimit() > 0) {
                thresholds_.add(input.readFloat());
              }
              input.popLimit(limit);
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
          recall_ = java.util.Collections.unmodifiableList(recall_);
        }
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          precision_ = java.util.Collections.unmodifiableList(precision_);
        }
        if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
          thresholds_ = java.util.Collections.unmodifiableList(thresholds_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_PrecisionRecallCurve_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_PrecisionRecallCurve_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              clarifai2.internal.grpc.api.ModelVersionOuterClass.PrecisionRecallCurve.class, clarifai2.internal.grpc.api.ModelVersionOuterClass.PrecisionRecallCurve.Builder.class);
    }

    public static final int RECALL_FIELD_NUMBER = 1;
    private java.util.List recall_;
    /**
     * repeated float recall = 1 [(.clarifai.api.utils.cl_show_if_empty) = true];
     */
    public java.util.List
        getRecallList() {
      return recall_;
    }
    /**
     * repeated float recall = 1 [(.clarifai.api.utils.cl_show_if_empty) = true];
     */
    public int getRecallCount() {
      return recall_.size();
    }
    /**
     * repeated float recall = 1 [(.clarifai.api.utils.cl_show_if_empty) = true];
     */
    public float getRecall(int index) {
      return recall_.get(index);
    }
    private int recallMemoizedSerializedSize = -1;

    public static final int PRECISION_FIELD_NUMBER = 2;
    private java.util.List precision_;
    /**
     * repeated float precision = 2 [(.clarifai.api.utils.cl_show_if_empty) = true];
     */
    public java.util.List
        getPrecisionList() {
      return precision_;
    }
    /**
     * repeated float precision = 2 [(.clarifai.api.utils.cl_show_if_empty) = true];
     */
    public int getPrecisionCount() {
      return precision_.size();
    }
    /**
     * repeated float precision = 2 [(.clarifai.api.utils.cl_show_if_empty) = true];
     */
    public float getPrecision(int index) {
      return precision_.get(index);
    }
    private int precisionMemoizedSerializedSize = -1;

    public static final int THRESHOLDS_FIELD_NUMBER = 3;
    private java.util.List thresholds_;
    /**
     * repeated float thresholds = 3 [(.clarifai.api.utils.cl_show_if_empty) = true];
     */
    public java.util.List
        getThresholdsList() {
      return thresholds_;
    }
    /**
     * repeated float thresholds = 3 [(.clarifai.api.utils.cl_show_if_empty) = true];
     */
    public int getThresholdsCount() {
      return thresholds_.size();
    }
    /**
     * repeated float thresholds = 3 [(.clarifai.api.utils.cl_show_if_empty) = true];
     */
    public float getThresholds(int index) {
      return thresholds_.get(index);
    }
    private int thresholdsMemoizedSerializedSize = -1;

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (getRecallList().size() > 0) {
        output.writeUInt32NoTag(10);
        output.writeUInt32NoTag(recallMemoizedSerializedSize);
      }
      for (int i = 0; i < recall_.size(); i++) {
        output.writeFloatNoTag(recall_.get(i));
      }
      if (getPrecisionList().size() > 0) {
        output.writeUInt32NoTag(18);
        output.writeUInt32NoTag(precisionMemoizedSerializedSize);
      }
      for (int i = 0; i < precision_.size(); i++) {
        output.writeFloatNoTag(precision_.get(i));
      }
      if (getThresholdsList().size() > 0) {
        output.writeUInt32NoTag(26);
        output.writeUInt32NoTag(thresholdsMemoizedSerializedSize);
      }
      for (int i = 0; i < thresholds_.size(); i++) {
        output.writeFloatNoTag(thresholds_.get(i));
      }
      unknownFields.writeTo(output);
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      {
        int dataSize = 0;
        dataSize = 4 * getRecallList().size();
        size += dataSize;
        if (!getRecallList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        recallMemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        dataSize = 4 * getPrecisionList().size();
        size += dataSize;
        if (!getPrecisionList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        precisionMemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        dataSize = 4 * getThresholdsList().size();
        size += dataSize;
        if (!getThresholdsList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        thresholdsMemoizedSerializedSize = dataSize;
      }
      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 clarifai2.internal.grpc.api.ModelVersionOuterClass.PrecisionRecallCurve)) {
        return super.equals(obj);
      }
      clarifai2.internal.grpc.api.ModelVersionOuterClass.PrecisionRecallCurve other = (clarifai2.internal.grpc.api.ModelVersionOuterClass.PrecisionRecallCurve) obj;

      boolean result = true;
      result = result && getRecallList()
          .equals(other.getRecallList());
      result = result && getPrecisionList()
          .equals(other.getPrecisionList());
      result = result && getThresholdsList()
          .equals(other.getThresholdsList());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getRecallCount() > 0) {
        hash = (37 * hash) + RECALL_FIELD_NUMBER;
        hash = (53 * hash) + getRecallList().hashCode();
      }
      if (getPrecisionCount() > 0) {
        hash = (37 * hash) + PRECISION_FIELD_NUMBER;
        hash = (53 * hash) + getPrecisionList().hashCode();
      }
      if (getThresholdsCount() > 0) {
        hash = (37 * hash) + THRESHOLDS_FIELD_NUMBER;
        hash = (53 * hash) + getThresholdsList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(clarifai2.internal.grpc.api.ModelVersionOuterClass.PrecisionRecallCurve prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code clarifai.api.PrecisionRecallCurve}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:clarifai.api.PrecisionRecallCurve)
        clarifai2.internal.grpc.api.ModelVersionOuterClass.PrecisionRecallCurveOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_PrecisionRecallCurve_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_PrecisionRecallCurve_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                clarifai2.internal.grpc.api.ModelVersionOuterClass.PrecisionRecallCurve.class, clarifai2.internal.grpc.api.ModelVersionOuterClass.PrecisionRecallCurve.Builder.class);
      }

      // Construct using clarifai2.internal.grpc.api.ModelVersionOuterClass.PrecisionRecallCurve.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        recall_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);
        precision_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000002);
        thresholds_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000004);
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_PrecisionRecallCurve_descriptor;
      }

      public clarifai2.internal.grpc.api.ModelVersionOuterClass.PrecisionRecallCurve getDefaultInstanceForType() {
        return clarifai2.internal.grpc.api.ModelVersionOuterClass.PrecisionRecallCurve.getDefaultInstance();
      }

      public clarifai2.internal.grpc.api.ModelVersionOuterClass.PrecisionRecallCurve build() {
        clarifai2.internal.grpc.api.ModelVersionOuterClass.PrecisionRecallCurve result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public clarifai2.internal.grpc.api.ModelVersionOuterClass.PrecisionRecallCurve buildPartial() {
        clarifai2.internal.grpc.api.ModelVersionOuterClass.PrecisionRecallCurve result = new clarifai2.internal.grpc.api.ModelVersionOuterClass.PrecisionRecallCurve(this);
        int from_bitField0_ = bitField0_;
        if (((bitField0_ & 0x00000001) == 0x00000001)) {
          recall_ = java.util.Collections.unmodifiableList(recall_);
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.recall_ = recall_;
        if (((bitField0_ & 0x00000002) == 0x00000002)) {
          precision_ = java.util.Collections.unmodifiableList(precision_);
          bitField0_ = (bitField0_ & ~0x00000002);
        }
        result.precision_ = precision_;
        if (((bitField0_ & 0x00000004) == 0x00000004)) {
          thresholds_ = java.util.Collections.unmodifiableList(thresholds_);
          bitField0_ = (bitField0_ & ~0x00000004);
        }
        result.thresholds_ = thresholds_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof clarifai2.internal.grpc.api.ModelVersionOuterClass.PrecisionRecallCurve) {
          return mergeFrom((clarifai2.internal.grpc.api.ModelVersionOuterClass.PrecisionRecallCurve)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(clarifai2.internal.grpc.api.ModelVersionOuterClass.PrecisionRecallCurve other) {
        if (other == clarifai2.internal.grpc.api.ModelVersionOuterClass.PrecisionRecallCurve.getDefaultInstance()) return this;
        if (!other.recall_.isEmpty()) {
          if (recall_.isEmpty()) {
            recall_ = other.recall_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureRecallIsMutable();
            recall_.addAll(other.recall_);
          }
          onChanged();
        }
        if (!other.precision_.isEmpty()) {
          if (precision_.isEmpty()) {
            precision_ = other.precision_;
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            ensurePrecisionIsMutable();
            precision_.addAll(other.precision_);
          }
          onChanged();
        }
        if (!other.thresholds_.isEmpty()) {
          if (thresholds_.isEmpty()) {
            thresholds_ = other.thresholds_;
            bitField0_ = (bitField0_ & ~0x00000004);
          } else {
            ensureThresholdsIsMutable();
            thresholds_.addAll(other.thresholds_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        clarifai2.internal.grpc.api.ModelVersionOuterClass.PrecisionRecallCurve parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (clarifai2.internal.grpc.api.ModelVersionOuterClass.PrecisionRecallCurve) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.util.List recall_ = java.util.Collections.emptyList();
      private void ensureRecallIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          recall_ = new java.util.ArrayList(recall_);
          bitField0_ |= 0x00000001;
         }
      }
      /**
       * repeated float recall = 1 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public java.util.List
          getRecallList() {
        return java.util.Collections.unmodifiableList(recall_);
      }
      /**
       * repeated float recall = 1 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public int getRecallCount() {
        return recall_.size();
      }
      /**
       * repeated float recall = 1 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public float getRecall(int index) {
        return recall_.get(index);
      }
      /**
       * repeated float recall = 1 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public Builder setRecall(
          int index, float value) {
        ensureRecallIsMutable();
        recall_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * repeated float recall = 1 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public Builder addRecall(float value) {
        ensureRecallIsMutable();
        recall_.add(value);
        onChanged();
        return this;
      }
      /**
       * repeated float recall = 1 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public Builder addAllRecall(
          java.lang.Iterable values) {
        ensureRecallIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, recall_);
        onChanged();
        return this;
      }
      /**
       * repeated float recall = 1 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public Builder clearRecall() {
        recall_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }

      private java.util.List precision_ = java.util.Collections.emptyList();
      private void ensurePrecisionIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          precision_ = new java.util.ArrayList(precision_);
          bitField0_ |= 0x00000002;
         }
      }
      /**
       * repeated float precision = 2 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public java.util.List
          getPrecisionList() {
        return java.util.Collections.unmodifiableList(precision_);
      }
      /**
       * repeated float precision = 2 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public int getPrecisionCount() {
        return precision_.size();
      }
      /**
       * repeated float precision = 2 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public float getPrecision(int index) {
        return precision_.get(index);
      }
      /**
       * repeated float precision = 2 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public Builder setPrecision(
          int index, float value) {
        ensurePrecisionIsMutable();
        precision_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * repeated float precision = 2 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public Builder addPrecision(float value) {
        ensurePrecisionIsMutable();
        precision_.add(value);
        onChanged();
        return this;
      }
      /**
       * repeated float precision = 2 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public Builder addAllPrecision(
          java.lang.Iterable values) {
        ensurePrecisionIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, precision_);
        onChanged();
        return this;
      }
      /**
       * repeated float precision = 2 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public Builder clearPrecision() {
        precision_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }

      private java.util.List thresholds_ = java.util.Collections.emptyList();
      private void ensureThresholdsIsMutable() {
        if (!((bitField0_ & 0x00000004) == 0x00000004)) {
          thresholds_ = new java.util.ArrayList(thresholds_);
          bitField0_ |= 0x00000004;
         }
      }
      /**
       * repeated float thresholds = 3 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public java.util.List
          getThresholdsList() {
        return java.util.Collections.unmodifiableList(thresholds_);
      }
      /**
       * repeated float thresholds = 3 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public int getThresholdsCount() {
        return thresholds_.size();
      }
      /**
       * repeated float thresholds = 3 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public float getThresholds(int index) {
        return thresholds_.get(index);
      }
      /**
       * repeated float thresholds = 3 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public Builder setThresholds(
          int index, float value) {
        ensureThresholdsIsMutable();
        thresholds_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * repeated float thresholds = 3 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public Builder addThresholds(float value) {
        ensureThresholdsIsMutable();
        thresholds_.add(value);
        onChanged();
        return this;
      }
      /**
       * repeated float thresholds = 3 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public Builder addAllThresholds(
          java.lang.Iterable values) {
        ensureThresholdsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, thresholds_);
        onChanged();
        return this;
      }
      /**
       * repeated float thresholds = 3 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public Builder clearThresholds() {
        thresholds_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:clarifai.api.PrecisionRecallCurve)
    }

    // @@protoc_insertion_point(class_scope:clarifai.api.PrecisionRecallCurve)
    private static final clarifai2.internal.grpc.api.ModelVersionOuterClass.PrecisionRecallCurve DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new clarifai2.internal.grpc.api.ModelVersionOuterClass.PrecisionRecallCurve();
    }

    public static clarifai2.internal.grpc.api.ModelVersionOuterClass.PrecisionRecallCurve getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public clarifai2.internal.grpc.api.ModelVersionOuterClass.PrecisionRecallCurve getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface BinaryMetricsOrBuilder extends
      // @@protoc_insertion_point(interface_extends:clarifai.api.BinaryMetrics)
      com.google.protobuf.MessageOrBuilder {

    /**
     * uint32 num_pos = 1 [(.clarifai.api.utils.cl_show_if_empty) = true];
     */
    int getNumPos();

    /**
     * uint32 num_neg = 2 [(.clarifai.api.utils.cl_show_if_empty) = true];
     */
    int getNumNeg();

    /**
     * uint32 num_tot = 3 [(.clarifai.api.utils.cl_show_if_empty) = true];
     */
    int getNumTot();

    /**
     * float roc_auc = 4 [(.clarifai.api.utils.cl_show_if_empty) = true];
     */
    float getRocAuc();

    /**
     * float f1 = 5 [(.clarifai.api.utils.cl_show_if_empty) = true];
     */
    float getF1();

    /**
     * .clarifai.api.Concept concept = 6;
     */
    boolean hasConcept();
    /**
     * .clarifai.api.Concept concept = 6;
     */
    clarifai2.internal.grpc.api.ConceptOuterClass.Concept getConcept();
    /**
     * .clarifai.api.Concept concept = 6;
     */
    clarifai2.internal.grpc.api.ConceptOuterClass.ConceptOrBuilder getConceptOrBuilder();

    /**
     * .clarifai.api.ROC roc_curve = 7;
     */
    boolean hasRocCurve();
    /**
     * .clarifai.api.ROC roc_curve = 7;
     */
    clarifai2.internal.grpc.api.ModelVersionOuterClass.ROC getRocCurve();
    /**
     * .clarifai.api.ROC roc_curve = 7;
     */
    clarifai2.internal.grpc.api.ModelVersionOuterClass.ROCOrBuilder getRocCurveOrBuilder();

    /**
     * .clarifai.api.PrecisionRecallCurve precision_recall_curve = 8;
     */
    boolean hasPrecisionRecallCurve();
    /**
     * .clarifai.api.PrecisionRecallCurve precision_recall_curve = 8;
     */
    clarifai2.internal.grpc.api.ModelVersionOuterClass.PrecisionRecallCurve getPrecisionRecallCurve();
    /**
     * .clarifai.api.PrecisionRecallCurve precision_recall_curve = 8;
     */
    clarifai2.internal.grpc.api.ModelVersionOuterClass.PrecisionRecallCurveOrBuilder getPrecisionRecallCurveOrBuilder();
  }
  /**
   * Protobuf type {@code clarifai.api.BinaryMetrics}
   */
  public  static final class BinaryMetrics extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:clarifai.api.BinaryMetrics)
      BinaryMetricsOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use BinaryMetrics.newBuilder() to construct.
    private BinaryMetrics(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private BinaryMetrics() {
      numPos_ = 0;
      numNeg_ = 0;
      numTot_ = 0;
      rocAuc_ = 0F;
      f1_ = 0F;
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private BinaryMetrics(
        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;
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 8: {

              numPos_ = input.readUInt32();
              break;
            }
            case 16: {

              numNeg_ = input.readUInt32();
              break;
            }
            case 24: {

              numTot_ = input.readUInt32();
              break;
            }
            case 37: {

              rocAuc_ = input.readFloat();
              break;
            }
            case 45: {

              f1_ = input.readFloat();
              break;
            }
            case 50: {
              clarifai2.internal.grpc.api.ConceptOuterClass.Concept.Builder subBuilder = null;
              if (concept_ != null) {
                subBuilder = concept_.toBuilder();
              }
              concept_ = input.readMessage(clarifai2.internal.grpc.api.ConceptOuterClass.Concept.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(concept_);
                concept_ = subBuilder.buildPartial();
              }

              break;
            }
            case 58: {
              clarifai2.internal.grpc.api.ModelVersionOuterClass.ROC.Builder subBuilder = null;
              if (rocCurve_ != null) {
                subBuilder = rocCurve_.toBuilder();
              }
              rocCurve_ = input.readMessage(clarifai2.internal.grpc.api.ModelVersionOuterClass.ROC.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(rocCurve_);
                rocCurve_ = subBuilder.buildPartial();
              }

              break;
            }
            case 66: {
              clarifai2.internal.grpc.api.ModelVersionOuterClass.PrecisionRecallCurve.Builder subBuilder = null;
              if (precisionRecallCurve_ != null) {
                subBuilder = precisionRecallCurve_.toBuilder();
              }
              precisionRecallCurve_ = input.readMessage(clarifai2.internal.grpc.api.ModelVersionOuterClass.PrecisionRecallCurve.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(precisionRecallCurve_);
                precisionRecallCurve_ = subBuilder.buildPartial();
              }

              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 clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_BinaryMetrics_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_BinaryMetrics_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              clarifai2.internal.grpc.api.ModelVersionOuterClass.BinaryMetrics.class, clarifai2.internal.grpc.api.ModelVersionOuterClass.BinaryMetrics.Builder.class);
    }

    public static final int NUM_POS_FIELD_NUMBER = 1;
    private int numPos_;
    /**
     * uint32 num_pos = 1 [(.clarifai.api.utils.cl_show_if_empty) = true];
     */
    public int getNumPos() {
      return numPos_;
    }

    public static final int NUM_NEG_FIELD_NUMBER = 2;
    private int numNeg_;
    /**
     * uint32 num_neg = 2 [(.clarifai.api.utils.cl_show_if_empty) = true];
     */
    public int getNumNeg() {
      return numNeg_;
    }

    public static final int NUM_TOT_FIELD_NUMBER = 3;
    private int numTot_;
    /**
     * uint32 num_tot = 3 [(.clarifai.api.utils.cl_show_if_empty) = true];
     */
    public int getNumTot() {
      return numTot_;
    }

    public static final int ROC_AUC_FIELD_NUMBER = 4;
    private float rocAuc_;
    /**
     * float roc_auc = 4 [(.clarifai.api.utils.cl_show_if_empty) = true];
     */
    public float getRocAuc() {
      return rocAuc_;
    }

    public static final int F1_FIELD_NUMBER = 5;
    private float f1_;
    /**
     * float f1 = 5 [(.clarifai.api.utils.cl_show_if_empty) = true];
     */
    public float getF1() {
      return f1_;
    }

    public static final int CONCEPT_FIELD_NUMBER = 6;
    private clarifai2.internal.grpc.api.ConceptOuterClass.Concept concept_;
    /**
     * .clarifai.api.Concept concept = 6;
     */
    public boolean hasConcept() {
      return concept_ != null;
    }
    /**
     * .clarifai.api.Concept concept = 6;
     */
    public clarifai2.internal.grpc.api.ConceptOuterClass.Concept getConcept() {
      return concept_ == null ? clarifai2.internal.grpc.api.ConceptOuterClass.Concept.getDefaultInstance() : concept_;
    }
    /**
     * .clarifai.api.Concept concept = 6;
     */
    public clarifai2.internal.grpc.api.ConceptOuterClass.ConceptOrBuilder getConceptOrBuilder() {
      return getConcept();
    }

    public static final int ROC_CURVE_FIELD_NUMBER = 7;
    private clarifai2.internal.grpc.api.ModelVersionOuterClass.ROC rocCurve_;
    /**
     * .clarifai.api.ROC roc_curve = 7;
     */
    public boolean hasRocCurve() {
      return rocCurve_ != null;
    }
    /**
     * .clarifai.api.ROC roc_curve = 7;
     */
    public clarifai2.internal.grpc.api.ModelVersionOuterClass.ROC getRocCurve() {
      return rocCurve_ == null ? clarifai2.internal.grpc.api.ModelVersionOuterClass.ROC.getDefaultInstance() : rocCurve_;
    }
    /**
     * .clarifai.api.ROC roc_curve = 7;
     */
    public clarifai2.internal.grpc.api.ModelVersionOuterClass.ROCOrBuilder getRocCurveOrBuilder() {
      return getRocCurve();
    }

    public static final int PRECISION_RECALL_CURVE_FIELD_NUMBER = 8;
    private clarifai2.internal.grpc.api.ModelVersionOuterClass.PrecisionRecallCurve precisionRecallCurve_;
    /**
     * .clarifai.api.PrecisionRecallCurve precision_recall_curve = 8;
     */
    public boolean hasPrecisionRecallCurve() {
      return precisionRecallCurve_ != null;
    }
    /**
     * .clarifai.api.PrecisionRecallCurve precision_recall_curve = 8;
     */
    public clarifai2.internal.grpc.api.ModelVersionOuterClass.PrecisionRecallCurve getPrecisionRecallCurve() {
      return precisionRecallCurve_ == null ? clarifai2.internal.grpc.api.ModelVersionOuterClass.PrecisionRecallCurve.getDefaultInstance() : precisionRecallCurve_;
    }
    /**
     * .clarifai.api.PrecisionRecallCurve precision_recall_curve = 8;
     */
    public clarifai2.internal.grpc.api.ModelVersionOuterClass.PrecisionRecallCurveOrBuilder getPrecisionRecallCurveOrBuilder() {
      return getPrecisionRecallCurve();
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (numPos_ != 0) {
        output.writeUInt32(1, numPos_);
      }
      if (numNeg_ != 0) {
        output.writeUInt32(2, numNeg_);
      }
      if (numTot_ != 0) {
        output.writeUInt32(3, numTot_);
      }
      if (rocAuc_ != 0F) {
        output.writeFloat(4, rocAuc_);
      }
      if (f1_ != 0F) {
        output.writeFloat(5, f1_);
      }
      if (concept_ != null) {
        output.writeMessage(6, getConcept());
      }
      if (rocCurve_ != null) {
        output.writeMessage(7, getRocCurve());
      }
      if (precisionRecallCurve_ != null) {
        output.writeMessage(8, getPrecisionRecallCurve());
      }
      unknownFields.writeTo(output);
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (numPos_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(1, numPos_);
      }
      if (numNeg_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(2, numNeg_);
      }
      if (numTot_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(3, numTot_);
      }
      if (rocAuc_ != 0F) {
        size += com.google.protobuf.CodedOutputStream
          .computeFloatSize(4, rocAuc_);
      }
      if (f1_ != 0F) {
        size += com.google.protobuf.CodedOutputStream
          .computeFloatSize(5, f1_);
      }
      if (concept_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(6, getConcept());
      }
      if (rocCurve_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(7, getRocCurve());
      }
      if (precisionRecallCurve_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(8, getPrecisionRecallCurve());
      }
      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 clarifai2.internal.grpc.api.ModelVersionOuterClass.BinaryMetrics)) {
        return super.equals(obj);
      }
      clarifai2.internal.grpc.api.ModelVersionOuterClass.BinaryMetrics other = (clarifai2.internal.grpc.api.ModelVersionOuterClass.BinaryMetrics) obj;

      boolean result = true;
      result = result && (getNumPos()
          == other.getNumPos());
      result = result && (getNumNeg()
          == other.getNumNeg());
      result = result && (getNumTot()
          == other.getNumTot());
      result = result && (
          java.lang.Float.floatToIntBits(getRocAuc())
          == java.lang.Float.floatToIntBits(
              other.getRocAuc()));
      result = result && (
          java.lang.Float.floatToIntBits(getF1())
          == java.lang.Float.floatToIntBits(
              other.getF1()));
      result = result && (hasConcept() == other.hasConcept());
      if (hasConcept()) {
        result = result && getConcept()
            .equals(other.getConcept());
      }
      result = result && (hasRocCurve() == other.hasRocCurve());
      if (hasRocCurve()) {
        result = result && getRocCurve()
            .equals(other.getRocCurve());
      }
      result = result && (hasPrecisionRecallCurve() == other.hasPrecisionRecallCurve());
      if (hasPrecisionRecallCurve()) {
        result = result && getPrecisionRecallCurve()
            .equals(other.getPrecisionRecallCurve());
      }
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + NUM_POS_FIELD_NUMBER;
      hash = (53 * hash) + getNumPos();
      hash = (37 * hash) + NUM_NEG_FIELD_NUMBER;
      hash = (53 * hash) + getNumNeg();
      hash = (37 * hash) + NUM_TOT_FIELD_NUMBER;
      hash = (53 * hash) + getNumTot();
      hash = (37 * hash) + ROC_AUC_FIELD_NUMBER;
      hash = (53 * hash) + java.lang.Float.floatToIntBits(
          getRocAuc());
      hash = (37 * hash) + F1_FIELD_NUMBER;
      hash = (53 * hash) + java.lang.Float.floatToIntBits(
          getF1());
      if (hasConcept()) {
        hash = (37 * hash) + CONCEPT_FIELD_NUMBER;
        hash = (53 * hash) + getConcept().hashCode();
      }
      if (hasRocCurve()) {
        hash = (37 * hash) + ROC_CURVE_FIELD_NUMBER;
        hash = (53 * hash) + getRocCurve().hashCode();
      }
      if (hasPrecisionRecallCurve()) {
        hash = (37 * hash) + PRECISION_RECALL_CURVE_FIELD_NUMBER;
        hash = (53 * hash) + getPrecisionRecallCurve().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(clarifai2.internal.grpc.api.ModelVersionOuterClass.BinaryMetrics prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code clarifai.api.BinaryMetrics}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:clarifai.api.BinaryMetrics)
        clarifai2.internal.grpc.api.ModelVersionOuterClass.BinaryMetricsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_BinaryMetrics_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_BinaryMetrics_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                clarifai2.internal.grpc.api.ModelVersionOuterClass.BinaryMetrics.class, clarifai2.internal.grpc.api.ModelVersionOuterClass.BinaryMetrics.Builder.class);
      }

      // Construct using clarifai2.internal.grpc.api.ModelVersionOuterClass.BinaryMetrics.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        numPos_ = 0;

        numNeg_ = 0;

        numTot_ = 0;

        rocAuc_ = 0F;

        f1_ = 0F;

        if (conceptBuilder_ == null) {
          concept_ = null;
        } else {
          concept_ = null;
          conceptBuilder_ = null;
        }
        if (rocCurveBuilder_ == null) {
          rocCurve_ = null;
        } else {
          rocCurve_ = null;
          rocCurveBuilder_ = null;
        }
        if (precisionRecallCurveBuilder_ == null) {
          precisionRecallCurve_ = null;
        } else {
          precisionRecallCurve_ = null;
          precisionRecallCurveBuilder_ = null;
        }
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_BinaryMetrics_descriptor;
      }

      public clarifai2.internal.grpc.api.ModelVersionOuterClass.BinaryMetrics getDefaultInstanceForType() {
        return clarifai2.internal.grpc.api.ModelVersionOuterClass.BinaryMetrics.getDefaultInstance();
      }

      public clarifai2.internal.grpc.api.ModelVersionOuterClass.BinaryMetrics build() {
        clarifai2.internal.grpc.api.ModelVersionOuterClass.BinaryMetrics result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public clarifai2.internal.grpc.api.ModelVersionOuterClass.BinaryMetrics buildPartial() {
        clarifai2.internal.grpc.api.ModelVersionOuterClass.BinaryMetrics result = new clarifai2.internal.grpc.api.ModelVersionOuterClass.BinaryMetrics(this);
        result.numPos_ = numPos_;
        result.numNeg_ = numNeg_;
        result.numTot_ = numTot_;
        result.rocAuc_ = rocAuc_;
        result.f1_ = f1_;
        if (conceptBuilder_ == null) {
          result.concept_ = concept_;
        } else {
          result.concept_ = conceptBuilder_.build();
        }
        if (rocCurveBuilder_ == null) {
          result.rocCurve_ = rocCurve_;
        } else {
          result.rocCurve_ = rocCurveBuilder_.build();
        }
        if (precisionRecallCurveBuilder_ == null) {
          result.precisionRecallCurve_ = precisionRecallCurve_;
        } else {
          result.precisionRecallCurve_ = precisionRecallCurveBuilder_.build();
        }
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof clarifai2.internal.grpc.api.ModelVersionOuterClass.BinaryMetrics) {
          return mergeFrom((clarifai2.internal.grpc.api.ModelVersionOuterClass.BinaryMetrics)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(clarifai2.internal.grpc.api.ModelVersionOuterClass.BinaryMetrics other) {
        if (other == clarifai2.internal.grpc.api.ModelVersionOuterClass.BinaryMetrics.getDefaultInstance()) return this;
        if (other.getNumPos() != 0) {
          setNumPos(other.getNumPos());
        }
        if (other.getNumNeg() != 0) {
          setNumNeg(other.getNumNeg());
        }
        if (other.getNumTot() != 0) {
          setNumTot(other.getNumTot());
        }
        if (other.getRocAuc() != 0F) {
          setRocAuc(other.getRocAuc());
        }
        if (other.getF1() != 0F) {
          setF1(other.getF1());
        }
        if (other.hasConcept()) {
          mergeConcept(other.getConcept());
        }
        if (other.hasRocCurve()) {
          mergeRocCurve(other.getRocCurve());
        }
        if (other.hasPrecisionRecallCurve()) {
          mergePrecisionRecallCurve(other.getPrecisionRecallCurve());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        clarifai2.internal.grpc.api.ModelVersionOuterClass.BinaryMetrics parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (clarifai2.internal.grpc.api.ModelVersionOuterClass.BinaryMetrics) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private int numPos_ ;
      /**
       * uint32 num_pos = 1 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public int getNumPos() {
        return numPos_;
      }
      /**
       * uint32 num_pos = 1 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public Builder setNumPos(int value) {
        
        numPos_ = value;
        onChanged();
        return this;
      }
      /**
       * uint32 num_pos = 1 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public Builder clearNumPos() {
        
        numPos_ = 0;
        onChanged();
        return this;
      }

      private int numNeg_ ;
      /**
       * uint32 num_neg = 2 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public int getNumNeg() {
        return numNeg_;
      }
      /**
       * uint32 num_neg = 2 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public Builder setNumNeg(int value) {
        
        numNeg_ = value;
        onChanged();
        return this;
      }
      /**
       * uint32 num_neg = 2 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public Builder clearNumNeg() {
        
        numNeg_ = 0;
        onChanged();
        return this;
      }

      private int numTot_ ;
      /**
       * uint32 num_tot = 3 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public int getNumTot() {
        return numTot_;
      }
      /**
       * uint32 num_tot = 3 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public Builder setNumTot(int value) {
        
        numTot_ = value;
        onChanged();
        return this;
      }
      /**
       * uint32 num_tot = 3 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public Builder clearNumTot() {
        
        numTot_ = 0;
        onChanged();
        return this;
      }

      private float rocAuc_ ;
      /**
       * float roc_auc = 4 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public float getRocAuc() {
        return rocAuc_;
      }
      /**
       * float roc_auc = 4 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public Builder setRocAuc(float value) {
        
        rocAuc_ = value;
        onChanged();
        return this;
      }
      /**
       * float roc_auc = 4 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public Builder clearRocAuc() {
        
        rocAuc_ = 0F;
        onChanged();
        return this;
      }

      private float f1_ ;
      /**
       * float f1 = 5 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public float getF1() {
        return f1_;
      }
      /**
       * float f1 = 5 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public Builder setF1(float value) {
        
        f1_ = value;
        onChanged();
        return this;
      }
      /**
       * float f1 = 5 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public Builder clearF1() {
        
        f1_ = 0F;
        onChanged();
        return this;
      }

      private clarifai2.internal.grpc.api.ConceptOuterClass.Concept concept_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          clarifai2.internal.grpc.api.ConceptOuterClass.Concept, clarifai2.internal.grpc.api.ConceptOuterClass.Concept.Builder, clarifai2.internal.grpc.api.ConceptOuterClass.ConceptOrBuilder> conceptBuilder_;
      /**
       * .clarifai.api.Concept concept = 6;
       */
      public boolean hasConcept() {
        return conceptBuilder_ != null || concept_ != null;
      }
      /**
       * .clarifai.api.Concept concept = 6;
       */
      public clarifai2.internal.grpc.api.ConceptOuterClass.Concept getConcept() {
        if (conceptBuilder_ == null) {
          return concept_ == null ? clarifai2.internal.grpc.api.ConceptOuterClass.Concept.getDefaultInstance() : concept_;
        } else {
          return conceptBuilder_.getMessage();
        }
      }
      /**
       * .clarifai.api.Concept concept = 6;
       */
      public Builder setConcept(clarifai2.internal.grpc.api.ConceptOuterClass.Concept value) {
        if (conceptBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          concept_ = value;
          onChanged();
        } else {
          conceptBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * .clarifai.api.Concept concept = 6;
       */
      public Builder setConcept(
          clarifai2.internal.grpc.api.ConceptOuterClass.Concept.Builder builderForValue) {
        if (conceptBuilder_ == null) {
          concept_ = builderForValue.build();
          onChanged();
        } else {
          conceptBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * .clarifai.api.Concept concept = 6;
       */
      public Builder mergeConcept(clarifai2.internal.grpc.api.ConceptOuterClass.Concept value) {
        if (conceptBuilder_ == null) {
          if (concept_ != null) {
            concept_ =
              clarifai2.internal.grpc.api.ConceptOuterClass.Concept.newBuilder(concept_).mergeFrom(value).buildPartial();
          } else {
            concept_ = value;
          }
          onChanged();
        } else {
          conceptBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * .clarifai.api.Concept concept = 6;
       */
      public Builder clearConcept() {
        if (conceptBuilder_ == null) {
          concept_ = null;
          onChanged();
        } else {
          concept_ = null;
          conceptBuilder_ = null;
        }

        return this;
      }
      /**
       * .clarifai.api.Concept concept = 6;
       */
      public clarifai2.internal.grpc.api.ConceptOuterClass.Concept.Builder getConceptBuilder() {
        
        onChanged();
        return getConceptFieldBuilder().getBuilder();
      }
      /**
       * .clarifai.api.Concept concept = 6;
       */
      public clarifai2.internal.grpc.api.ConceptOuterClass.ConceptOrBuilder getConceptOrBuilder() {
        if (conceptBuilder_ != null) {
          return conceptBuilder_.getMessageOrBuilder();
        } else {
          return concept_ == null ?
              clarifai2.internal.grpc.api.ConceptOuterClass.Concept.getDefaultInstance() : concept_;
        }
      }
      /**
       * .clarifai.api.Concept concept = 6;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          clarifai2.internal.grpc.api.ConceptOuterClass.Concept, clarifai2.internal.grpc.api.ConceptOuterClass.Concept.Builder, clarifai2.internal.grpc.api.ConceptOuterClass.ConceptOrBuilder> 
          getConceptFieldBuilder() {
        if (conceptBuilder_ == null) {
          conceptBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              clarifai2.internal.grpc.api.ConceptOuterClass.Concept, clarifai2.internal.grpc.api.ConceptOuterClass.Concept.Builder, clarifai2.internal.grpc.api.ConceptOuterClass.ConceptOrBuilder>(
                  getConcept(),
                  getParentForChildren(),
                  isClean());
          concept_ = null;
        }
        return conceptBuilder_;
      }

      private clarifai2.internal.grpc.api.ModelVersionOuterClass.ROC rocCurve_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          clarifai2.internal.grpc.api.ModelVersionOuterClass.ROC, clarifai2.internal.grpc.api.ModelVersionOuterClass.ROC.Builder, clarifai2.internal.grpc.api.ModelVersionOuterClass.ROCOrBuilder> rocCurveBuilder_;
      /**
       * .clarifai.api.ROC roc_curve = 7;
       */
      public boolean hasRocCurve() {
        return rocCurveBuilder_ != null || rocCurve_ != null;
      }
      /**
       * .clarifai.api.ROC roc_curve = 7;
       */
      public clarifai2.internal.grpc.api.ModelVersionOuterClass.ROC getRocCurve() {
        if (rocCurveBuilder_ == null) {
          return rocCurve_ == null ? clarifai2.internal.grpc.api.ModelVersionOuterClass.ROC.getDefaultInstance() : rocCurve_;
        } else {
          return rocCurveBuilder_.getMessage();
        }
      }
      /**
       * .clarifai.api.ROC roc_curve = 7;
       */
      public Builder setRocCurve(clarifai2.internal.grpc.api.ModelVersionOuterClass.ROC value) {
        if (rocCurveBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          rocCurve_ = value;
          onChanged();
        } else {
          rocCurveBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * .clarifai.api.ROC roc_curve = 7;
       */
      public Builder setRocCurve(
          clarifai2.internal.grpc.api.ModelVersionOuterClass.ROC.Builder builderForValue) {
        if (rocCurveBuilder_ == null) {
          rocCurve_ = builderForValue.build();
          onChanged();
        } else {
          rocCurveBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * .clarifai.api.ROC roc_curve = 7;
       */
      public Builder mergeRocCurve(clarifai2.internal.grpc.api.ModelVersionOuterClass.ROC value) {
        if (rocCurveBuilder_ == null) {
          if (rocCurve_ != null) {
            rocCurve_ =
              clarifai2.internal.grpc.api.ModelVersionOuterClass.ROC.newBuilder(rocCurve_).mergeFrom(value).buildPartial();
          } else {
            rocCurve_ = value;
          }
          onChanged();
        } else {
          rocCurveBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * .clarifai.api.ROC roc_curve = 7;
       */
      public Builder clearRocCurve() {
        if (rocCurveBuilder_ == null) {
          rocCurve_ = null;
          onChanged();
        } else {
          rocCurve_ = null;
          rocCurveBuilder_ = null;
        }

        return this;
      }
      /**
       * .clarifai.api.ROC roc_curve = 7;
       */
      public clarifai2.internal.grpc.api.ModelVersionOuterClass.ROC.Builder getRocCurveBuilder() {
        
        onChanged();
        return getRocCurveFieldBuilder().getBuilder();
      }
      /**
       * .clarifai.api.ROC roc_curve = 7;
       */
      public clarifai2.internal.grpc.api.ModelVersionOuterClass.ROCOrBuilder getRocCurveOrBuilder() {
        if (rocCurveBuilder_ != null) {
          return rocCurveBuilder_.getMessageOrBuilder();
        } else {
          return rocCurve_ == null ?
              clarifai2.internal.grpc.api.ModelVersionOuterClass.ROC.getDefaultInstance() : rocCurve_;
        }
      }
      /**
       * .clarifai.api.ROC roc_curve = 7;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          clarifai2.internal.grpc.api.ModelVersionOuterClass.ROC, clarifai2.internal.grpc.api.ModelVersionOuterClass.ROC.Builder, clarifai2.internal.grpc.api.ModelVersionOuterClass.ROCOrBuilder> 
          getRocCurveFieldBuilder() {
        if (rocCurveBuilder_ == null) {
          rocCurveBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              clarifai2.internal.grpc.api.ModelVersionOuterClass.ROC, clarifai2.internal.grpc.api.ModelVersionOuterClass.ROC.Builder, clarifai2.internal.grpc.api.ModelVersionOuterClass.ROCOrBuilder>(
                  getRocCurve(),
                  getParentForChildren(),
                  isClean());
          rocCurve_ = null;
        }
        return rocCurveBuilder_;
      }

      private clarifai2.internal.grpc.api.ModelVersionOuterClass.PrecisionRecallCurve precisionRecallCurve_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          clarifai2.internal.grpc.api.ModelVersionOuterClass.PrecisionRecallCurve, clarifai2.internal.grpc.api.ModelVersionOuterClass.PrecisionRecallCurve.Builder, clarifai2.internal.grpc.api.ModelVersionOuterClass.PrecisionRecallCurveOrBuilder> precisionRecallCurveBuilder_;
      /**
       * .clarifai.api.PrecisionRecallCurve precision_recall_curve = 8;
       */
      public boolean hasPrecisionRecallCurve() {
        return precisionRecallCurveBuilder_ != null || precisionRecallCurve_ != null;
      }
      /**
       * .clarifai.api.PrecisionRecallCurve precision_recall_curve = 8;
       */
      public clarifai2.internal.grpc.api.ModelVersionOuterClass.PrecisionRecallCurve getPrecisionRecallCurve() {
        if (precisionRecallCurveBuilder_ == null) {
          return precisionRecallCurve_ == null ? clarifai2.internal.grpc.api.ModelVersionOuterClass.PrecisionRecallCurve.getDefaultInstance() : precisionRecallCurve_;
        } else {
          return precisionRecallCurveBuilder_.getMessage();
        }
      }
      /**
       * .clarifai.api.PrecisionRecallCurve precision_recall_curve = 8;
       */
      public Builder setPrecisionRecallCurve(clarifai2.internal.grpc.api.ModelVersionOuterClass.PrecisionRecallCurve value) {
        if (precisionRecallCurveBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          precisionRecallCurve_ = value;
          onChanged();
        } else {
          precisionRecallCurveBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * .clarifai.api.PrecisionRecallCurve precision_recall_curve = 8;
       */
      public Builder setPrecisionRecallCurve(
          clarifai2.internal.grpc.api.ModelVersionOuterClass.PrecisionRecallCurve.Builder builderForValue) {
        if (precisionRecallCurveBuilder_ == null) {
          precisionRecallCurve_ = builderForValue.build();
          onChanged();
        } else {
          precisionRecallCurveBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * .clarifai.api.PrecisionRecallCurve precision_recall_curve = 8;
       */
      public Builder mergePrecisionRecallCurve(clarifai2.internal.grpc.api.ModelVersionOuterClass.PrecisionRecallCurve value) {
        if (precisionRecallCurveBuilder_ == null) {
          if (precisionRecallCurve_ != null) {
            precisionRecallCurve_ =
              clarifai2.internal.grpc.api.ModelVersionOuterClass.PrecisionRecallCurve.newBuilder(precisionRecallCurve_).mergeFrom(value).buildPartial();
          } else {
            precisionRecallCurve_ = value;
          }
          onChanged();
        } else {
          precisionRecallCurveBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * .clarifai.api.PrecisionRecallCurve precision_recall_curve = 8;
       */
      public Builder clearPrecisionRecallCurve() {
        if (precisionRecallCurveBuilder_ == null) {
          precisionRecallCurve_ = null;
          onChanged();
        } else {
          precisionRecallCurve_ = null;
          precisionRecallCurveBuilder_ = null;
        }

        return this;
      }
      /**
       * .clarifai.api.PrecisionRecallCurve precision_recall_curve = 8;
       */
      public clarifai2.internal.grpc.api.ModelVersionOuterClass.PrecisionRecallCurve.Builder getPrecisionRecallCurveBuilder() {
        
        onChanged();
        return getPrecisionRecallCurveFieldBuilder().getBuilder();
      }
      /**
       * .clarifai.api.PrecisionRecallCurve precision_recall_curve = 8;
       */
      public clarifai2.internal.grpc.api.ModelVersionOuterClass.PrecisionRecallCurveOrBuilder getPrecisionRecallCurveOrBuilder() {
        if (precisionRecallCurveBuilder_ != null) {
          return precisionRecallCurveBuilder_.getMessageOrBuilder();
        } else {
          return precisionRecallCurve_ == null ?
              clarifai2.internal.grpc.api.ModelVersionOuterClass.PrecisionRecallCurve.getDefaultInstance() : precisionRecallCurve_;
        }
      }
      /**
       * .clarifai.api.PrecisionRecallCurve precision_recall_curve = 8;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          clarifai2.internal.grpc.api.ModelVersionOuterClass.PrecisionRecallCurve, clarifai2.internal.grpc.api.ModelVersionOuterClass.PrecisionRecallCurve.Builder, clarifai2.internal.grpc.api.ModelVersionOuterClass.PrecisionRecallCurveOrBuilder> 
          getPrecisionRecallCurveFieldBuilder() {
        if (precisionRecallCurveBuilder_ == null) {
          precisionRecallCurveBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              clarifai2.internal.grpc.api.ModelVersionOuterClass.PrecisionRecallCurve, clarifai2.internal.grpc.api.ModelVersionOuterClass.PrecisionRecallCurve.Builder, clarifai2.internal.grpc.api.ModelVersionOuterClass.PrecisionRecallCurveOrBuilder>(
                  getPrecisionRecallCurve(),
                  getParentForChildren(),
                  isClean());
          precisionRecallCurve_ = null;
        }
        return precisionRecallCurveBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:clarifai.api.BinaryMetrics)
    }

    // @@protoc_insertion_point(class_scope:clarifai.api.BinaryMetrics)
    private static final clarifai2.internal.grpc.api.ModelVersionOuterClass.BinaryMetrics DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new clarifai2.internal.grpc.api.ModelVersionOuterClass.BinaryMetrics();
    }

    public static clarifai2.internal.grpc.api.ModelVersionOuterClass.BinaryMetrics getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public clarifai2.internal.grpc.api.ModelVersionOuterClass.BinaryMetrics getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface EvalTestSetEntryOrBuilder extends
      // @@protoc_insertion_point(interface_extends:clarifai.api.EvalTestSetEntry)
      com.google.protobuf.MessageOrBuilder {

    /**
     * string id = 1;
     */
    java.lang.String getId();
    /**
     * string id = 1;
     */
    com.google.protobuf.ByteString
        getIdBytes();

    /**
     * string url = 2;
     */
    java.lang.String getUrl();
    /**
     * string url = 2;
     */
    com.google.protobuf.ByteString
        getUrlBytes();

    /**
     * repeated .clarifai.api.Concept predicted_concepts = 3;
     */
    java.util.List 
        getPredictedConceptsList();
    /**
     * repeated .clarifai.api.Concept predicted_concepts = 3;
     */
    clarifai2.internal.grpc.api.ConceptOuterClass.Concept getPredictedConcepts(int index);
    /**
     * repeated .clarifai.api.Concept predicted_concepts = 3;
     */
    int getPredictedConceptsCount();
    /**
     * repeated .clarifai.api.Concept predicted_concepts = 3;
     */
    java.util.List 
        getPredictedConceptsOrBuilderList();
    /**
     * repeated .clarifai.api.Concept predicted_concepts = 3;
     */
    clarifai2.internal.grpc.api.ConceptOuterClass.ConceptOrBuilder getPredictedConceptsOrBuilder(
        int index);

    /**
     * repeated .clarifai.api.Concept ground_truth_concepts = 4;
     */
    java.util.List 
        getGroundTruthConceptsList();
    /**
     * repeated .clarifai.api.Concept ground_truth_concepts = 4;
     */
    clarifai2.internal.grpc.api.ConceptOuterClass.Concept getGroundTruthConcepts(int index);
    /**
     * repeated .clarifai.api.Concept ground_truth_concepts = 4;
     */
    int getGroundTruthConceptsCount();
    /**
     * repeated .clarifai.api.Concept ground_truth_concepts = 4;
     */
    java.util.List 
        getGroundTruthConceptsOrBuilderList();
    /**
     * repeated .clarifai.api.Concept ground_truth_concepts = 4;
     */
    clarifai2.internal.grpc.api.ConceptOuterClass.ConceptOrBuilder getGroundTruthConceptsOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code clarifai.api.EvalTestSetEntry}
   */
  public  static final class EvalTestSetEntry extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:clarifai.api.EvalTestSetEntry)
      EvalTestSetEntryOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use EvalTestSetEntry.newBuilder() to construct.
    private EvalTestSetEntry(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private EvalTestSetEntry() {
      id_ = "";
      url_ = "";
      predictedConcepts_ = java.util.Collections.emptyList();
      groundTruthConcepts_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private EvalTestSetEntry(
        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;
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

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

              url_ = s;
              break;
            }
            case 26: {
              if (!((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
                predictedConcepts_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000004;
              }
              predictedConcepts_.add(
                  input.readMessage(clarifai2.internal.grpc.api.ConceptOuterClass.Concept.parser(), extensionRegistry));
              break;
            }
            case 34: {
              if (!((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
                groundTruthConcepts_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000008;
              }
              groundTruthConcepts_.add(
                  input.readMessage(clarifai2.internal.grpc.api.ConceptOuterClass.Concept.parser(), extensionRegistry));
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) {
          predictedConcepts_ = java.util.Collections.unmodifiableList(predictedConcepts_);
        }
        if (((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
          groundTruthConcepts_ = java.util.Collections.unmodifiableList(groundTruthConcepts_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_EvalTestSetEntry_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_EvalTestSetEntry_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalTestSetEntry.class, clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalTestSetEntry.Builder.class);
    }

    private int bitField0_;
    public static final int ID_FIELD_NUMBER = 1;
    private volatile java.lang.Object id_;
    /**
     * string id = 1;
     */
    public java.lang.String getId() {
      java.lang.Object ref = id_;
      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();
        id_ = s;
        return s;
      }
    }
    /**
     * string id = 1;
     */
    public com.google.protobuf.ByteString
        getIdBytes() {
      java.lang.Object ref = id_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        id_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int URL_FIELD_NUMBER = 2;
    private volatile java.lang.Object url_;
    /**
     * string url = 2;
     */
    public java.lang.String getUrl() {
      java.lang.Object ref = url_;
      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();
        url_ = s;
        return s;
      }
    }
    /**
     * string url = 2;
     */
    public com.google.protobuf.ByteString
        getUrlBytes() {
      java.lang.Object ref = url_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        url_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int PREDICTED_CONCEPTS_FIELD_NUMBER = 3;
    private java.util.List predictedConcepts_;
    /**
     * repeated .clarifai.api.Concept predicted_concepts = 3;
     */
    public java.util.List getPredictedConceptsList() {
      return predictedConcepts_;
    }
    /**
     * repeated .clarifai.api.Concept predicted_concepts = 3;
     */
    public java.util.List 
        getPredictedConceptsOrBuilderList() {
      return predictedConcepts_;
    }
    /**
     * repeated .clarifai.api.Concept predicted_concepts = 3;
     */
    public int getPredictedConceptsCount() {
      return predictedConcepts_.size();
    }
    /**
     * repeated .clarifai.api.Concept predicted_concepts = 3;
     */
    public clarifai2.internal.grpc.api.ConceptOuterClass.Concept getPredictedConcepts(int index) {
      return predictedConcepts_.get(index);
    }
    /**
     * repeated .clarifai.api.Concept predicted_concepts = 3;
     */
    public clarifai2.internal.grpc.api.ConceptOuterClass.ConceptOrBuilder getPredictedConceptsOrBuilder(
        int index) {
      return predictedConcepts_.get(index);
    }

    public static final int GROUND_TRUTH_CONCEPTS_FIELD_NUMBER = 4;
    private java.util.List groundTruthConcepts_;
    /**
     * repeated .clarifai.api.Concept ground_truth_concepts = 4;
     */
    public java.util.List getGroundTruthConceptsList() {
      return groundTruthConcepts_;
    }
    /**
     * repeated .clarifai.api.Concept ground_truth_concepts = 4;
     */
    public java.util.List 
        getGroundTruthConceptsOrBuilderList() {
      return groundTruthConcepts_;
    }
    /**
     * repeated .clarifai.api.Concept ground_truth_concepts = 4;
     */
    public int getGroundTruthConceptsCount() {
      return groundTruthConcepts_.size();
    }
    /**
     * repeated .clarifai.api.Concept ground_truth_concepts = 4;
     */
    public clarifai2.internal.grpc.api.ConceptOuterClass.Concept getGroundTruthConcepts(int index) {
      return groundTruthConcepts_.get(index);
    }
    /**
     * repeated .clarifai.api.Concept ground_truth_concepts = 4;
     */
    public clarifai2.internal.grpc.api.ConceptOuterClass.ConceptOrBuilder getGroundTruthConceptsOrBuilder(
        int index) {
      return groundTruthConcepts_.get(index);
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, id_);
      }
      if (!getUrlBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, url_);
      }
      for (int i = 0; i < predictedConcepts_.size(); i++) {
        output.writeMessage(3, predictedConcepts_.get(i));
      }
      for (int i = 0; i < groundTruthConcepts_.size(); i++) {
        output.writeMessage(4, groundTruthConcepts_.get(i));
      }
      unknownFields.writeTo(output);
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!getIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, id_);
      }
      if (!getUrlBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, url_);
      }
      for (int i = 0; i < predictedConcepts_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, predictedConcepts_.get(i));
      }
      for (int i = 0; i < groundTruthConcepts_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, groundTruthConcepts_.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 clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalTestSetEntry)) {
        return super.equals(obj);
      }
      clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalTestSetEntry other = (clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalTestSetEntry) obj;

      boolean result = true;
      result = result && getId()
          .equals(other.getId());
      result = result && getUrl()
          .equals(other.getUrl());
      result = result && getPredictedConceptsList()
          .equals(other.getPredictedConceptsList());
      result = result && getGroundTruthConceptsList()
          .equals(other.getGroundTruthConceptsList());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + ID_FIELD_NUMBER;
      hash = (53 * hash) + getId().hashCode();
      hash = (37 * hash) + URL_FIELD_NUMBER;
      hash = (53 * hash) + getUrl().hashCode();
      if (getPredictedConceptsCount() > 0) {
        hash = (37 * hash) + PREDICTED_CONCEPTS_FIELD_NUMBER;
        hash = (53 * hash) + getPredictedConceptsList().hashCode();
      }
      if (getGroundTruthConceptsCount() > 0) {
        hash = (37 * hash) + GROUND_TRUTH_CONCEPTS_FIELD_NUMBER;
        hash = (53 * hash) + getGroundTruthConceptsList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalTestSetEntry prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code clarifai.api.EvalTestSetEntry}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:clarifai.api.EvalTestSetEntry)
        clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalTestSetEntryOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_EvalTestSetEntry_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_EvalTestSetEntry_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalTestSetEntry.class, clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalTestSetEntry.Builder.class);
      }

      // Construct using clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalTestSetEntry.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getPredictedConceptsFieldBuilder();
          getGroundTruthConceptsFieldBuilder();
        }
      }
      public Builder clear() {
        super.clear();
        id_ = "";

        url_ = "";

        if (predictedConceptsBuilder_ == null) {
          predictedConcepts_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000004);
        } else {
          predictedConceptsBuilder_.clear();
        }
        if (groundTruthConceptsBuilder_ == null) {
          groundTruthConcepts_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000008);
        } else {
          groundTruthConceptsBuilder_.clear();
        }
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_EvalTestSetEntry_descriptor;
      }

      public clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalTestSetEntry getDefaultInstanceForType() {
        return clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalTestSetEntry.getDefaultInstance();
      }

      public clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalTestSetEntry build() {
        clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalTestSetEntry result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalTestSetEntry buildPartial() {
        clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalTestSetEntry result = new clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalTestSetEntry(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        result.id_ = id_;
        result.url_ = url_;
        if (predictedConceptsBuilder_ == null) {
          if (((bitField0_ & 0x00000004) == 0x00000004)) {
            predictedConcepts_ = java.util.Collections.unmodifiableList(predictedConcepts_);
            bitField0_ = (bitField0_ & ~0x00000004);
          }
          result.predictedConcepts_ = predictedConcepts_;
        } else {
          result.predictedConcepts_ = predictedConceptsBuilder_.build();
        }
        if (groundTruthConceptsBuilder_ == null) {
          if (((bitField0_ & 0x00000008) == 0x00000008)) {
            groundTruthConcepts_ = java.util.Collections.unmodifiableList(groundTruthConcepts_);
            bitField0_ = (bitField0_ & ~0x00000008);
          }
          result.groundTruthConcepts_ = groundTruthConcepts_;
        } else {
          result.groundTruthConcepts_ = groundTruthConceptsBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalTestSetEntry) {
          return mergeFrom((clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalTestSetEntry)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalTestSetEntry other) {
        if (other == clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalTestSetEntry.getDefaultInstance()) return this;
        if (!other.getId().isEmpty()) {
          id_ = other.id_;
          onChanged();
        }
        if (!other.getUrl().isEmpty()) {
          url_ = other.url_;
          onChanged();
        }
        if (predictedConceptsBuilder_ == null) {
          if (!other.predictedConcepts_.isEmpty()) {
            if (predictedConcepts_.isEmpty()) {
              predictedConcepts_ = other.predictedConcepts_;
              bitField0_ = (bitField0_ & ~0x00000004);
            } else {
              ensurePredictedConceptsIsMutable();
              predictedConcepts_.addAll(other.predictedConcepts_);
            }
            onChanged();
          }
        } else {
          if (!other.predictedConcepts_.isEmpty()) {
            if (predictedConceptsBuilder_.isEmpty()) {
              predictedConceptsBuilder_.dispose();
              predictedConceptsBuilder_ = null;
              predictedConcepts_ = other.predictedConcepts_;
              bitField0_ = (bitField0_ & ~0x00000004);
              predictedConceptsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getPredictedConceptsFieldBuilder() : null;
            } else {
              predictedConceptsBuilder_.addAllMessages(other.predictedConcepts_);
            }
          }
        }
        if (groundTruthConceptsBuilder_ == null) {
          if (!other.groundTruthConcepts_.isEmpty()) {
            if (groundTruthConcepts_.isEmpty()) {
              groundTruthConcepts_ = other.groundTruthConcepts_;
              bitField0_ = (bitField0_ & ~0x00000008);
            } else {
              ensureGroundTruthConceptsIsMutable();
              groundTruthConcepts_.addAll(other.groundTruthConcepts_);
            }
            onChanged();
          }
        } else {
          if (!other.groundTruthConcepts_.isEmpty()) {
            if (groundTruthConceptsBuilder_.isEmpty()) {
              groundTruthConceptsBuilder_.dispose();
              groundTruthConceptsBuilder_ = null;
              groundTruthConcepts_ = other.groundTruthConcepts_;
              bitField0_ = (bitField0_ & ~0x00000008);
              groundTruthConceptsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getGroundTruthConceptsFieldBuilder() : null;
            } else {
              groundTruthConceptsBuilder_.addAllMessages(other.groundTruthConcepts_);
            }
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalTestSetEntry parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalTestSetEntry) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.lang.Object id_ = "";
      /**
       * string id = 1;
       */
      public java.lang.String getId() {
        java.lang.Object ref = id_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          id_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string id = 1;
       */
      public com.google.protobuf.ByteString
          getIdBytes() {
        java.lang.Object ref = id_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          id_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string id = 1;
       */
      public Builder setId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        id_ = value;
        onChanged();
        return this;
      }
      /**
       * string id = 1;
       */
      public Builder clearId() {
        
        id_ = getDefaultInstance().getId();
        onChanged();
        return this;
      }
      /**
       * string id = 1;
       */
      public Builder setIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        id_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object url_ = "";
      /**
       * string url = 2;
       */
      public java.lang.String getUrl() {
        java.lang.Object ref = url_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          url_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string url = 2;
       */
      public com.google.protobuf.ByteString
          getUrlBytes() {
        java.lang.Object ref = url_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          url_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string url = 2;
       */
      public Builder setUrl(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        url_ = value;
        onChanged();
        return this;
      }
      /**
       * string url = 2;
       */
      public Builder clearUrl() {
        
        url_ = getDefaultInstance().getUrl();
        onChanged();
        return this;
      }
      /**
       * string url = 2;
       */
      public Builder setUrlBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        url_ = value;
        onChanged();
        return this;
      }

      private java.util.List predictedConcepts_ =
        java.util.Collections.emptyList();
      private void ensurePredictedConceptsIsMutable() {
        if (!((bitField0_ & 0x00000004) == 0x00000004)) {
          predictedConcepts_ = new java.util.ArrayList(predictedConcepts_);
          bitField0_ |= 0x00000004;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          clarifai2.internal.grpc.api.ConceptOuterClass.Concept, clarifai2.internal.grpc.api.ConceptOuterClass.Concept.Builder, clarifai2.internal.grpc.api.ConceptOuterClass.ConceptOrBuilder> predictedConceptsBuilder_;

      /**
       * repeated .clarifai.api.Concept predicted_concepts = 3;
       */
      public java.util.List getPredictedConceptsList() {
        if (predictedConceptsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(predictedConcepts_);
        } else {
          return predictedConceptsBuilder_.getMessageList();
        }
      }
      /**
       * repeated .clarifai.api.Concept predicted_concepts = 3;
       */
      public int getPredictedConceptsCount() {
        if (predictedConceptsBuilder_ == null) {
          return predictedConcepts_.size();
        } else {
          return predictedConceptsBuilder_.getCount();
        }
      }
      /**
       * repeated .clarifai.api.Concept predicted_concepts = 3;
       */
      public clarifai2.internal.grpc.api.ConceptOuterClass.Concept getPredictedConcepts(int index) {
        if (predictedConceptsBuilder_ == null) {
          return predictedConcepts_.get(index);
        } else {
          return predictedConceptsBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .clarifai.api.Concept predicted_concepts = 3;
       */
      public Builder setPredictedConcepts(
          int index, clarifai2.internal.grpc.api.ConceptOuterClass.Concept value) {
        if (predictedConceptsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePredictedConceptsIsMutable();
          predictedConcepts_.set(index, value);
          onChanged();
        } else {
          predictedConceptsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .clarifai.api.Concept predicted_concepts = 3;
       */
      public Builder setPredictedConcepts(
          int index, clarifai2.internal.grpc.api.ConceptOuterClass.Concept.Builder builderForValue) {
        if (predictedConceptsBuilder_ == null) {
          ensurePredictedConceptsIsMutable();
          predictedConcepts_.set(index, builderForValue.build());
          onChanged();
        } else {
          predictedConceptsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .clarifai.api.Concept predicted_concepts = 3;
       */
      public Builder addPredictedConcepts(clarifai2.internal.grpc.api.ConceptOuterClass.Concept value) {
        if (predictedConceptsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePredictedConceptsIsMutable();
          predictedConcepts_.add(value);
          onChanged();
        } else {
          predictedConceptsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .clarifai.api.Concept predicted_concepts = 3;
       */
      public Builder addPredictedConcepts(
          int index, clarifai2.internal.grpc.api.ConceptOuterClass.Concept value) {
        if (predictedConceptsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePredictedConceptsIsMutable();
          predictedConcepts_.add(index, value);
          onChanged();
        } else {
          predictedConceptsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .clarifai.api.Concept predicted_concepts = 3;
       */
      public Builder addPredictedConcepts(
          clarifai2.internal.grpc.api.ConceptOuterClass.Concept.Builder builderForValue) {
        if (predictedConceptsBuilder_ == null) {
          ensurePredictedConceptsIsMutable();
          predictedConcepts_.add(builderForValue.build());
          onChanged();
        } else {
          predictedConceptsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .clarifai.api.Concept predicted_concepts = 3;
       */
      public Builder addPredictedConcepts(
          int index, clarifai2.internal.grpc.api.ConceptOuterClass.Concept.Builder builderForValue) {
        if (predictedConceptsBuilder_ == null) {
          ensurePredictedConceptsIsMutable();
          predictedConcepts_.add(index, builderForValue.build());
          onChanged();
        } else {
          predictedConceptsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .clarifai.api.Concept predicted_concepts = 3;
       */
      public Builder addAllPredictedConcepts(
          java.lang.Iterable values) {
        if (predictedConceptsBuilder_ == null) {
          ensurePredictedConceptsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, predictedConcepts_);
          onChanged();
        } else {
          predictedConceptsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .clarifai.api.Concept predicted_concepts = 3;
       */
      public Builder clearPredictedConcepts() {
        if (predictedConceptsBuilder_ == null) {
          predictedConcepts_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000004);
          onChanged();
        } else {
          predictedConceptsBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .clarifai.api.Concept predicted_concepts = 3;
       */
      public Builder removePredictedConcepts(int index) {
        if (predictedConceptsBuilder_ == null) {
          ensurePredictedConceptsIsMutable();
          predictedConcepts_.remove(index);
          onChanged();
        } else {
          predictedConceptsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .clarifai.api.Concept predicted_concepts = 3;
       */
      public clarifai2.internal.grpc.api.ConceptOuterClass.Concept.Builder getPredictedConceptsBuilder(
          int index) {
        return getPredictedConceptsFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .clarifai.api.Concept predicted_concepts = 3;
       */
      public clarifai2.internal.grpc.api.ConceptOuterClass.ConceptOrBuilder getPredictedConceptsOrBuilder(
          int index) {
        if (predictedConceptsBuilder_ == null) {
          return predictedConcepts_.get(index);  } else {
          return predictedConceptsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .clarifai.api.Concept predicted_concepts = 3;
       */
      public java.util.List 
           getPredictedConceptsOrBuilderList() {
        if (predictedConceptsBuilder_ != null) {
          return predictedConceptsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(predictedConcepts_);
        }
      }
      /**
       * repeated .clarifai.api.Concept predicted_concepts = 3;
       */
      public clarifai2.internal.grpc.api.ConceptOuterClass.Concept.Builder addPredictedConceptsBuilder() {
        return getPredictedConceptsFieldBuilder().addBuilder(
            clarifai2.internal.grpc.api.ConceptOuterClass.Concept.getDefaultInstance());
      }
      /**
       * repeated .clarifai.api.Concept predicted_concepts = 3;
       */
      public clarifai2.internal.grpc.api.ConceptOuterClass.Concept.Builder addPredictedConceptsBuilder(
          int index) {
        return getPredictedConceptsFieldBuilder().addBuilder(
            index, clarifai2.internal.grpc.api.ConceptOuterClass.Concept.getDefaultInstance());
      }
      /**
       * repeated .clarifai.api.Concept predicted_concepts = 3;
       */
      public java.util.List 
           getPredictedConceptsBuilderList() {
        return getPredictedConceptsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          clarifai2.internal.grpc.api.ConceptOuterClass.Concept, clarifai2.internal.grpc.api.ConceptOuterClass.Concept.Builder, clarifai2.internal.grpc.api.ConceptOuterClass.ConceptOrBuilder> 
          getPredictedConceptsFieldBuilder() {
        if (predictedConceptsBuilder_ == null) {
          predictedConceptsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              clarifai2.internal.grpc.api.ConceptOuterClass.Concept, clarifai2.internal.grpc.api.ConceptOuterClass.Concept.Builder, clarifai2.internal.grpc.api.ConceptOuterClass.ConceptOrBuilder>(
                  predictedConcepts_,
                  ((bitField0_ & 0x00000004) == 0x00000004),
                  getParentForChildren(),
                  isClean());
          predictedConcepts_ = null;
        }
        return predictedConceptsBuilder_;
      }

      private java.util.List groundTruthConcepts_ =
        java.util.Collections.emptyList();
      private void ensureGroundTruthConceptsIsMutable() {
        if (!((bitField0_ & 0x00000008) == 0x00000008)) {
          groundTruthConcepts_ = new java.util.ArrayList(groundTruthConcepts_);
          bitField0_ |= 0x00000008;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          clarifai2.internal.grpc.api.ConceptOuterClass.Concept, clarifai2.internal.grpc.api.ConceptOuterClass.Concept.Builder, clarifai2.internal.grpc.api.ConceptOuterClass.ConceptOrBuilder> groundTruthConceptsBuilder_;

      /**
       * repeated .clarifai.api.Concept ground_truth_concepts = 4;
       */
      public java.util.List getGroundTruthConceptsList() {
        if (groundTruthConceptsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(groundTruthConcepts_);
        } else {
          return groundTruthConceptsBuilder_.getMessageList();
        }
      }
      /**
       * repeated .clarifai.api.Concept ground_truth_concepts = 4;
       */
      public int getGroundTruthConceptsCount() {
        if (groundTruthConceptsBuilder_ == null) {
          return groundTruthConcepts_.size();
        } else {
          return groundTruthConceptsBuilder_.getCount();
        }
      }
      /**
       * repeated .clarifai.api.Concept ground_truth_concepts = 4;
       */
      public clarifai2.internal.grpc.api.ConceptOuterClass.Concept getGroundTruthConcepts(int index) {
        if (groundTruthConceptsBuilder_ == null) {
          return groundTruthConcepts_.get(index);
        } else {
          return groundTruthConceptsBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .clarifai.api.Concept ground_truth_concepts = 4;
       */
      public Builder setGroundTruthConcepts(
          int index, clarifai2.internal.grpc.api.ConceptOuterClass.Concept value) {
        if (groundTruthConceptsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureGroundTruthConceptsIsMutable();
          groundTruthConcepts_.set(index, value);
          onChanged();
        } else {
          groundTruthConceptsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .clarifai.api.Concept ground_truth_concepts = 4;
       */
      public Builder setGroundTruthConcepts(
          int index, clarifai2.internal.grpc.api.ConceptOuterClass.Concept.Builder builderForValue) {
        if (groundTruthConceptsBuilder_ == null) {
          ensureGroundTruthConceptsIsMutable();
          groundTruthConcepts_.set(index, builderForValue.build());
          onChanged();
        } else {
          groundTruthConceptsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .clarifai.api.Concept ground_truth_concepts = 4;
       */
      public Builder addGroundTruthConcepts(clarifai2.internal.grpc.api.ConceptOuterClass.Concept value) {
        if (groundTruthConceptsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureGroundTruthConceptsIsMutable();
          groundTruthConcepts_.add(value);
          onChanged();
        } else {
          groundTruthConceptsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .clarifai.api.Concept ground_truth_concepts = 4;
       */
      public Builder addGroundTruthConcepts(
          int index, clarifai2.internal.grpc.api.ConceptOuterClass.Concept value) {
        if (groundTruthConceptsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureGroundTruthConceptsIsMutable();
          groundTruthConcepts_.add(index, value);
          onChanged();
        } else {
          groundTruthConceptsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .clarifai.api.Concept ground_truth_concepts = 4;
       */
      public Builder addGroundTruthConcepts(
          clarifai2.internal.grpc.api.ConceptOuterClass.Concept.Builder builderForValue) {
        if (groundTruthConceptsBuilder_ == null) {
          ensureGroundTruthConceptsIsMutable();
          groundTruthConcepts_.add(builderForValue.build());
          onChanged();
        } else {
          groundTruthConceptsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .clarifai.api.Concept ground_truth_concepts = 4;
       */
      public Builder addGroundTruthConcepts(
          int index, clarifai2.internal.grpc.api.ConceptOuterClass.Concept.Builder builderForValue) {
        if (groundTruthConceptsBuilder_ == null) {
          ensureGroundTruthConceptsIsMutable();
          groundTruthConcepts_.add(index, builderForValue.build());
          onChanged();
        } else {
          groundTruthConceptsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .clarifai.api.Concept ground_truth_concepts = 4;
       */
      public Builder addAllGroundTruthConcepts(
          java.lang.Iterable values) {
        if (groundTruthConceptsBuilder_ == null) {
          ensureGroundTruthConceptsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, groundTruthConcepts_);
          onChanged();
        } else {
          groundTruthConceptsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .clarifai.api.Concept ground_truth_concepts = 4;
       */
      public Builder clearGroundTruthConcepts() {
        if (groundTruthConceptsBuilder_ == null) {
          groundTruthConcepts_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000008);
          onChanged();
        } else {
          groundTruthConceptsBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .clarifai.api.Concept ground_truth_concepts = 4;
       */
      public Builder removeGroundTruthConcepts(int index) {
        if (groundTruthConceptsBuilder_ == null) {
          ensureGroundTruthConceptsIsMutable();
          groundTruthConcepts_.remove(index);
          onChanged();
        } else {
          groundTruthConceptsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .clarifai.api.Concept ground_truth_concepts = 4;
       */
      public clarifai2.internal.grpc.api.ConceptOuterClass.Concept.Builder getGroundTruthConceptsBuilder(
          int index) {
        return getGroundTruthConceptsFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .clarifai.api.Concept ground_truth_concepts = 4;
       */
      public clarifai2.internal.grpc.api.ConceptOuterClass.ConceptOrBuilder getGroundTruthConceptsOrBuilder(
          int index) {
        if (groundTruthConceptsBuilder_ == null) {
          return groundTruthConcepts_.get(index);  } else {
          return groundTruthConceptsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .clarifai.api.Concept ground_truth_concepts = 4;
       */
      public java.util.List 
           getGroundTruthConceptsOrBuilderList() {
        if (groundTruthConceptsBuilder_ != null) {
          return groundTruthConceptsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(groundTruthConcepts_);
        }
      }
      /**
       * repeated .clarifai.api.Concept ground_truth_concepts = 4;
       */
      public clarifai2.internal.grpc.api.ConceptOuterClass.Concept.Builder addGroundTruthConceptsBuilder() {
        return getGroundTruthConceptsFieldBuilder().addBuilder(
            clarifai2.internal.grpc.api.ConceptOuterClass.Concept.getDefaultInstance());
      }
      /**
       * repeated .clarifai.api.Concept ground_truth_concepts = 4;
       */
      public clarifai2.internal.grpc.api.ConceptOuterClass.Concept.Builder addGroundTruthConceptsBuilder(
          int index) {
        return getGroundTruthConceptsFieldBuilder().addBuilder(
            index, clarifai2.internal.grpc.api.ConceptOuterClass.Concept.getDefaultInstance());
      }
      /**
       * repeated .clarifai.api.Concept ground_truth_concepts = 4;
       */
      public java.util.List 
           getGroundTruthConceptsBuilderList() {
        return getGroundTruthConceptsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          clarifai2.internal.grpc.api.ConceptOuterClass.Concept, clarifai2.internal.grpc.api.ConceptOuterClass.Concept.Builder, clarifai2.internal.grpc.api.ConceptOuterClass.ConceptOrBuilder> 
          getGroundTruthConceptsFieldBuilder() {
        if (groundTruthConceptsBuilder_ == null) {
          groundTruthConceptsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              clarifai2.internal.grpc.api.ConceptOuterClass.Concept, clarifai2.internal.grpc.api.ConceptOuterClass.Concept.Builder, clarifai2.internal.grpc.api.ConceptOuterClass.ConceptOrBuilder>(
                  groundTruthConcepts_,
                  ((bitField0_ & 0x00000008) == 0x00000008),
                  getParentForChildren(),
                  isClean());
          groundTruthConcepts_ = null;
        }
        return groundTruthConceptsBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:clarifai.api.EvalTestSetEntry)
    }

    // @@protoc_insertion_point(class_scope:clarifai.api.EvalTestSetEntry)
    private static final clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalTestSetEntry DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalTestSetEntry();
    }

    public static clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalTestSetEntry getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalTestSetEntry getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface MetricsSummaryOrBuilder extends
      // @@protoc_insertion_point(interface_extends:clarifai.api.MetricsSummary)
      com.google.protobuf.MessageOrBuilder {

    /**
     * float top1_accuracy = 1 [deprecated = true];
     */
    @java.lang.Deprecated float getTop1Accuracy();

    /**
     * float top5_accuracy = 2 [deprecated = true];
     */
    @java.lang.Deprecated float getTop5Accuracy();

    /**
     * float macro_avg_roc_auc = 3 [(.clarifai.api.utils.cl_show_if_empty) = true];
     */
    float getMacroAvgRocAuc();

    /**
     * float macro_std_roc_auc = 4 [(.clarifai.api.utils.cl_show_if_empty) = true];
     */
    float getMacroStdRocAuc();

    /**
     * float macro_avg_f1_score = 5 [(.clarifai.api.utils.cl_show_if_empty) = true];
     */
    float getMacroAvgF1Score();

    /**
     * float macro_std_f1_score = 6 [(.clarifai.api.utils.cl_show_if_empty) = true];
     */
    float getMacroStdF1Score();

    /**
     * float macro_avg_precision = 7 [(.clarifai.api.utils.cl_show_if_empty) = true];
     */
    float getMacroAvgPrecision();

    /**
     * float macro_avg_recall = 8 [(.clarifai.api.utils.cl_show_if_empty) = true];
     */
    float getMacroAvgRecall();
  }
  /**
   * Protobuf type {@code clarifai.api.MetricsSummary}
   */
  public  static final class MetricsSummary extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:clarifai.api.MetricsSummary)
      MetricsSummaryOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use MetricsSummary.newBuilder() to construct.
    private MetricsSummary(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private MetricsSummary() {
      top1Accuracy_ = 0F;
      top5Accuracy_ = 0F;
      macroAvgRocAuc_ = 0F;
      macroStdRocAuc_ = 0F;
      macroAvgF1Score_ = 0F;
      macroStdF1Score_ = 0F;
      macroAvgPrecision_ = 0F;
      macroAvgRecall_ = 0F;
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private MetricsSummary(
        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;
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 13: {

              top1Accuracy_ = input.readFloat();
              break;
            }
            case 21: {

              top5Accuracy_ = input.readFloat();
              break;
            }
            case 29: {

              macroAvgRocAuc_ = input.readFloat();
              break;
            }
            case 37: {

              macroStdRocAuc_ = input.readFloat();
              break;
            }
            case 45: {

              macroAvgF1Score_ = input.readFloat();
              break;
            }
            case 53: {

              macroStdF1Score_ = input.readFloat();
              break;
            }
            case 61: {

              macroAvgPrecision_ = input.readFloat();
              break;
            }
            case 69: {

              macroAvgRecall_ = input.readFloat();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_MetricsSummary_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_MetricsSummary_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              clarifai2.internal.grpc.api.ModelVersionOuterClass.MetricsSummary.class, clarifai2.internal.grpc.api.ModelVersionOuterClass.MetricsSummary.Builder.class);
    }

    public static final int TOP1_ACCURACY_FIELD_NUMBER = 1;
    private float top1Accuracy_;
    /**
     * float top1_accuracy = 1 [deprecated = true];
     */
    @java.lang.Deprecated public float getTop1Accuracy() {
      return top1Accuracy_;
    }

    public static final int TOP5_ACCURACY_FIELD_NUMBER = 2;
    private float top5Accuracy_;
    /**
     * float top5_accuracy = 2 [deprecated = true];
     */
    @java.lang.Deprecated public float getTop5Accuracy() {
      return top5Accuracy_;
    }

    public static final int MACRO_AVG_ROC_AUC_FIELD_NUMBER = 3;
    private float macroAvgRocAuc_;
    /**
     * float macro_avg_roc_auc = 3 [(.clarifai.api.utils.cl_show_if_empty) = true];
     */
    public float getMacroAvgRocAuc() {
      return macroAvgRocAuc_;
    }

    public static final int MACRO_STD_ROC_AUC_FIELD_NUMBER = 4;
    private float macroStdRocAuc_;
    /**
     * float macro_std_roc_auc = 4 [(.clarifai.api.utils.cl_show_if_empty) = true];
     */
    public float getMacroStdRocAuc() {
      return macroStdRocAuc_;
    }

    public static final int MACRO_AVG_F1_SCORE_FIELD_NUMBER = 5;
    private float macroAvgF1Score_;
    /**
     * float macro_avg_f1_score = 5 [(.clarifai.api.utils.cl_show_if_empty) = true];
     */
    public float getMacroAvgF1Score() {
      return macroAvgF1Score_;
    }

    public static final int MACRO_STD_F1_SCORE_FIELD_NUMBER = 6;
    private float macroStdF1Score_;
    /**
     * float macro_std_f1_score = 6 [(.clarifai.api.utils.cl_show_if_empty) = true];
     */
    public float getMacroStdF1Score() {
      return macroStdF1Score_;
    }

    public static final int MACRO_AVG_PRECISION_FIELD_NUMBER = 7;
    private float macroAvgPrecision_;
    /**
     * float macro_avg_precision = 7 [(.clarifai.api.utils.cl_show_if_empty) = true];
     */
    public float getMacroAvgPrecision() {
      return macroAvgPrecision_;
    }

    public static final int MACRO_AVG_RECALL_FIELD_NUMBER = 8;
    private float macroAvgRecall_;
    /**
     * float macro_avg_recall = 8 [(.clarifai.api.utils.cl_show_if_empty) = true];
     */
    public float getMacroAvgRecall() {
      return macroAvgRecall_;
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (top1Accuracy_ != 0F) {
        output.writeFloat(1, top1Accuracy_);
      }
      if (top5Accuracy_ != 0F) {
        output.writeFloat(2, top5Accuracy_);
      }
      if (macroAvgRocAuc_ != 0F) {
        output.writeFloat(3, macroAvgRocAuc_);
      }
      if (macroStdRocAuc_ != 0F) {
        output.writeFloat(4, macroStdRocAuc_);
      }
      if (macroAvgF1Score_ != 0F) {
        output.writeFloat(5, macroAvgF1Score_);
      }
      if (macroStdF1Score_ != 0F) {
        output.writeFloat(6, macroStdF1Score_);
      }
      if (macroAvgPrecision_ != 0F) {
        output.writeFloat(7, macroAvgPrecision_);
      }
      if (macroAvgRecall_ != 0F) {
        output.writeFloat(8, macroAvgRecall_);
      }
      unknownFields.writeTo(output);
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (top1Accuracy_ != 0F) {
        size += com.google.protobuf.CodedOutputStream
          .computeFloatSize(1, top1Accuracy_);
      }
      if (top5Accuracy_ != 0F) {
        size += com.google.protobuf.CodedOutputStream
          .computeFloatSize(2, top5Accuracy_);
      }
      if (macroAvgRocAuc_ != 0F) {
        size += com.google.protobuf.CodedOutputStream
          .computeFloatSize(3, macroAvgRocAuc_);
      }
      if (macroStdRocAuc_ != 0F) {
        size += com.google.protobuf.CodedOutputStream
          .computeFloatSize(4, macroStdRocAuc_);
      }
      if (macroAvgF1Score_ != 0F) {
        size += com.google.protobuf.CodedOutputStream
          .computeFloatSize(5, macroAvgF1Score_);
      }
      if (macroStdF1Score_ != 0F) {
        size += com.google.protobuf.CodedOutputStream
          .computeFloatSize(6, macroStdF1Score_);
      }
      if (macroAvgPrecision_ != 0F) {
        size += com.google.protobuf.CodedOutputStream
          .computeFloatSize(7, macroAvgPrecision_);
      }
      if (macroAvgRecall_ != 0F) {
        size += com.google.protobuf.CodedOutputStream
          .computeFloatSize(8, macroAvgRecall_);
      }
      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 clarifai2.internal.grpc.api.ModelVersionOuterClass.MetricsSummary)) {
        return super.equals(obj);
      }
      clarifai2.internal.grpc.api.ModelVersionOuterClass.MetricsSummary other = (clarifai2.internal.grpc.api.ModelVersionOuterClass.MetricsSummary) obj;

      boolean result = true;
      result = result && (
          java.lang.Float.floatToIntBits(getTop1Accuracy())
          == java.lang.Float.floatToIntBits(
              other.getTop1Accuracy()));
      result = result && (
          java.lang.Float.floatToIntBits(getTop5Accuracy())
          == java.lang.Float.floatToIntBits(
              other.getTop5Accuracy()));
      result = result && (
          java.lang.Float.floatToIntBits(getMacroAvgRocAuc())
          == java.lang.Float.floatToIntBits(
              other.getMacroAvgRocAuc()));
      result = result && (
          java.lang.Float.floatToIntBits(getMacroStdRocAuc())
          == java.lang.Float.floatToIntBits(
              other.getMacroStdRocAuc()));
      result = result && (
          java.lang.Float.floatToIntBits(getMacroAvgF1Score())
          == java.lang.Float.floatToIntBits(
              other.getMacroAvgF1Score()));
      result = result && (
          java.lang.Float.floatToIntBits(getMacroStdF1Score())
          == java.lang.Float.floatToIntBits(
              other.getMacroStdF1Score()));
      result = result && (
          java.lang.Float.floatToIntBits(getMacroAvgPrecision())
          == java.lang.Float.floatToIntBits(
              other.getMacroAvgPrecision()));
      result = result && (
          java.lang.Float.floatToIntBits(getMacroAvgRecall())
          == java.lang.Float.floatToIntBits(
              other.getMacroAvgRecall()));
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + TOP1_ACCURACY_FIELD_NUMBER;
      hash = (53 * hash) + java.lang.Float.floatToIntBits(
          getTop1Accuracy());
      hash = (37 * hash) + TOP5_ACCURACY_FIELD_NUMBER;
      hash = (53 * hash) + java.lang.Float.floatToIntBits(
          getTop5Accuracy());
      hash = (37 * hash) + MACRO_AVG_ROC_AUC_FIELD_NUMBER;
      hash = (53 * hash) + java.lang.Float.floatToIntBits(
          getMacroAvgRocAuc());
      hash = (37 * hash) + MACRO_STD_ROC_AUC_FIELD_NUMBER;
      hash = (53 * hash) + java.lang.Float.floatToIntBits(
          getMacroStdRocAuc());
      hash = (37 * hash) + MACRO_AVG_F1_SCORE_FIELD_NUMBER;
      hash = (53 * hash) + java.lang.Float.floatToIntBits(
          getMacroAvgF1Score());
      hash = (37 * hash) + MACRO_STD_F1_SCORE_FIELD_NUMBER;
      hash = (53 * hash) + java.lang.Float.floatToIntBits(
          getMacroStdF1Score());
      hash = (37 * hash) + MACRO_AVG_PRECISION_FIELD_NUMBER;
      hash = (53 * hash) + java.lang.Float.floatToIntBits(
          getMacroAvgPrecision());
      hash = (37 * hash) + MACRO_AVG_RECALL_FIELD_NUMBER;
      hash = (53 * hash) + java.lang.Float.floatToIntBits(
          getMacroAvgRecall());
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(clarifai2.internal.grpc.api.ModelVersionOuterClass.MetricsSummary prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code clarifai.api.MetricsSummary}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:clarifai.api.MetricsSummary)
        clarifai2.internal.grpc.api.ModelVersionOuterClass.MetricsSummaryOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_MetricsSummary_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_MetricsSummary_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                clarifai2.internal.grpc.api.ModelVersionOuterClass.MetricsSummary.class, clarifai2.internal.grpc.api.ModelVersionOuterClass.MetricsSummary.Builder.class);
      }

      // Construct using clarifai2.internal.grpc.api.ModelVersionOuterClass.MetricsSummary.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        top1Accuracy_ = 0F;

        top5Accuracy_ = 0F;

        macroAvgRocAuc_ = 0F;

        macroStdRocAuc_ = 0F;

        macroAvgF1Score_ = 0F;

        macroStdF1Score_ = 0F;

        macroAvgPrecision_ = 0F;

        macroAvgRecall_ = 0F;

        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_MetricsSummary_descriptor;
      }

      public clarifai2.internal.grpc.api.ModelVersionOuterClass.MetricsSummary getDefaultInstanceForType() {
        return clarifai2.internal.grpc.api.ModelVersionOuterClass.MetricsSummary.getDefaultInstance();
      }

      public clarifai2.internal.grpc.api.ModelVersionOuterClass.MetricsSummary build() {
        clarifai2.internal.grpc.api.ModelVersionOuterClass.MetricsSummary result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public clarifai2.internal.grpc.api.ModelVersionOuterClass.MetricsSummary buildPartial() {
        clarifai2.internal.grpc.api.ModelVersionOuterClass.MetricsSummary result = new clarifai2.internal.grpc.api.ModelVersionOuterClass.MetricsSummary(this);
        result.top1Accuracy_ = top1Accuracy_;
        result.top5Accuracy_ = top5Accuracy_;
        result.macroAvgRocAuc_ = macroAvgRocAuc_;
        result.macroStdRocAuc_ = macroStdRocAuc_;
        result.macroAvgF1Score_ = macroAvgF1Score_;
        result.macroStdF1Score_ = macroStdF1Score_;
        result.macroAvgPrecision_ = macroAvgPrecision_;
        result.macroAvgRecall_ = macroAvgRecall_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof clarifai2.internal.grpc.api.ModelVersionOuterClass.MetricsSummary) {
          return mergeFrom((clarifai2.internal.grpc.api.ModelVersionOuterClass.MetricsSummary)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(clarifai2.internal.grpc.api.ModelVersionOuterClass.MetricsSummary other) {
        if (other == clarifai2.internal.grpc.api.ModelVersionOuterClass.MetricsSummary.getDefaultInstance()) return this;
        if (other.getTop1Accuracy() != 0F) {
          setTop1Accuracy(other.getTop1Accuracy());
        }
        if (other.getTop5Accuracy() != 0F) {
          setTop5Accuracy(other.getTop5Accuracy());
        }
        if (other.getMacroAvgRocAuc() != 0F) {
          setMacroAvgRocAuc(other.getMacroAvgRocAuc());
        }
        if (other.getMacroStdRocAuc() != 0F) {
          setMacroStdRocAuc(other.getMacroStdRocAuc());
        }
        if (other.getMacroAvgF1Score() != 0F) {
          setMacroAvgF1Score(other.getMacroAvgF1Score());
        }
        if (other.getMacroStdF1Score() != 0F) {
          setMacroStdF1Score(other.getMacroStdF1Score());
        }
        if (other.getMacroAvgPrecision() != 0F) {
          setMacroAvgPrecision(other.getMacroAvgPrecision());
        }
        if (other.getMacroAvgRecall() != 0F) {
          setMacroAvgRecall(other.getMacroAvgRecall());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        clarifai2.internal.grpc.api.ModelVersionOuterClass.MetricsSummary parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (clarifai2.internal.grpc.api.ModelVersionOuterClass.MetricsSummary) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private float top1Accuracy_ ;
      /**
       * float top1_accuracy = 1 [deprecated = true];
       */
      @java.lang.Deprecated public float getTop1Accuracy() {
        return top1Accuracy_;
      }
      /**
       * float top1_accuracy = 1 [deprecated = true];
       */
      @java.lang.Deprecated public Builder setTop1Accuracy(float value) {
        
        top1Accuracy_ = value;
        onChanged();
        return this;
      }
      /**
       * float top1_accuracy = 1 [deprecated = true];
       */
      @java.lang.Deprecated public Builder clearTop1Accuracy() {
        
        top1Accuracy_ = 0F;
        onChanged();
        return this;
      }

      private float top5Accuracy_ ;
      /**
       * float top5_accuracy = 2 [deprecated = true];
       */
      @java.lang.Deprecated public float getTop5Accuracy() {
        return top5Accuracy_;
      }
      /**
       * float top5_accuracy = 2 [deprecated = true];
       */
      @java.lang.Deprecated public Builder setTop5Accuracy(float value) {
        
        top5Accuracy_ = value;
        onChanged();
        return this;
      }
      /**
       * float top5_accuracy = 2 [deprecated = true];
       */
      @java.lang.Deprecated public Builder clearTop5Accuracy() {
        
        top5Accuracy_ = 0F;
        onChanged();
        return this;
      }

      private float macroAvgRocAuc_ ;
      /**
       * float macro_avg_roc_auc = 3 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public float getMacroAvgRocAuc() {
        return macroAvgRocAuc_;
      }
      /**
       * float macro_avg_roc_auc = 3 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public Builder setMacroAvgRocAuc(float value) {
        
        macroAvgRocAuc_ = value;
        onChanged();
        return this;
      }
      /**
       * float macro_avg_roc_auc = 3 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public Builder clearMacroAvgRocAuc() {
        
        macroAvgRocAuc_ = 0F;
        onChanged();
        return this;
      }

      private float macroStdRocAuc_ ;
      /**
       * float macro_std_roc_auc = 4 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public float getMacroStdRocAuc() {
        return macroStdRocAuc_;
      }
      /**
       * float macro_std_roc_auc = 4 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public Builder setMacroStdRocAuc(float value) {
        
        macroStdRocAuc_ = value;
        onChanged();
        return this;
      }
      /**
       * float macro_std_roc_auc = 4 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public Builder clearMacroStdRocAuc() {
        
        macroStdRocAuc_ = 0F;
        onChanged();
        return this;
      }

      private float macroAvgF1Score_ ;
      /**
       * float macro_avg_f1_score = 5 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public float getMacroAvgF1Score() {
        return macroAvgF1Score_;
      }
      /**
       * float macro_avg_f1_score = 5 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public Builder setMacroAvgF1Score(float value) {
        
        macroAvgF1Score_ = value;
        onChanged();
        return this;
      }
      /**
       * float macro_avg_f1_score = 5 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public Builder clearMacroAvgF1Score() {
        
        macroAvgF1Score_ = 0F;
        onChanged();
        return this;
      }

      private float macroStdF1Score_ ;
      /**
       * float macro_std_f1_score = 6 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public float getMacroStdF1Score() {
        return macroStdF1Score_;
      }
      /**
       * float macro_std_f1_score = 6 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public Builder setMacroStdF1Score(float value) {
        
        macroStdF1Score_ = value;
        onChanged();
        return this;
      }
      /**
       * float macro_std_f1_score = 6 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public Builder clearMacroStdF1Score() {
        
        macroStdF1Score_ = 0F;
        onChanged();
        return this;
      }

      private float macroAvgPrecision_ ;
      /**
       * float macro_avg_precision = 7 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public float getMacroAvgPrecision() {
        return macroAvgPrecision_;
      }
      /**
       * float macro_avg_precision = 7 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public Builder setMacroAvgPrecision(float value) {
        
        macroAvgPrecision_ = value;
        onChanged();
        return this;
      }
      /**
       * float macro_avg_precision = 7 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public Builder clearMacroAvgPrecision() {
        
        macroAvgPrecision_ = 0F;
        onChanged();
        return this;
      }

      private float macroAvgRecall_ ;
      /**
       * float macro_avg_recall = 8 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public float getMacroAvgRecall() {
        return macroAvgRecall_;
      }
      /**
       * float macro_avg_recall = 8 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public Builder setMacroAvgRecall(float value) {
        
        macroAvgRecall_ = value;
        onChanged();
        return this;
      }
      /**
       * float macro_avg_recall = 8 [(.clarifai.api.utils.cl_show_if_empty) = true];
       */
      public Builder clearMacroAvgRecall() {
        
        macroAvgRecall_ = 0F;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:clarifai.api.MetricsSummary)
    }

    // @@protoc_insertion_point(class_scope:clarifai.api.MetricsSummary)
    private static final clarifai2.internal.grpc.api.ModelVersionOuterClass.MetricsSummary DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new clarifai2.internal.grpc.api.ModelVersionOuterClass.MetricsSummary();
    }

    public static clarifai2.internal.grpc.api.ModelVersionOuterClass.MetricsSummary getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public clarifai2.internal.grpc.api.ModelVersionOuterClass.MetricsSummary getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface EvalMetricsOrBuilder extends
      // @@protoc_insertion_point(interface_extends:clarifai.api.EvalMetrics)
      com.google.protobuf.MessageOrBuilder {

    /**
     * .clarifai.api.status.Status status = 1;
     */
    boolean hasStatus();
    /**
     * .clarifai.api.status.Status status = 1;
     */
    clarifai2.internal.grpc.api.status.StatusOuterClass.Status getStatus();
    /**
     * .clarifai.api.status.Status status = 1;
     */
    clarifai2.internal.grpc.api.status.StatusOuterClass.StatusOrBuilder getStatusOrBuilder();

    /**
     * .clarifai.api.MetricsSummary summary = 2;
     */
    boolean hasSummary();
    /**
     * .clarifai.api.MetricsSummary summary = 2;
     */
    clarifai2.internal.grpc.api.ModelVersionOuterClass.MetricsSummary getSummary();
    /**
     * .clarifai.api.MetricsSummary summary = 2;
     */
    clarifai2.internal.grpc.api.ModelVersionOuterClass.MetricsSummaryOrBuilder getSummaryOrBuilder();

    /**
     * .clarifai.api.ConfusionMatrix confusion_matrix = 3;
     */
    boolean hasConfusionMatrix();
    /**
     * .clarifai.api.ConfusionMatrix confusion_matrix = 3;
     */
    clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrix getConfusionMatrix();
    /**
     * .clarifai.api.ConfusionMatrix confusion_matrix = 3;
     */
    clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrixOrBuilder getConfusionMatrixOrBuilder();

    /**
     * .clarifai.api.CooccurrenceMatrix cooccurrence_matrix = 4;
     */
    boolean hasCooccurrenceMatrix();
    /**
     * .clarifai.api.CooccurrenceMatrix cooccurrence_matrix = 4;
     */
    clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrix getCooccurrenceMatrix();
    /**
     * .clarifai.api.CooccurrenceMatrix cooccurrence_matrix = 4;
     */
    clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrixOrBuilder getCooccurrenceMatrixOrBuilder();

    /**
     * .clarifai.api.LabelDistribution label_counts = 5;
     */
    boolean hasLabelCounts();
    /**
     * .clarifai.api.LabelDistribution label_counts = 5;
     */
    clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelDistribution getLabelCounts();
    /**
     * .clarifai.api.LabelDistribution label_counts = 5;
     */
    clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelDistributionOrBuilder getLabelCountsOrBuilder();

    /**
     * repeated .clarifai.api.BinaryMetrics binary_metrics = 6;
     */
    java.util.List 
        getBinaryMetricsList();
    /**
     * repeated .clarifai.api.BinaryMetrics binary_metrics = 6;
     */
    clarifai2.internal.grpc.api.ModelVersionOuterClass.BinaryMetrics getBinaryMetrics(int index);
    /**
     * repeated .clarifai.api.BinaryMetrics binary_metrics = 6;
     */
    int getBinaryMetricsCount();
    /**
     * repeated .clarifai.api.BinaryMetrics binary_metrics = 6;
     */
    java.util.List 
        getBinaryMetricsOrBuilderList();
    /**
     * repeated .clarifai.api.BinaryMetrics binary_metrics = 6;
     */
    clarifai2.internal.grpc.api.ModelVersionOuterClass.BinaryMetricsOrBuilder getBinaryMetricsOrBuilder(
        int index);

    /**
     * repeated .clarifai.api.EvalTestSetEntry test_set = 7;
     */
    java.util.List 
        getTestSetList();
    /**
     * repeated .clarifai.api.EvalTestSetEntry test_set = 7;
     */
    clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalTestSetEntry getTestSet(int index);
    /**
     * repeated .clarifai.api.EvalTestSetEntry test_set = 7;
     */
    int getTestSetCount();
    /**
     * repeated .clarifai.api.EvalTestSetEntry test_set = 7;
     */
    java.util.List 
        getTestSetOrBuilderList();
    /**
     * repeated .clarifai.api.EvalTestSetEntry test_set = 7;
     */
    clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalTestSetEntryOrBuilder getTestSetOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code clarifai.api.EvalMetrics}
   */
  public  static final class EvalMetrics extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:clarifai.api.EvalMetrics)
      EvalMetricsOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use EvalMetrics.newBuilder() to construct.
    private EvalMetrics(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private EvalMetrics() {
      binaryMetrics_ = java.util.Collections.emptyList();
      testSet_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private EvalMetrics(
        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;
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              clarifai2.internal.grpc.api.status.StatusOuterClass.Status.Builder subBuilder = null;
              if (status_ != null) {
                subBuilder = status_.toBuilder();
              }
              status_ = input.readMessage(clarifai2.internal.grpc.api.status.StatusOuterClass.Status.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(status_);
                status_ = subBuilder.buildPartial();
              }

              break;
            }
            case 18: {
              clarifai2.internal.grpc.api.ModelVersionOuterClass.MetricsSummary.Builder subBuilder = null;
              if (summary_ != null) {
                subBuilder = summary_.toBuilder();
              }
              summary_ = input.readMessage(clarifai2.internal.grpc.api.ModelVersionOuterClass.MetricsSummary.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(summary_);
                summary_ = subBuilder.buildPartial();
              }

              break;
            }
            case 26: {
              clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrix.Builder subBuilder = null;
              if (confusionMatrix_ != null) {
                subBuilder = confusionMatrix_.toBuilder();
              }
              confusionMatrix_ = input.readMessage(clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrix.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(confusionMatrix_);
                confusionMatrix_ = subBuilder.buildPartial();
              }

              break;
            }
            case 34: {
              clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrix.Builder subBuilder = null;
              if (cooccurrenceMatrix_ != null) {
                subBuilder = cooccurrenceMatrix_.toBuilder();
              }
              cooccurrenceMatrix_ = input.readMessage(clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrix.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(cooccurrenceMatrix_);
                cooccurrenceMatrix_ = subBuilder.buildPartial();
              }

              break;
            }
            case 42: {
              clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelDistribution.Builder subBuilder = null;
              if (labelCounts_ != null) {
                subBuilder = labelCounts_.toBuilder();
              }
              labelCounts_ = input.readMessage(clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelDistribution.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(labelCounts_);
                labelCounts_ = subBuilder.buildPartial();
              }

              break;
            }
            case 50: {
              if (!((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
                binaryMetrics_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000020;
              }
              binaryMetrics_.add(
                  input.readMessage(clarifai2.internal.grpc.api.ModelVersionOuterClass.BinaryMetrics.parser(), extensionRegistry));
              break;
            }
            case 58: {
              if (!((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
                testSet_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000040;
              }
              testSet_.add(
                  input.readMessage(clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalTestSetEntry.parser(), extensionRegistry));
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000020) == 0x00000020)) {
          binaryMetrics_ = java.util.Collections.unmodifiableList(binaryMetrics_);
        }
        if (((mutable_bitField0_ & 0x00000040) == 0x00000040)) {
          testSet_ = java.util.Collections.unmodifiableList(testSet_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_EvalMetrics_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_EvalMetrics_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalMetrics.class, clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalMetrics.Builder.class);
    }

    private int bitField0_;
    public static final int STATUS_FIELD_NUMBER = 1;
    private clarifai2.internal.grpc.api.status.StatusOuterClass.Status status_;
    /**
     * .clarifai.api.status.Status status = 1;
     */
    public boolean hasStatus() {
      return status_ != null;
    }
    /**
     * .clarifai.api.status.Status status = 1;
     */
    public clarifai2.internal.grpc.api.status.StatusOuterClass.Status getStatus() {
      return status_ == null ? clarifai2.internal.grpc.api.status.StatusOuterClass.Status.getDefaultInstance() : status_;
    }
    /**
     * .clarifai.api.status.Status status = 1;
     */
    public clarifai2.internal.grpc.api.status.StatusOuterClass.StatusOrBuilder getStatusOrBuilder() {
      return getStatus();
    }

    public static final int SUMMARY_FIELD_NUMBER = 2;
    private clarifai2.internal.grpc.api.ModelVersionOuterClass.MetricsSummary summary_;
    /**
     * .clarifai.api.MetricsSummary summary = 2;
     */
    public boolean hasSummary() {
      return summary_ != null;
    }
    /**
     * .clarifai.api.MetricsSummary summary = 2;
     */
    public clarifai2.internal.grpc.api.ModelVersionOuterClass.MetricsSummary getSummary() {
      return summary_ == null ? clarifai2.internal.grpc.api.ModelVersionOuterClass.MetricsSummary.getDefaultInstance() : summary_;
    }
    /**
     * .clarifai.api.MetricsSummary summary = 2;
     */
    public clarifai2.internal.grpc.api.ModelVersionOuterClass.MetricsSummaryOrBuilder getSummaryOrBuilder() {
      return getSummary();
    }

    public static final int CONFUSION_MATRIX_FIELD_NUMBER = 3;
    private clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrix confusionMatrix_;
    /**
     * .clarifai.api.ConfusionMatrix confusion_matrix = 3;
     */
    public boolean hasConfusionMatrix() {
      return confusionMatrix_ != null;
    }
    /**
     * .clarifai.api.ConfusionMatrix confusion_matrix = 3;
     */
    public clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrix getConfusionMatrix() {
      return confusionMatrix_ == null ? clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrix.getDefaultInstance() : confusionMatrix_;
    }
    /**
     * .clarifai.api.ConfusionMatrix confusion_matrix = 3;
     */
    public clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrixOrBuilder getConfusionMatrixOrBuilder() {
      return getConfusionMatrix();
    }

    public static final int COOCCURRENCE_MATRIX_FIELD_NUMBER = 4;
    private clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrix cooccurrenceMatrix_;
    /**
     * .clarifai.api.CooccurrenceMatrix cooccurrence_matrix = 4;
     */
    public boolean hasCooccurrenceMatrix() {
      return cooccurrenceMatrix_ != null;
    }
    /**
     * .clarifai.api.CooccurrenceMatrix cooccurrence_matrix = 4;
     */
    public clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrix getCooccurrenceMatrix() {
      return cooccurrenceMatrix_ == null ? clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrix.getDefaultInstance() : cooccurrenceMatrix_;
    }
    /**
     * .clarifai.api.CooccurrenceMatrix cooccurrence_matrix = 4;
     */
    public clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrixOrBuilder getCooccurrenceMatrixOrBuilder() {
      return getCooccurrenceMatrix();
    }

    public static final int LABEL_COUNTS_FIELD_NUMBER = 5;
    private clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelDistribution labelCounts_;
    /**
     * .clarifai.api.LabelDistribution label_counts = 5;
     */
    public boolean hasLabelCounts() {
      return labelCounts_ != null;
    }
    /**
     * .clarifai.api.LabelDistribution label_counts = 5;
     */
    public clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelDistribution getLabelCounts() {
      return labelCounts_ == null ? clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelDistribution.getDefaultInstance() : labelCounts_;
    }
    /**
     * .clarifai.api.LabelDistribution label_counts = 5;
     */
    public clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelDistributionOrBuilder getLabelCountsOrBuilder() {
      return getLabelCounts();
    }

    public static final int BINARY_METRICS_FIELD_NUMBER = 6;
    private java.util.List binaryMetrics_;
    /**
     * repeated .clarifai.api.BinaryMetrics binary_metrics = 6;
     */
    public java.util.List getBinaryMetricsList() {
      return binaryMetrics_;
    }
    /**
     * repeated .clarifai.api.BinaryMetrics binary_metrics = 6;
     */
    public java.util.List 
        getBinaryMetricsOrBuilderList() {
      return binaryMetrics_;
    }
    /**
     * repeated .clarifai.api.BinaryMetrics binary_metrics = 6;
     */
    public int getBinaryMetricsCount() {
      return binaryMetrics_.size();
    }
    /**
     * repeated .clarifai.api.BinaryMetrics binary_metrics = 6;
     */
    public clarifai2.internal.grpc.api.ModelVersionOuterClass.BinaryMetrics getBinaryMetrics(int index) {
      return binaryMetrics_.get(index);
    }
    /**
     * repeated .clarifai.api.BinaryMetrics binary_metrics = 6;
     */
    public clarifai2.internal.grpc.api.ModelVersionOuterClass.BinaryMetricsOrBuilder getBinaryMetricsOrBuilder(
        int index) {
      return binaryMetrics_.get(index);
    }

    public static final int TEST_SET_FIELD_NUMBER = 7;
    private java.util.List testSet_;
    /**
     * repeated .clarifai.api.EvalTestSetEntry test_set = 7;
     */
    public java.util.List getTestSetList() {
      return testSet_;
    }
    /**
     * repeated .clarifai.api.EvalTestSetEntry test_set = 7;
     */
    public java.util.List 
        getTestSetOrBuilderList() {
      return testSet_;
    }
    /**
     * repeated .clarifai.api.EvalTestSetEntry test_set = 7;
     */
    public int getTestSetCount() {
      return testSet_.size();
    }
    /**
     * repeated .clarifai.api.EvalTestSetEntry test_set = 7;
     */
    public clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalTestSetEntry getTestSet(int index) {
      return testSet_.get(index);
    }
    /**
     * repeated .clarifai.api.EvalTestSetEntry test_set = 7;
     */
    public clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalTestSetEntryOrBuilder getTestSetOrBuilder(
        int index) {
      return testSet_.get(index);
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (status_ != null) {
        output.writeMessage(1, getStatus());
      }
      if (summary_ != null) {
        output.writeMessage(2, getSummary());
      }
      if (confusionMatrix_ != null) {
        output.writeMessage(3, getConfusionMatrix());
      }
      if (cooccurrenceMatrix_ != null) {
        output.writeMessage(4, getCooccurrenceMatrix());
      }
      if (labelCounts_ != null) {
        output.writeMessage(5, getLabelCounts());
      }
      for (int i = 0; i < binaryMetrics_.size(); i++) {
        output.writeMessage(6, binaryMetrics_.get(i));
      }
      for (int i = 0; i < testSet_.size(); i++) {
        output.writeMessage(7, testSet_.get(i));
      }
      unknownFields.writeTo(output);
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (status_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getStatus());
      }
      if (summary_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getSummary());
      }
      if (confusionMatrix_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getConfusionMatrix());
      }
      if (cooccurrenceMatrix_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, getCooccurrenceMatrix());
      }
      if (labelCounts_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, getLabelCounts());
      }
      for (int i = 0; i < binaryMetrics_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(6, binaryMetrics_.get(i));
      }
      for (int i = 0; i < testSet_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(7, testSet_.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 clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalMetrics)) {
        return super.equals(obj);
      }
      clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalMetrics other = (clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalMetrics) obj;

      boolean result = true;
      result = result && (hasStatus() == other.hasStatus());
      if (hasStatus()) {
        result = result && getStatus()
            .equals(other.getStatus());
      }
      result = result && (hasSummary() == other.hasSummary());
      if (hasSummary()) {
        result = result && getSummary()
            .equals(other.getSummary());
      }
      result = result && (hasConfusionMatrix() == other.hasConfusionMatrix());
      if (hasConfusionMatrix()) {
        result = result && getConfusionMatrix()
            .equals(other.getConfusionMatrix());
      }
      result = result && (hasCooccurrenceMatrix() == other.hasCooccurrenceMatrix());
      if (hasCooccurrenceMatrix()) {
        result = result && getCooccurrenceMatrix()
            .equals(other.getCooccurrenceMatrix());
      }
      result = result && (hasLabelCounts() == other.hasLabelCounts());
      if (hasLabelCounts()) {
        result = result && getLabelCounts()
            .equals(other.getLabelCounts());
      }
      result = result && getBinaryMetricsList()
          .equals(other.getBinaryMetricsList());
      result = result && getTestSetList()
          .equals(other.getTestSetList());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasStatus()) {
        hash = (37 * hash) + STATUS_FIELD_NUMBER;
        hash = (53 * hash) + getStatus().hashCode();
      }
      if (hasSummary()) {
        hash = (37 * hash) + SUMMARY_FIELD_NUMBER;
        hash = (53 * hash) + getSummary().hashCode();
      }
      if (hasConfusionMatrix()) {
        hash = (37 * hash) + CONFUSION_MATRIX_FIELD_NUMBER;
        hash = (53 * hash) + getConfusionMatrix().hashCode();
      }
      if (hasCooccurrenceMatrix()) {
        hash = (37 * hash) + COOCCURRENCE_MATRIX_FIELD_NUMBER;
        hash = (53 * hash) + getCooccurrenceMatrix().hashCode();
      }
      if (hasLabelCounts()) {
        hash = (37 * hash) + LABEL_COUNTS_FIELD_NUMBER;
        hash = (53 * hash) + getLabelCounts().hashCode();
      }
      if (getBinaryMetricsCount() > 0) {
        hash = (37 * hash) + BINARY_METRICS_FIELD_NUMBER;
        hash = (53 * hash) + getBinaryMetricsList().hashCode();
      }
      if (getTestSetCount() > 0) {
        hash = (37 * hash) + TEST_SET_FIELD_NUMBER;
        hash = (53 * hash) + getTestSetList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalMetrics prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code clarifai.api.EvalMetrics}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:clarifai.api.EvalMetrics)
        clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalMetricsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_EvalMetrics_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_EvalMetrics_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalMetrics.class, clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalMetrics.Builder.class);
      }

      // Construct using clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalMetrics.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getBinaryMetricsFieldBuilder();
          getTestSetFieldBuilder();
        }
      }
      public Builder clear() {
        super.clear();
        if (statusBuilder_ == null) {
          status_ = null;
        } else {
          status_ = null;
          statusBuilder_ = null;
        }
        if (summaryBuilder_ == null) {
          summary_ = null;
        } else {
          summary_ = null;
          summaryBuilder_ = null;
        }
        if (confusionMatrixBuilder_ == null) {
          confusionMatrix_ = null;
        } else {
          confusionMatrix_ = null;
          confusionMatrixBuilder_ = null;
        }
        if (cooccurrenceMatrixBuilder_ == null) {
          cooccurrenceMatrix_ = null;
        } else {
          cooccurrenceMatrix_ = null;
          cooccurrenceMatrixBuilder_ = null;
        }
        if (labelCountsBuilder_ == null) {
          labelCounts_ = null;
        } else {
          labelCounts_ = null;
          labelCountsBuilder_ = null;
        }
        if (binaryMetricsBuilder_ == null) {
          binaryMetrics_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000020);
        } else {
          binaryMetricsBuilder_.clear();
        }
        if (testSetBuilder_ == null) {
          testSet_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000040);
        } else {
          testSetBuilder_.clear();
        }
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_EvalMetrics_descriptor;
      }

      public clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalMetrics getDefaultInstanceForType() {
        return clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalMetrics.getDefaultInstance();
      }

      public clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalMetrics build() {
        clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalMetrics result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalMetrics buildPartial() {
        clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalMetrics result = new clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalMetrics(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (statusBuilder_ == null) {
          result.status_ = status_;
        } else {
          result.status_ = statusBuilder_.build();
        }
        if (summaryBuilder_ == null) {
          result.summary_ = summary_;
        } else {
          result.summary_ = summaryBuilder_.build();
        }
        if (confusionMatrixBuilder_ == null) {
          result.confusionMatrix_ = confusionMatrix_;
        } else {
          result.confusionMatrix_ = confusionMatrixBuilder_.build();
        }
        if (cooccurrenceMatrixBuilder_ == null) {
          result.cooccurrenceMatrix_ = cooccurrenceMatrix_;
        } else {
          result.cooccurrenceMatrix_ = cooccurrenceMatrixBuilder_.build();
        }
        if (labelCountsBuilder_ == null) {
          result.labelCounts_ = labelCounts_;
        } else {
          result.labelCounts_ = labelCountsBuilder_.build();
        }
        if (binaryMetricsBuilder_ == null) {
          if (((bitField0_ & 0x00000020) == 0x00000020)) {
            binaryMetrics_ = java.util.Collections.unmodifiableList(binaryMetrics_);
            bitField0_ = (bitField0_ & ~0x00000020);
          }
          result.binaryMetrics_ = binaryMetrics_;
        } else {
          result.binaryMetrics_ = binaryMetricsBuilder_.build();
        }
        if (testSetBuilder_ == null) {
          if (((bitField0_ & 0x00000040) == 0x00000040)) {
            testSet_ = java.util.Collections.unmodifiableList(testSet_);
            bitField0_ = (bitField0_ & ~0x00000040);
          }
          result.testSet_ = testSet_;
        } else {
          result.testSet_ = testSetBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalMetrics) {
          return mergeFrom((clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalMetrics)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalMetrics other) {
        if (other == clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalMetrics.getDefaultInstance()) return this;
        if (other.hasStatus()) {
          mergeStatus(other.getStatus());
        }
        if (other.hasSummary()) {
          mergeSummary(other.getSummary());
        }
        if (other.hasConfusionMatrix()) {
          mergeConfusionMatrix(other.getConfusionMatrix());
        }
        if (other.hasCooccurrenceMatrix()) {
          mergeCooccurrenceMatrix(other.getCooccurrenceMatrix());
        }
        if (other.hasLabelCounts()) {
          mergeLabelCounts(other.getLabelCounts());
        }
        if (binaryMetricsBuilder_ == null) {
          if (!other.binaryMetrics_.isEmpty()) {
            if (binaryMetrics_.isEmpty()) {
              binaryMetrics_ = other.binaryMetrics_;
              bitField0_ = (bitField0_ & ~0x00000020);
            } else {
              ensureBinaryMetricsIsMutable();
              binaryMetrics_.addAll(other.binaryMetrics_);
            }
            onChanged();
          }
        } else {
          if (!other.binaryMetrics_.isEmpty()) {
            if (binaryMetricsBuilder_.isEmpty()) {
              binaryMetricsBuilder_.dispose();
              binaryMetricsBuilder_ = null;
              binaryMetrics_ = other.binaryMetrics_;
              bitField0_ = (bitField0_ & ~0x00000020);
              binaryMetricsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getBinaryMetricsFieldBuilder() : null;
            } else {
              binaryMetricsBuilder_.addAllMessages(other.binaryMetrics_);
            }
          }
        }
        if (testSetBuilder_ == null) {
          if (!other.testSet_.isEmpty()) {
            if (testSet_.isEmpty()) {
              testSet_ = other.testSet_;
              bitField0_ = (bitField0_ & ~0x00000040);
            } else {
              ensureTestSetIsMutable();
              testSet_.addAll(other.testSet_);
            }
            onChanged();
          }
        } else {
          if (!other.testSet_.isEmpty()) {
            if (testSetBuilder_.isEmpty()) {
              testSetBuilder_.dispose();
              testSetBuilder_ = null;
              testSet_ = other.testSet_;
              bitField0_ = (bitField0_ & ~0x00000040);
              testSetBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getTestSetFieldBuilder() : null;
            } else {
              testSetBuilder_.addAllMessages(other.testSet_);
            }
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalMetrics parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalMetrics) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private clarifai2.internal.grpc.api.status.StatusOuterClass.Status status_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          clarifai2.internal.grpc.api.status.StatusOuterClass.Status, clarifai2.internal.grpc.api.status.StatusOuterClass.Status.Builder, clarifai2.internal.grpc.api.status.StatusOuterClass.StatusOrBuilder> statusBuilder_;
      /**
       * .clarifai.api.status.Status status = 1;
       */
      public boolean hasStatus() {
        return statusBuilder_ != null || status_ != null;
      }
      /**
       * .clarifai.api.status.Status status = 1;
       */
      public clarifai2.internal.grpc.api.status.StatusOuterClass.Status getStatus() {
        if (statusBuilder_ == null) {
          return status_ == null ? clarifai2.internal.grpc.api.status.StatusOuterClass.Status.getDefaultInstance() : status_;
        } else {
          return statusBuilder_.getMessage();
        }
      }
      /**
       * .clarifai.api.status.Status status = 1;
       */
      public Builder setStatus(clarifai2.internal.grpc.api.status.StatusOuterClass.Status value) {
        if (statusBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          status_ = value;
          onChanged();
        } else {
          statusBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * .clarifai.api.status.Status status = 1;
       */
      public Builder setStatus(
          clarifai2.internal.grpc.api.status.StatusOuterClass.Status.Builder builderForValue) {
        if (statusBuilder_ == null) {
          status_ = builderForValue.build();
          onChanged();
        } else {
          statusBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * .clarifai.api.status.Status status = 1;
       */
      public Builder mergeStatus(clarifai2.internal.grpc.api.status.StatusOuterClass.Status value) {
        if (statusBuilder_ == null) {
          if (status_ != null) {
            status_ =
              clarifai2.internal.grpc.api.status.StatusOuterClass.Status.newBuilder(status_).mergeFrom(value).buildPartial();
          } else {
            status_ = value;
          }
          onChanged();
        } else {
          statusBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * .clarifai.api.status.Status status = 1;
       */
      public Builder clearStatus() {
        if (statusBuilder_ == null) {
          status_ = null;
          onChanged();
        } else {
          status_ = null;
          statusBuilder_ = null;
        }

        return this;
      }
      /**
       * .clarifai.api.status.Status status = 1;
       */
      public clarifai2.internal.grpc.api.status.StatusOuterClass.Status.Builder getStatusBuilder() {
        
        onChanged();
        return getStatusFieldBuilder().getBuilder();
      }
      /**
       * .clarifai.api.status.Status status = 1;
       */
      public clarifai2.internal.grpc.api.status.StatusOuterClass.StatusOrBuilder getStatusOrBuilder() {
        if (statusBuilder_ != null) {
          return statusBuilder_.getMessageOrBuilder();
        } else {
          return status_ == null ?
              clarifai2.internal.grpc.api.status.StatusOuterClass.Status.getDefaultInstance() : status_;
        }
      }
      /**
       * .clarifai.api.status.Status status = 1;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          clarifai2.internal.grpc.api.status.StatusOuterClass.Status, clarifai2.internal.grpc.api.status.StatusOuterClass.Status.Builder, clarifai2.internal.grpc.api.status.StatusOuterClass.StatusOrBuilder> 
          getStatusFieldBuilder() {
        if (statusBuilder_ == null) {
          statusBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              clarifai2.internal.grpc.api.status.StatusOuterClass.Status, clarifai2.internal.grpc.api.status.StatusOuterClass.Status.Builder, clarifai2.internal.grpc.api.status.StatusOuterClass.StatusOrBuilder>(
                  getStatus(),
                  getParentForChildren(),
                  isClean());
          status_ = null;
        }
        return statusBuilder_;
      }

      private clarifai2.internal.grpc.api.ModelVersionOuterClass.MetricsSummary summary_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          clarifai2.internal.grpc.api.ModelVersionOuterClass.MetricsSummary, clarifai2.internal.grpc.api.ModelVersionOuterClass.MetricsSummary.Builder, clarifai2.internal.grpc.api.ModelVersionOuterClass.MetricsSummaryOrBuilder> summaryBuilder_;
      /**
       * .clarifai.api.MetricsSummary summary = 2;
       */
      public boolean hasSummary() {
        return summaryBuilder_ != null || summary_ != null;
      }
      /**
       * .clarifai.api.MetricsSummary summary = 2;
       */
      public clarifai2.internal.grpc.api.ModelVersionOuterClass.MetricsSummary getSummary() {
        if (summaryBuilder_ == null) {
          return summary_ == null ? clarifai2.internal.grpc.api.ModelVersionOuterClass.MetricsSummary.getDefaultInstance() : summary_;
        } else {
          return summaryBuilder_.getMessage();
        }
      }
      /**
       * .clarifai.api.MetricsSummary summary = 2;
       */
      public Builder setSummary(clarifai2.internal.grpc.api.ModelVersionOuterClass.MetricsSummary value) {
        if (summaryBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          summary_ = value;
          onChanged();
        } else {
          summaryBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * .clarifai.api.MetricsSummary summary = 2;
       */
      public Builder setSummary(
          clarifai2.internal.grpc.api.ModelVersionOuterClass.MetricsSummary.Builder builderForValue) {
        if (summaryBuilder_ == null) {
          summary_ = builderForValue.build();
          onChanged();
        } else {
          summaryBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * .clarifai.api.MetricsSummary summary = 2;
       */
      public Builder mergeSummary(clarifai2.internal.grpc.api.ModelVersionOuterClass.MetricsSummary value) {
        if (summaryBuilder_ == null) {
          if (summary_ != null) {
            summary_ =
              clarifai2.internal.grpc.api.ModelVersionOuterClass.MetricsSummary.newBuilder(summary_).mergeFrom(value).buildPartial();
          } else {
            summary_ = value;
          }
          onChanged();
        } else {
          summaryBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * .clarifai.api.MetricsSummary summary = 2;
       */
      public Builder clearSummary() {
        if (summaryBuilder_ == null) {
          summary_ = null;
          onChanged();
        } else {
          summary_ = null;
          summaryBuilder_ = null;
        }

        return this;
      }
      /**
       * .clarifai.api.MetricsSummary summary = 2;
       */
      public clarifai2.internal.grpc.api.ModelVersionOuterClass.MetricsSummary.Builder getSummaryBuilder() {
        
        onChanged();
        return getSummaryFieldBuilder().getBuilder();
      }
      /**
       * .clarifai.api.MetricsSummary summary = 2;
       */
      public clarifai2.internal.grpc.api.ModelVersionOuterClass.MetricsSummaryOrBuilder getSummaryOrBuilder() {
        if (summaryBuilder_ != null) {
          return summaryBuilder_.getMessageOrBuilder();
        } else {
          return summary_ == null ?
              clarifai2.internal.grpc.api.ModelVersionOuterClass.MetricsSummary.getDefaultInstance() : summary_;
        }
      }
      /**
       * .clarifai.api.MetricsSummary summary = 2;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          clarifai2.internal.grpc.api.ModelVersionOuterClass.MetricsSummary, clarifai2.internal.grpc.api.ModelVersionOuterClass.MetricsSummary.Builder, clarifai2.internal.grpc.api.ModelVersionOuterClass.MetricsSummaryOrBuilder> 
          getSummaryFieldBuilder() {
        if (summaryBuilder_ == null) {
          summaryBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              clarifai2.internal.grpc.api.ModelVersionOuterClass.MetricsSummary, clarifai2.internal.grpc.api.ModelVersionOuterClass.MetricsSummary.Builder, clarifai2.internal.grpc.api.ModelVersionOuterClass.MetricsSummaryOrBuilder>(
                  getSummary(),
                  getParentForChildren(),
                  isClean());
          summary_ = null;
        }
        return summaryBuilder_;
      }

      private clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrix confusionMatrix_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrix, clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrix.Builder, clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrixOrBuilder> confusionMatrixBuilder_;
      /**
       * .clarifai.api.ConfusionMatrix confusion_matrix = 3;
       */
      public boolean hasConfusionMatrix() {
        return confusionMatrixBuilder_ != null || confusionMatrix_ != null;
      }
      /**
       * .clarifai.api.ConfusionMatrix confusion_matrix = 3;
       */
      public clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrix getConfusionMatrix() {
        if (confusionMatrixBuilder_ == null) {
          return confusionMatrix_ == null ? clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrix.getDefaultInstance() : confusionMatrix_;
        } else {
          return confusionMatrixBuilder_.getMessage();
        }
      }
      /**
       * .clarifai.api.ConfusionMatrix confusion_matrix = 3;
       */
      public Builder setConfusionMatrix(clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrix value) {
        if (confusionMatrixBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          confusionMatrix_ = value;
          onChanged();
        } else {
          confusionMatrixBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * .clarifai.api.ConfusionMatrix confusion_matrix = 3;
       */
      public Builder setConfusionMatrix(
          clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrix.Builder builderForValue) {
        if (confusionMatrixBuilder_ == null) {
          confusionMatrix_ = builderForValue.build();
          onChanged();
        } else {
          confusionMatrixBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * .clarifai.api.ConfusionMatrix confusion_matrix = 3;
       */
      public Builder mergeConfusionMatrix(clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrix value) {
        if (confusionMatrixBuilder_ == null) {
          if (confusionMatrix_ != null) {
            confusionMatrix_ =
              clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrix.newBuilder(confusionMatrix_).mergeFrom(value).buildPartial();
          } else {
            confusionMatrix_ = value;
          }
          onChanged();
        } else {
          confusionMatrixBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * .clarifai.api.ConfusionMatrix confusion_matrix = 3;
       */
      public Builder clearConfusionMatrix() {
        if (confusionMatrixBuilder_ == null) {
          confusionMatrix_ = null;
          onChanged();
        } else {
          confusionMatrix_ = null;
          confusionMatrixBuilder_ = null;
        }

        return this;
      }
      /**
       * .clarifai.api.ConfusionMatrix confusion_matrix = 3;
       */
      public clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrix.Builder getConfusionMatrixBuilder() {
        
        onChanged();
        return getConfusionMatrixFieldBuilder().getBuilder();
      }
      /**
       * .clarifai.api.ConfusionMatrix confusion_matrix = 3;
       */
      public clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrixOrBuilder getConfusionMatrixOrBuilder() {
        if (confusionMatrixBuilder_ != null) {
          return confusionMatrixBuilder_.getMessageOrBuilder();
        } else {
          return confusionMatrix_ == null ?
              clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrix.getDefaultInstance() : confusionMatrix_;
        }
      }
      /**
       * .clarifai.api.ConfusionMatrix confusion_matrix = 3;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrix, clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrix.Builder, clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrixOrBuilder> 
          getConfusionMatrixFieldBuilder() {
        if (confusionMatrixBuilder_ == null) {
          confusionMatrixBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrix, clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrix.Builder, clarifai2.internal.grpc.api.ModelVersionOuterClass.ConfusionMatrixOrBuilder>(
                  getConfusionMatrix(),
                  getParentForChildren(),
                  isClean());
          confusionMatrix_ = null;
        }
        return confusionMatrixBuilder_;
      }

      private clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrix cooccurrenceMatrix_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrix, clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrix.Builder, clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrixOrBuilder> cooccurrenceMatrixBuilder_;
      /**
       * .clarifai.api.CooccurrenceMatrix cooccurrence_matrix = 4;
       */
      public boolean hasCooccurrenceMatrix() {
        return cooccurrenceMatrixBuilder_ != null || cooccurrenceMatrix_ != null;
      }
      /**
       * .clarifai.api.CooccurrenceMatrix cooccurrence_matrix = 4;
       */
      public clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrix getCooccurrenceMatrix() {
        if (cooccurrenceMatrixBuilder_ == null) {
          return cooccurrenceMatrix_ == null ? clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrix.getDefaultInstance() : cooccurrenceMatrix_;
        } else {
          return cooccurrenceMatrixBuilder_.getMessage();
        }
      }
      /**
       * .clarifai.api.CooccurrenceMatrix cooccurrence_matrix = 4;
       */
      public Builder setCooccurrenceMatrix(clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrix value) {
        if (cooccurrenceMatrixBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          cooccurrenceMatrix_ = value;
          onChanged();
        } else {
          cooccurrenceMatrixBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * .clarifai.api.CooccurrenceMatrix cooccurrence_matrix = 4;
       */
      public Builder setCooccurrenceMatrix(
          clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrix.Builder builderForValue) {
        if (cooccurrenceMatrixBuilder_ == null) {
          cooccurrenceMatrix_ = builderForValue.build();
          onChanged();
        } else {
          cooccurrenceMatrixBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * .clarifai.api.CooccurrenceMatrix cooccurrence_matrix = 4;
       */
      public Builder mergeCooccurrenceMatrix(clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrix value) {
        if (cooccurrenceMatrixBuilder_ == null) {
          if (cooccurrenceMatrix_ != null) {
            cooccurrenceMatrix_ =
              clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrix.newBuilder(cooccurrenceMatrix_).mergeFrom(value).buildPartial();
          } else {
            cooccurrenceMatrix_ = value;
          }
          onChanged();
        } else {
          cooccurrenceMatrixBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * .clarifai.api.CooccurrenceMatrix cooccurrence_matrix = 4;
       */
      public Builder clearCooccurrenceMatrix() {
        if (cooccurrenceMatrixBuilder_ == null) {
          cooccurrenceMatrix_ = null;
          onChanged();
        } else {
          cooccurrenceMatrix_ = null;
          cooccurrenceMatrixBuilder_ = null;
        }

        return this;
      }
      /**
       * .clarifai.api.CooccurrenceMatrix cooccurrence_matrix = 4;
       */
      public clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrix.Builder getCooccurrenceMatrixBuilder() {
        
        onChanged();
        return getCooccurrenceMatrixFieldBuilder().getBuilder();
      }
      /**
       * .clarifai.api.CooccurrenceMatrix cooccurrence_matrix = 4;
       */
      public clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrixOrBuilder getCooccurrenceMatrixOrBuilder() {
        if (cooccurrenceMatrixBuilder_ != null) {
          return cooccurrenceMatrixBuilder_.getMessageOrBuilder();
        } else {
          return cooccurrenceMatrix_ == null ?
              clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrix.getDefaultInstance() : cooccurrenceMatrix_;
        }
      }
      /**
       * .clarifai.api.CooccurrenceMatrix cooccurrence_matrix = 4;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrix, clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrix.Builder, clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrixOrBuilder> 
          getCooccurrenceMatrixFieldBuilder() {
        if (cooccurrenceMatrixBuilder_ == null) {
          cooccurrenceMatrixBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrix, clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrix.Builder, clarifai2.internal.grpc.api.ModelVersionOuterClass.CooccurrenceMatrixOrBuilder>(
                  getCooccurrenceMatrix(),
                  getParentForChildren(),
                  isClean());
          cooccurrenceMatrix_ = null;
        }
        return cooccurrenceMatrixBuilder_;
      }

      private clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelDistribution labelCounts_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelDistribution, clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelDistribution.Builder, clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelDistributionOrBuilder> labelCountsBuilder_;
      /**
       * .clarifai.api.LabelDistribution label_counts = 5;
       */
      public boolean hasLabelCounts() {
        return labelCountsBuilder_ != null || labelCounts_ != null;
      }
      /**
       * .clarifai.api.LabelDistribution label_counts = 5;
       */
      public clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelDistribution getLabelCounts() {
        if (labelCountsBuilder_ == null) {
          return labelCounts_ == null ? clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelDistribution.getDefaultInstance() : labelCounts_;
        } else {
          return labelCountsBuilder_.getMessage();
        }
      }
      /**
       * .clarifai.api.LabelDistribution label_counts = 5;
       */
      public Builder setLabelCounts(clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelDistribution value) {
        if (labelCountsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          labelCounts_ = value;
          onChanged();
        } else {
          labelCountsBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * .clarifai.api.LabelDistribution label_counts = 5;
       */
      public Builder setLabelCounts(
          clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelDistribution.Builder builderForValue) {
        if (labelCountsBuilder_ == null) {
          labelCounts_ = builderForValue.build();
          onChanged();
        } else {
          labelCountsBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * .clarifai.api.LabelDistribution label_counts = 5;
       */
      public Builder mergeLabelCounts(clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelDistribution value) {
        if (labelCountsBuilder_ == null) {
          if (labelCounts_ != null) {
            labelCounts_ =
              clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelDistribution.newBuilder(labelCounts_).mergeFrom(value).buildPartial();
          } else {
            labelCounts_ = value;
          }
          onChanged();
        } else {
          labelCountsBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * .clarifai.api.LabelDistribution label_counts = 5;
       */
      public Builder clearLabelCounts() {
        if (labelCountsBuilder_ == null) {
          labelCounts_ = null;
          onChanged();
        } else {
          labelCounts_ = null;
          labelCountsBuilder_ = null;
        }

        return this;
      }
      /**
       * .clarifai.api.LabelDistribution label_counts = 5;
       */
      public clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelDistribution.Builder getLabelCountsBuilder() {
        
        onChanged();
        return getLabelCountsFieldBuilder().getBuilder();
      }
      /**
       * .clarifai.api.LabelDistribution label_counts = 5;
       */
      public clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelDistributionOrBuilder getLabelCountsOrBuilder() {
        if (labelCountsBuilder_ != null) {
          return labelCountsBuilder_.getMessageOrBuilder();
        } else {
          return labelCounts_ == null ?
              clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelDistribution.getDefaultInstance() : labelCounts_;
        }
      }
      /**
       * .clarifai.api.LabelDistribution label_counts = 5;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelDistribution, clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelDistribution.Builder, clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelDistributionOrBuilder> 
          getLabelCountsFieldBuilder() {
        if (labelCountsBuilder_ == null) {
          labelCountsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelDistribution, clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelDistribution.Builder, clarifai2.internal.grpc.api.ModelVersionOuterClass.LabelDistributionOrBuilder>(
                  getLabelCounts(),
                  getParentForChildren(),
                  isClean());
          labelCounts_ = null;
        }
        return labelCountsBuilder_;
      }

      private java.util.List binaryMetrics_ =
        java.util.Collections.emptyList();
      private void ensureBinaryMetricsIsMutable() {
        if (!((bitField0_ & 0x00000020) == 0x00000020)) {
          binaryMetrics_ = new java.util.ArrayList(binaryMetrics_);
          bitField0_ |= 0x00000020;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          clarifai2.internal.grpc.api.ModelVersionOuterClass.BinaryMetrics, clarifai2.internal.grpc.api.ModelVersionOuterClass.BinaryMetrics.Builder, clarifai2.internal.grpc.api.ModelVersionOuterClass.BinaryMetricsOrBuilder> binaryMetricsBuilder_;

      /**
       * repeated .clarifai.api.BinaryMetrics binary_metrics = 6;
       */
      public java.util.List getBinaryMetricsList() {
        if (binaryMetricsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(binaryMetrics_);
        } else {
          return binaryMetricsBuilder_.getMessageList();
        }
      }
      /**
       * repeated .clarifai.api.BinaryMetrics binary_metrics = 6;
       */
      public int getBinaryMetricsCount() {
        if (binaryMetricsBuilder_ == null) {
          return binaryMetrics_.size();
        } else {
          return binaryMetricsBuilder_.getCount();
        }
      }
      /**
       * repeated .clarifai.api.BinaryMetrics binary_metrics = 6;
       */
      public clarifai2.internal.grpc.api.ModelVersionOuterClass.BinaryMetrics getBinaryMetrics(int index) {
        if (binaryMetricsBuilder_ == null) {
          return binaryMetrics_.get(index);
        } else {
          return binaryMetricsBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .clarifai.api.BinaryMetrics binary_metrics = 6;
       */
      public Builder setBinaryMetrics(
          int index, clarifai2.internal.grpc.api.ModelVersionOuterClass.BinaryMetrics value) {
        if (binaryMetricsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureBinaryMetricsIsMutable();
          binaryMetrics_.set(index, value);
          onChanged();
        } else {
          binaryMetricsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .clarifai.api.BinaryMetrics binary_metrics = 6;
       */
      public Builder setBinaryMetrics(
          int index, clarifai2.internal.grpc.api.ModelVersionOuterClass.BinaryMetrics.Builder builderForValue) {
        if (binaryMetricsBuilder_ == null) {
          ensureBinaryMetricsIsMutable();
          binaryMetrics_.set(index, builderForValue.build());
          onChanged();
        } else {
          binaryMetricsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .clarifai.api.BinaryMetrics binary_metrics = 6;
       */
      public Builder addBinaryMetrics(clarifai2.internal.grpc.api.ModelVersionOuterClass.BinaryMetrics value) {
        if (binaryMetricsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureBinaryMetricsIsMutable();
          binaryMetrics_.add(value);
          onChanged();
        } else {
          binaryMetricsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .clarifai.api.BinaryMetrics binary_metrics = 6;
       */
      public Builder addBinaryMetrics(
          int index, clarifai2.internal.grpc.api.ModelVersionOuterClass.BinaryMetrics value) {
        if (binaryMetricsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureBinaryMetricsIsMutable();
          binaryMetrics_.add(index, value);
          onChanged();
        } else {
          binaryMetricsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .clarifai.api.BinaryMetrics binary_metrics = 6;
       */
      public Builder addBinaryMetrics(
          clarifai2.internal.grpc.api.ModelVersionOuterClass.BinaryMetrics.Builder builderForValue) {
        if (binaryMetricsBuilder_ == null) {
          ensureBinaryMetricsIsMutable();
          binaryMetrics_.add(builderForValue.build());
          onChanged();
        } else {
          binaryMetricsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .clarifai.api.BinaryMetrics binary_metrics = 6;
       */
      public Builder addBinaryMetrics(
          int index, clarifai2.internal.grpc.api.ModelVersionOuterClass.BinaryMetrics.Builder builderForValue) {
        if (binaryMetricsBuilder_ == null) {
          ensureBinaryMetricsIsMutable();
          binaryMetrics_.add(index, builderForValue.build());
          onChanged();
        } else {
          binaryMetricsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .clarifai.api.BinaryMetrics binary_metrics = 6;
       */
      public Builder addAllBinaryMetrics(
          java.lang.Iterable values) {
        if (binaryMetricsBuilder_ == null) {
          ensureBinaryMetricsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, binaryMetrics_);
          onChanged();
        } else {
          binaryMetricsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .clarifai.api.BinaryMetrics binary_metrics = 6;
       */
      public Builder clearBinaryMetrics() {
        if (binaryMetricsBuilder_ == null) {
          binaryMetrics_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000020);
          onChanged();
        } else {
          binaryMetricsBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .clarifai.api.BinaryMetrics binary_metrics = 6;
       */
      public Builder removeBinaryMetrics(int index) {
        if (binaryMetricsBuilder_ == null) {
          ensureBinaryMetricsIsMutable();
          binaryMetrics_.remove(index);
          onChanged();
        } else {
          binaryMetricsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .clarifai.api.BinaryMetrics binary_metrics = 6;
       */
      public clarifai2.internal.grpc.api.ModelVersionOuterClass.BinaryMetrics.Builder getBinaryMetricsBuilder(
          int index) {
        return getBinaryMetricsFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .clarifai.api.BinaryMetrics binary_metrics = 6;
       */
      public clarifai2.internal.grpc.api.ModelVersionOuterClass.BinaryMetricsOrBuilder getBinaryMetricsOrBuilder(
          int index) {
        if (binaryMetricsBuilder_ == null) {
          return binaryMetrics_.get(index);  } else {
          return binaryMetricsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .clarifai.api.BinaryMetrics binary_metrics = 6;
       */
      public java.util.List 
           getBinaryMetricsOrBuilderList() {
        if (binaryMetricsBuilder_ != null) {
          return binaryMetricsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(binaryMetrics_);
        }
      }
      /**
       * repeated .clarifai.api.BinaryMetrics binary_metrics = 6;
       */
      public clarifai2.internal.grpc.api.ModelVersionOuterClass.BinaryMetrics.Builder addBinaryMetricsBuilder() {
        return getBinaryMetricsFieldBuilder().addBuilder(
            clarifai2.internal.grpc.api.ModelVersionOuterClass.BinaryMetrics.getDefaultInstance());
      }
      /**
       * repeated .clarifai.api.BinaryMetrics binary_metrics = 6;
       */
      public clarifai2.internal.grpc.api.ModelVersionOuterClass.BinaryMetrics.Builder addBinaryMetricsBuilder(
          int index) {
        return getBinaryMetricsFieldBuilder().addBuilder(
            index, clarifai2.internal.grpc.api.ModelVersionOuterClass.BinaryMetrics.getDefaultInstance());
      }
      /**
       * repeated .clarifai.api.BinaryMetrics binary_metrics = 6;
       */
      public java.util.List 
           getBinaryMetricsBuilderList() {
        return getBinaryMetricsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          clarifai2.internal.grpc.api.ModelVersionOuterClass.BinaryMetrics, clarifai2.internal.grpc.api.ModelVersionOuterClass.BinaryMetrics.Builder, clarifai2.internal.grpc.api.ModelVersionOuterClass.BinaryMetricsOrBuilder> 
          getBinaryMetricsFieldBuilder() {
        if (binaryMetricsBuilder_ == null) {
          binaryMetricsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              clarifai2.internal.grpc.api.ModelVersionOuterClass.BinaryMetrics, clarifai2.internal.grpc.api.ModelVersionOuterClass.BinaryMetrics.Builder, clarifai2.internal.grpc.api.ModelVersionOuterClass.BinaryMetricsOrBuilder>(
                  binaryMetrics_,
                  ((bitField0_ & 0x00000020) == 0x00000020),
                  getParentForChildren(),
                  isClean());
          binaryMetrics_ = null;
        }
        return binaryMetricsBuilder_;
      }

      private java.util.List testSet_ =
        java.util.Collections.emptyList();
      private void ensureTestSetIsMutable() {
        if (!((bitField0_ & 0x00000040) == 0x00000040)) {
          testSet_ = new java.util.ArrayList(testSet_);
          bitField0_ |= 0x00000040;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalTestSetEntry, clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalTestSetEntry.Builder, clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalTestSetEntryOrBuilder> testSetBuilder_;

      /**
       * repeated .clarifai.api.EvalTestSetEntry test_set = 7;
       */
      public java.util.List getTestSetList() {
        if (testSetBuilder_ == null) {
          return java.util.Collections.unmodifiableList(testSet_);
        } else {
          return testSetBuilder_.getMessageList();
        }
      }
      /**
       * repeated .clarifai.api.EvalTestSetEntry test_set = 7;
       */
      public int getTestSetCount() {
        if (testSetBuilder_ == null) {
          return testSet_.size();
        } else {
          return testSetBuilder_.getCount();
        }
      }
      /**
       * repeated .clarifai.api.EvalTestSetEntry test_set = 7;
       */
      public clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalTestSetEntry getTestSet(int index) {
        if (testSetBuilder_ == null) {
          return testSet_.get(index);
        } else {
          return testSetBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .clarifai.api.EvalTestSetEntry test_set = 7;
       */
      public Builder setTestSet(
          int index, clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalTestSetEntry value) {
        if (testSetBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTestSetIsMutable();
          testSet_.set(index, value);
          onChanged();
        } else {
          testSetBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .clarifai.api.EvalTestSetEntry test_set = 7;
       */
      public Builder setTestSet(
          int index, clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalTestSetEntry.Builder builderForValue) {
        if (testSetBuilder_ == null) {
          ensureTestSetIsMutable();
          testSet_.set(index, builderForValue.build());
          onChanged();
        } else {
          testSetBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .clarifai.api.EvalTestSetEntry test_set = 7;
       */
      public Builder addTestSet(clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalTestSetEntry value) {
        if (testSetBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTestSetIsMutable();
          testSet_.add(value);
          onChanged();
        } else {
          testSetBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .clarifai.api.EvalTestSetEntry test_set = 7;
       */
      public Builder addTestSet(
          int index, clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalTestSetEntry value) {
        if (testSetBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTestSetIsMutable();
          testSet_.add(index, value);
          onChanged();
        } else {
          testSetBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .clarifai.api.EvalTestSetEntry test_set = 7;
       */
      public Builder addTestSet(
          clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalTestSetEntry.Builder builderForValue) {
        if (testSetBuilder_ == null) {
          ensureTestSetIsMutable();
          testSet_.add(builderForValue.build());
          onChanged();
        } else {
          testSetBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .clarifai.api.EvalTestSetEntry test_set = 7;
       */
      public Builder addTestSet(
          int index, clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalTestSetEntry.Builder builderForValue) {
        if (testSetBuilder_ == null) {
          ensureTestSetIsMutable();
          testSet_.add(index, builderForValue.build());
          onChanged();
        } else {
          testSetBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .clarifai.api.EvalTestSetEntry test_set = 7;
       */
      public Builder addAllTestSet(
          java.lang.Iterable values) {
        if (testSetBuilder_ == null) {
          ensureTestSetIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, testSet_);
          onChanged();
        } else {
          testSetBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .clarifai.api.EvalTestSetEntry test_set = 7;
       */
      public Builder clearTestSet() {
        if (testSetBuilder_ == null) {
          testSet_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000040);
          onChanged();
        } else {
          testSetBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .clarifai.api.EvalTestSetEntry test_set = 7;
       */
      public Builder removeTestSet(int index) {
        if (testSetBuilder_ == null) {
          ensureTestSetIsMutable();
          testSet_.remove(index);
          onChanged();
        } else {
          testSetBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .clarifai.api.EvalTestSetEntry test_set = 7;
       */
      public clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalTestSetEntry.Builder getTestSetBuilder(
          int index) {
        return getTestSetFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .clarifai.api.EvalTestSetEntry test_set = 7;
       */
      public clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalTestSetEntryOrBuilder getTestSetOrBuilder(
          int index) {
        if (testSetBuilder_ == null) {
          return testSet_.get(index);  } else {
          return testSetBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .clarifai.api.EvalTestSetEntry test_set = 7;
       */
      public java.util.List 
           getTestSetOrBuilderList() {
        if (testSetBuilder_ != null) {
          return testSetBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(testSet_);
        }
      }
      /**
       * repeated .clarifai.api.EvalTestSetEntry test_set = 7;
       */
      public clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalTestSetEntry.Builder addTestSetBuilder() {
        return getTestSetFieldBuilder().addBuilder(
            clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalTestSetEntry.getDefaultInstance());
      }
      /**
       * repeated .clarifai.api.EvalTestSetEntry test_set = 7;
       */
      public clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalTestSetEntry.Builder addTestSetBuilder(
          int index) {
        return getTestSetFieldBuilder().addBuilder(
            index, clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalTestSetEntry.getDefaultInstance());
      }
      /**
       * repeated .clarifai.api.EvalTestSetEntry test_set = 7;
       */
      public java.util.List 
           getTestSetBuilderList() {
        return getTestSetFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalTestSetEntry, clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalTestSetEntry.Builder, clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalTestSetEntryOrBuilder> 
          getTestSetFieldBuilder() {
        if (testSetBuilder_ == null) {
          testSetBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalTestSetEntry, clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalTestSetEntry.Builder, clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalTestSetEntryOrBuilder>(
                  testSet_,
                  ((bitField0_ & 0x00000040) == 0x00000040),
                  getParentForChildren(),
                  isClean());
          testSet_ = null;
        }
        return testSetBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:clarifai.api.EvalMetrics)
    }

    // @@protoc_insertion_point(class_scope:clarifai.api.EvalMetrics)
    private static final clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalMetrics DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalMetrics();
    }

    public static clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalMetrics getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public clarifai2.internal.grpc.api.ModelVersionOuterClass.EvalMetrics getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface GetModelVersionMetricsRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:clarifai.api.GetModelVersionMetricsRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * .clarifai.api.UserAppIDSet user_app_id = 1;
     */
    boolean hasUserAppId();
    /**
     * .clarifai.api.UserAppIDSet user_app_id = 1;
     */
    clarifai2.internal.grpc.api.Common.UserAppIDSet getUserAppId();
    /**
     * .clarifai.api.UserAppIDSet user_app_id = 1;
     */
    clarifai2.internal.grpc.api.Common.UserAppIDSetOrBuilder getUserAppIdOrBuilder();

    /**
     * string model_id = 2;
     */
    java.lang.String getModelId();
    /**
     * string model_id = 2;
     */
    com.google.protobuf.ByteString
        getModelIdBytes();

    /**
     * string version_id = 3;
     */
    java.lang.String getVersionId();
    /**
     * string version_id = 3;
     */
    com.google.protobuf.ByteString
        getVersionIdBytes();

    /**
     * .clarifai.api.GetModelVersionMetricsRequest.FieldsValue fields = 4;
     */
    boolean hasFields();
    /**
     * .clarifai.api.GetModelVersionMetricsRequest.FieldsValue fields = 4;
     */
    clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionMetricsRequest.FieldsValue getFields();
    /**
     * .clarifai.api.GetModelVersionMetricsRequest.FieldsValue fields = 4;
     */
    clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionMetricsRequest.FieldsValueOrBuilder getFieldsOrBuilder();
  }
  /**
   * Protobuf type {@code clarifai.api.GetModelVersionMetricsRequest}
   */
  public  static final class GetModelVersionMetricsRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:clarifai.api.GetModelVersionMetricsRequest)
      GetModelVersionMetricsRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use GetModelVersionMetricsRequest.newBuilder() to construct.
    private GetModelVersionMetricsRequest(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private GetModelVersionMetricsRequest() {
      modelId_ = "";
      versionId_ = "";
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private GetModelVersionMetricsRequest(
        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;
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              clarifai2.internal.grpc.api.Common.UserAppIDSet.Builder subBuilder = null;
              if (userAppId_ != null) {
                subBuilder = userAppId_.toBuilder();
              }
              userAppId_ = input.readMessage(clarifai2.internal.grpc.api.Common.UserAppIDSet.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(userAppId_);
                userAppId_ = subBuilder.buildPartial();
              }

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

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

              versionId_ = s;
              break;
            }
            case 34: {
              clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionMetricsRequest.FieldsValue.Builder subBuilder = null;
              if (fields_ != null) {
                subBuilder = fields_.toBuilder();
              }
              fields_ = input.readMessage(clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionMetricsRequest.FieldsValue.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(fields_);
                fields_ = subBuilder.buildPartial();
              }

              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 clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_GetModelVersionMetricsRequest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_GetModelVersionMetricsRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionMetricsRequest.class, clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionMetricsRequest.Builder.class);
    }

    public interface FieldsValueOrBuilder extends
        // @@protoc_insertion_point(interface_extends:clarifai.api.GetModelVersionMetricsRequest.FieldsValue)
        com.google.protobuf.MessageOrBuilder {

      /**
       * bool confusion_matrix = 1;
       */
      boolean getConfusionMatrix();

      /**
       * bool cooccurrence_matrix = 2;
       */
      boolean getCooccurrenceMatrix();

      /**
       * bool label_counts = 3;
       */
      boolean getLabelCounts();

      /**
       * bool binary_metrics = 4;
       */
      boolean getBinaryMetrics();

      /**
       * bool test_set = 5;
       */
      boolean getTestSet();
    }
    /**
     * Protobuf type {@code clarifai.api.GetModelVersionMetricsRequest.FieldsValue}
     */
    public  static final class FieldsValue extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:clarifai.api.GetModelVersionMetricsRequest.FieldsValue)
        FieldsValueOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use FieldsValue.newBuilder() to construct.
      private FieldsValue(com.google.protobuf.GeneratedMessageV3.Builder builder) {
        super(builder);
      }
      private FieldsValue() {
        confusionMatrix_ = false;
        cooccurrenceMatrix_ = false;
        labelCounts_ = false;
        binaryMetrics_ = false;
        testSet_ = false;
      }

      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private FieldsValue(
          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;
              default: {
                if (!parseUnknownFieldProto3(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
              case 8: {

                confusionMatrix_ = input.readBool();
                break;
              }
              case 16: {

                cooccurrenceMatrix_ = input.readBool();
                break;
              }
              case 24: {

                labelCounts_ = input.readBool();
                break;
              }
              case 32: {

                binaryMetrics_ = input.readBool();
                break;
              }
              case 40: {

                testSet_ = input.readBool();
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_GetModelVersionMetricsRequest_FieldsValue_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_GetModelVersionMetricsRequest_FieldsValue_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionMetricsRequest.FieldsValue.class, clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionMetricsRequest.FieldsValue.Builder.class);
      }

      public static final int CONFUSION_MATRIX_FIELD_NUMBER = 1;
      private boolean confusionMatrix_;
      /**
       * bool confusion_matrix = 1;
       */
      public boolean getConfusionMatrix() {
        return confusionMatrix_;
      }

      public static final int COOCCURRENCE_MATRIX_FIELD_NUMBER = 2;
      private boolean cooccurrenceMatrix_;
      /**
       * bool cooccurrence_matrix = 2;
       */
      public boolean getCooccurrenceMatrix() {
        return cooccurrenceMatrix_;
      }

      public static final int LABEL_COUNTS_FIELD_NUMBER = 3;
      private boolean labelCounts_;
      /**
       * bool label_counts = 3;
       */
      public boolean getLabelCounts() {
        return labelCounts_;
      }

      public static final int BINARY_METRICS_FIELD_NUMBER = 4;
      private boolean binaryMetrics_;
      /**
       * bool binary_metrics = 4;
       */
      public boolean getBinaryMetrics() {
        return binaryMetrics_;
      }

      public static final int TEST_SET_FIELD_NUMBER = 5;
      private boolean testSet_;
      /**
       * bool test_set = 5;
       */
      public boolean getTestSet() {
        return testSet_;
      }

      private byte memoizedIsInitialized = -1;
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;

        memoizedIsInitialized = 1;
        return true;
      }

      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (confusionMatrix_ != false) {
          output.writeBool(1, confusionMatrix_);
        }
        if (cooccurrenceMatrix_ != false) {
          output.writeBool(2, cooccurrenceMatrix_);
        }
        if (labelCounts_ != false) {
          output.writeBool(3, labelCounts_);
        }
        if (binaryMetrics_ != false) {
          output.writeBool(4, binaryMetrics_);
        }
        if (testSet_ != false) {
          output.writeBool(5, testSet_);
        }
        unknownFields.writeTo(output);
      }

      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;

        size = 0;
        if (confusionMatrix_ != false) {
          size += com.google.protobuf.CodedOutputStream
            .computeBoolSize(1, confusionMatrix_);
        }
        if (cooccurrenceMatrix_ != false) {
          size += com.google.protobuf.CodedOutputStream
            .computeBoolSize(2, cooccurrenceMatrix_);
        }
        if (labelCounts_ != false) {
          size += com.google.protobuf.CodedOutputStream
            .computeBoolSize(3, labelCounts_);
        }
        if (binaryMetrics_ != false) {
          size += com.google.protobuf.CodedOutputStream
            .computeBoolSize(4, binaryMetrics_);
        }
        if (testSet_ != false) {
          size += com.google.protobuf.CodedOutputStream
            .computeBoolSize(5, testSet_);
        }
        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 clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionMetricsRequest.FieldsValue)) {
          return super.equals(obj);
        }
        clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionMetricsRequest.FieldsValue other = (clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionMetricsRequest.FieldsValue) obj;

        boolean result = true;
        result = result && (getConfusionMatrix()
            == other.getConfusionMatrix());
        result = result && (getCooccurrenceMatrix()
            == other.getCooccurrenceMatrix());
        result = result && (getLabelCounts()
            == other.getLabelCounts());
        result = result && (getBinaryMetrics()
            == other.getBinaryMetrics());
        result = result && (getTestSet()
            == other.getTestSet());
        result = result && unknownFields.equals(other.unknownFields);
        return result;
      }

      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        hash = (37 * hash) + CONFUSION_MATRIX_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getConfusionMatrix());
        hash = (37 * hash) + COOCCURRENCE_MATRIX_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getCooccurrenceMatrix());
        hash = (37 * hash) + LABEL_COUNTS_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getLabelCounts());
        hash = (37 * hash) + BINARY_METRICS_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getBinaryMetrics());
        hash = (37 * hash) + TEST_SET_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getTestSet());
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }

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

      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder() {
        return DEFAULT_INSTANCE.toBuilder();
      }
      public static Builder newBuilder(clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionMetricsRequest.FieldsValue prototype) {
        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() {
        return this == DEFAULT_INSTANCE
            ? new Builder() : new Builder().mergeFrom(this);
      }

      @java.lang.Override
      protected Builder newBuilderForType(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        Builder builder = new Builder(parent);
        return builder;
      }
      /**
       * Protobuf type {@code clarifai.api.GetModelVersionMetricsRequest.FieldsValue}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder implements
          // @@protoc_insertion_point(builder_implements:clarifai.api.GetModelVersionMetricsRequest.FieldsValue)
          clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionMetricsRequest.FieldsValueOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_GetModelVersionMetricsRequest_FieldsValue_descriptor;
        }

        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_GetModelVersionMetricsRequest_FieldsValue_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionMetricsRequest.FieldsValue.class, clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionMetricsRequest.FieldsValue.Builder.class);
        }

        // Construct using clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionMetricsRequest.FieldsValue.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }

        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
          }
        }
        public Builder clear() {
          super.clear();
          confusionMatrix_ = false;

          cooccurrenceMatrix_ = false;

          labelCounts_ = false;

          binaryMetrics_ = false;

          testSet_ = false;

          return this;
        }

        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_GetModelVersionMetricsRequest_FieldsValue_descriptor;
        }

        public clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionMetricsRequest.FieldsValue getDefaultInstanceForType() {
          return clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionMetricsRequest.FieldsValue.getDefaultInstance();
        }

        public clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionMetricsRequest.FieldsValue build() {
          clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionMetricsRequest.FieldsValue result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }

        public clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionMetricsRequest.FieldsValue buildPartial() {
          clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionMetricsRequest.FieldsValue result = new clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionMetricsRequest.FieldsValue(this);
          result.confusionMatrix_ = confusionMatrix_;
          result.cooccurrenceMatrix_ = cooccurrenceMatrix_;
          result.labelCounts_ = labelCounts_;
          result.binaryMetrics_ = binaryMetrics_;
          result.testSet_ = testSet_;
          onBuilt();
          return result;
        }

        public Builder clone() {
          return (Builder) super.clone();
        }
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return (Builder) super.setField(field, value);
        }
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return (Builder) super.clearField(field);
        }
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return (Builder) super.clearOneof(oneof);
        }
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, java.lang.Object value) {
          return (Builder) super.setRepeatedField(field, index, value);
        }
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return (Builder) super.addRepeatedField(field, value);
        }
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionMetricsRequest.FieldsValue) {
            return mergeFrom((clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionMetricsRequest.FieldsValue)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }

        public Builder mergeFrom(clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionMetricsRequest.FieldsValue other) {
          if (other == clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionMetricsRequest.FieldsValue.getDefaultInstance()) return this;
          if (other.getConfusionMatrix() != false) {
            setConfusionMatrix(other.getConfusionMatrix());
          }
          if (other.getCooccurrenceMatrix() != false) {
            setCooccurrenceMatrix(other.getCooccurrenceMatrix());
          }
          if (other.getLabelCounts() != false) {
            setLabelCounts(other.getLabelCounts());
          }
          if (other.getBinaryMetrics() != false) {
            setBinaryMetrics(other.getBinaryMetrics());
          }
          if (other.getTestSet() != false) {
            setTestSet(other.getTestSet());
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }

        public final boolean isInitialized() {
          return true;
        }

        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionMetricsRequest.FieldsValue parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionMetricsRequest.FieldsValue) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }

        private boolean confusionMatrix_ ;
        /**
         * bool confusion_matrix = 1;
         */
        public boolean getConfusionMatrix() {
          return confusionMatrix_;
        }
        /**
         * bool confusion_matrix = 1;
         */
        public Builder setConfusionMatrix(boolean value) {
          
          confusionMatrix_ = value;
          onChanged();
          return this;
        }
        /**
         * bool confusion_matrix = 1;
         */
        public Builder clearConfusionMatrix() {
          
          confusionMatrix_ = false;
          onChanged();
          return this;
        }

        private boolean cooccurrenceMatrix_ ;
        /**
         * bool cooccurrence_matrix = 2;
         */
        public boolean getCooccurrenceMatrix() {
          return cooccurrenceMatrix_;
        }
        /**
         * bool cooccurrence_matrix = 2;
         */
        public Builder setCooccurrenceMatrix(boolean value) {
          
          cooccurrenceMatrix_ = value;
          onChanged();
          return this;
        }
        /**
         * bool cooccurrence_matrix = 2;
         */
        public Builder clearCooccurrenceMatrix() {
          
          cooccurrenceMatrix_ = false;
          onChanged();
          return this;
        }

        private boolean labelCounts_ ;
        /**
         * bool label_counts = 3;
         */
        public boolean getLabelCounts() {
          return labelCounts_;
        }
        /**
         * bool label_counts = 3;
         */
        public Builder setLabelCounts(boolean value) {
          
          labelCounts_ = value;
          onChanged();
          return this;
        }
        /**
         * bool label_counts = 3;
         */
        public Builder clearLabelCounts() {
          
          labelCounts_ = false;
          onChanged();
          return this;
        }

        private boolean binaryMetrics_ ;
        /**
         * bool binary_metrics = 4;
         */
        public boolean getBinaryMetrics() {
          return binaryMetrics_;
        }
        /**
         * bool binary_metrics = 4;
         */
        public Builder setBinaryMetrics(boolean value) {
          
          binaryMetrics_ = value;
          onChanged();
          return this;
        }
        /**
         * bool binary_metrics = 4;
         */
        public Builder clearBinaryMetrics() {
          
          binaryMetrics_ = false;
          onChanged();
          return this;
        }

        private boolean testSet_ ;
        /**
         * bool test_set = 5;
         */
        public boolean getTestSet() {
          return testSet_;
        }
        /**
         * bool test_set = 5;
         */
        public Builder setTestSet(boolean value) {
          
          testSet_ = value;
          onChanged();
          return this;
        }
        /**
         * bool test_set = 5;
         */
        public Builder clearTestSet() {
          
          testSet_ = false;
          onChanged();
          return this;
        }
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFieldsProto3(unknownFields);
        }

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


        // @@protoc_insertion_point(builder_scope:clarifai.api.GetModelVersionMetricsRequest.FieldsValue)
      }

      // @@protoc_insertion_point(class_scope:clarifai.api.GetModelVersionMetricsRequest.FieldsValue)
      private static final clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionMetricsRequest.FieldsValue DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionMetricsRequest.FieldsValue();
      }

      public static clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionMetricsRequest.FieldsValue getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

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

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

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

      public clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionMetricsRequest.FieldsValue getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }

    }

    public static final int USER_APP_ID_FIELD_NUMBER = 1;
    private clarifai2.internal.grpc.api.Common.UserAppIDSet userAppId_;
    /**
     * .clarifai.api.UserAppIDSet user_app_id = 1;
     */
    public boolean hasUserAppId() {
      return userAppId_ != null;
    }
    /**
     * .clarifai.api.UserAppIDSet user_app_id = 1;
     */
    public clarifai2.internal.grpc.api.Common.UserAppIDSet getUserAppId() {
      return userAppId_ == null ? clarifai2.internal.grpc.api.Common.UserAppIDSet.getDefaultInstance() : userAppId_;
    }
    /**
     * .clarifai.api.UserAppIDSet user_app_id = 1;
     */
    public clarifai2.internal.grpc.api.Common.UserAppIDSetOrBuilder getUserAppIdOrBuilder() {
      return getUserAppId();
    }

    public static final int MODEL_ID_FIELD_NUMBER = 2;
    private volatile java.lang.Object modelId_;
    /**
     * string model_id = 2;
     */
    public java.lang.String getModelId() {
      java.lang.Object ref = modelId_;
      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();
        modelId_ = s;
        return s;
      }
    }
    /**
     * string model_id = 2;
     */
    public com.google.protobuf.ByteString
        getModelIdBytes() {
      java.lang.Object ref = modelId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        modelId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int VERSION_ID_FIELD_NUMBER = 3;
    private volatile java.lang.Object versionId_;
    /**
     * string version_id = 3;
     */
    public java.lang.String getVersionId() {
      java.lang.Object ref = versionId_;
      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();
        versionId_ = s;
        return s;
      }
    }
    /**
     * string version_id = 3;
     */
    public com.google.protobuf.ByteString
        getVersionIdBytes() {
      java.lang.Object ref = versionId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        versionId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIELDS_FIELD_NUMBER = 4;
    private clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionMetricsRequest.FieldsValue fields_;
    /**
     * .clarifai.api.GetModelVersionMetricsRequest.FieldsValue fields = 4;
     */
    public boolean hasFields() {
      return fields_ != null;
    }
    /**
     * .clarifai.api.GetModelVersionMetricsRequest.FieldsValue fields = 4;
     */
    public clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionMetricsRequest.FieldsValue getFields() {
      return fields_ == null ? clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionMetricsRequest.FieldsValue.getDefaultInstance() : fields_;
    }
    /**
     * .clarifai.api.GetModelVersionMetricsRequest.FieldsValue fields = 4;
     */
    public clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionMetricsRequest.FieldsValueOrBuilder getFieldsOrBuilder() {
      return getFields();
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (userAppId_ != null) {
        output.writeMessage(1, getUserAppId());
      }
      if (!getModelIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, modelId_);
      }
      if (!getVersionIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, versionId_);
      }
      if (fields_ != null) {
        output.writeMessage(4, getFields());
      }
      unknownFields.writeTo(output);
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (userAppId_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getUserAppId());
      }
      if (!getModelIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, modelId_);
      }
      if (!getVersionIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, versionId_);
      }
      if (fields_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, getFields());
      }
      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 clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionMetricsRequest)) {
        return super.equals(obj);
      }
      clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionMetricsRequest other = (clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionMetricsRequest) obj;

      boolean result = true;
      result = result && (hasUserAppId() == other.hasUserAppId());
      if (hasUserAppId()) {
        result = result && getUserAppId()
            .equals(other.getUserAppId());
      }
      result = result && getModelId()
          .equals(other.getModelId());
      result = result && getVersionId()
          .equals(other.getVersionId());
      result = result && (hasFields() == other.hasFields());
      if (hasFields()) {
        result = result && getFields()
            .equals(other.getFields());
      }
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasUserAppId()) {
        hash = (37 * hash) + USER_APP_ID_FIELD_NUMBER;
        hash = (53 * hash) + getUserAppId().hashCode();
      }
      hash = (37 * hash) + MODEL_ID_FIELD_NUMBER;
      hash = (53 * hash) + getModelId().hashCode();
      hash = (37 * hash) + VERSION_ID_FIELD_NUMBER;
      hash = (53 * hash) + getVersionId().hashCode();
      if (hasFields()) {
        hash = (37 * hash) + FIELDS_FIELD_NUMBER;
        hash = (53 * hash) + getFields().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionMetricsRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code clarifai.api.GetModelVersionMetricsRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:clarifai.api.GetModelVersionMetricsRequest)
        clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionMetricsRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_GetModelVersionMetricsRequest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_GetModelVersionMetricsRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionMetricsRequest.class, clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionMetricsRequest.Builder.class);
      }

      // Construct using clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionMetricsRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        if (userAppIdBuilder_ == null) {
          userAppId_ = null;
        } else {
          userAppId_ = null;
          userAppIdBuilder_ = null;
        }
        modelId_ = "";

        versionId_ = "";

        if (fieldsBuilder_ == null) {
          fields_ = null;
        } else {
          fields_ = null;
          fieldsBuilder_ = null;
        }
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_GetModelVersionMetricsRequest_descriptor;
      }

      public clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionMetricsRequest getDefaultInstanceForType() {
        return clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionMetricsRequest.getDefaultInstance();
      }

      public clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionMetricsRequest build() {
        clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionMetricsRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionMetricsRequest buildPartial() {
        clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionMetricsRequest result = new clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionMetricsRequest(this);
        if (userAppIdBuilder_ == null) {
          result.userAppId_ = userAppId_;
        } else {
          result.userAppId_ = userAppIdBuilder_.build();
        }
        result.modelId_ = modelId_;
        result.versionId_ = versionId_;
        if (fieldsBuilder_ == null) {
          result.fields_ = fields_;
        } else {
          result.fields_ = fieldsBuilder_.build();
        }
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionMetricsRequest) {
          return mergeFrom((clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionMetricsRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionMetricsRequest other) {
        if (other == clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionMetricsRequest.getDefaultInstance()) return this;
        if (other.hasUserAppId()) {
          mergeUserAppId(other.getUserAppId());
        }
        if (!other.getModelId().isEmpty()) {
          modelId_ = other.modelId_;
          onChanged();
        }
        if (!other.getVersionId().isEmpty()) {
          versionId_ = other.versionId_;
          onChanged();
        }
        if (other.hasFields()) {
          mergeFields(other.getFields());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionMetricsRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionMetricsRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private clarifai2.internal.grpc.api.Common.UserAppIDSet userAppId_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          clarifai2.internal.grpc.api.Common.UserAppIDSet, clarifai2.internal.grpc.api.Common.UserAppIDSet.Builder, clarifai2.internal.grpc.api.Common.UserAppIDSetOrBuilder> userAppIdBuilder_;
      /**
       * .clarifai.api.UserAppIDSet user_app_id = 1;
       */
      public boolean hasUserAppId() {
        return userAppIdBuilder_ != null || userAppId_ != null;
      }
      /**
       * .clarifai.api.UserAppIDSet user_app_id = 1;
       */
      public clarifai2.internal.grpc.api.Common.UserAppIDSet getUserAppId() {
        if (userAppIdBuilder_ == null) {
          return userAppId_ == null ? clarifai2.internal.grpc.api.Common.UserAppIDSet.getDefaultInstance() : userAppId_;
        } else {
          return userAppIdBuilder_.getMessage();
        }
      }
      /**
       * .clarifai.api.UserAppIDSet user_app_id = 1;
       */
      public Builder setUserAppId(clarifai2.internal.grpc.api.Common.UserAppIDSet value) {
        if (userAppIdBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          userAppId_ = value;
          onChanged();
        } else {
          userAppIdBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * .clarifai.api.UserAppIDSet user_app_id = 1;
       */
      public Builder setUserAppId(
          clarifai2.internal.grpc.api.Common.UserAppIDSet.Builder builderForValue) {
        if (userAppIdBuilder_ == null) {
          userAppId_ = builderForValue.build();
          onChanged();
        } else {
          userAppIdBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * .clarifai.api.UserAppIDSet user_app_id = 1;
       */
      public Builder mergeUserAppId(clarifai2.internal.grpc.api.Common.UserAppIDSet value) {
        if (userAppIdBuilder_ == null) {
          if (userAppId_ != null) {
            userAppId_ =
              clarifai2.internal.grpc.api.Common.UserAppIDSet.newBuilder(userAppId_).mergeFrom(value).buildPartial();
          } else {
            userAppId_ = value;
          }
          onChanged();
        } else {
          userAppIdBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * .clarifai.api.UserAppIDSet user_app_id = 1;
       */
      public Builder clearUserAppId() {
        if (userAppIdBuilder_ == null) {
          userAppId_ = null;
          onChanged();
        } else {
          userAppId_ = null;
          userAppIdBuilder_ = null;
        }

        return this;
      }
      /**
       * .clarifai.api.UserAppIDSet user_app_id = 1;
       */
      public clarifai2.internal.grpc.api.Common.UserAppIDSet.Builder getUserAppIdBuilder() {
        
        onChanged();
        return getUserAppIdFieldBuilder().getBuilder();
      }
      /**
       * .clarifai.api.UserAppIDSet user_app_id = 1;
       */
      public clarifai2.internal.grpc.api.Common.UserAppIDSetOrBuilder getUserAppIdOrBuilder() {
        if (userAppIdBuilder_ != null) {
          return userAppIdBuilder_.getMessageOrBuilder();
        } else {
          return userAppId_ == null ?
              clarifai2.internal.grpc.api.Common.UserAppIDSet.getDefaultInstance() : userAppId_;
        }
      }
      /**
       * .clarifai.api.UserAppIDSet user_app_id = 1;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          clarifai2.internal.grpc.api.Common.UserAppIDSet, clarifai2.internal.grpc.api.Common.UserAppIDSet.Builder, clarifai2.internal.grpc.api.Common.UserAppIDSetOrBuilder> 
          getUserAppIdFieldBuilder() {
        if (userAppIdBuilder_ == null) {
          userAppIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              clarifai2.internal.grpc.api.Common.UserAppIDSet, clarifai2.internal.grpc.api.Common.UserAppIDSet.Builder, clarifai2.internal.grpc.api.Common.UserAppIDSetOrBuilder>(
                  getUserAppId(),
                  getParentForChildren(),
                  isClean());
          userAppId_ = null;
        }
        return userAppIdBuilder_;
      }

      private java.lang.Object modelId_ = "";
      /**
       * string model_id = 2;
       */
      public java.lang.String getModelId() {
        java.lang.Object ref = modelId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          modelId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string model_id = 2;
       */
      public com.google.protobuf.ByteString
          getModelIdBytes() {
        java.lang.Object ref = modelId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          modelId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string model_id = 2;
       */
      public Builder setModelId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        modelId_ = value;
        onChanged();
        return this;
      }
      /**
       * string model_id = 2;
       */
      public Builder clearModelId() {
        
        modelId_ = getDefaultInstance().getModelId();
        onChanged();
        return this;
      }
      /**
       * string model_id = 2;
       */
      public Builder setModelIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        modelId_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object versionId_ = "";
      /**
       * string version_id = 3;
       */
      public java.lang.String getVersionId() {
        java.lang.Object ref = versionId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          versionId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string version_id = 3;
       */
      public com.google.protobuf.ByteString
          getVersionIdBytes() {
        java.lang.Object ref = versionId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          versionId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string version_id = 3;
       */
      public Builder setVersionId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        versionId_ = value;
        onChanged();
        return this;
      }
      /**
       * string version_id = 3;
       */
      public Builder clearVersionId() {
        
        versionId_ = getDefaultInstance().getVersionId();
        onChanged();
        return this;
      }
      /**
       * string version_id = 3;
       */
      public Builder setVersionIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        versionId_ = value;
        onChanged();
        return this;
      }

      private clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionMetricsRequest.FieldsValue fields_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionMetricsRequest.FieldsValue, clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionMetricsRequest.FieldsValue.Builder, clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionMetricsRequest.FieldsValueOrBuilder> fieldsBuilder_;
      /**
       * .clarifai.api.GetModelVersionMetricsRequest.FieldsValue fields = 4;
       */
      public boolean hasFields() {
        return fieldsBuilder_ != null || fields_ != null;
      }
      /**
       * .clarifai.api.GetModelVersionMetricsRequest.FieldsValue fields = 4;
       */
      public clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionMetricsRequest.FieldsValue getFields() {
        if (fieldsBuilder_ == null) {
          return fields_ == null ? clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionMetricsRequest.FieldsValue.getDefaultInstance() : fields_;
        } else {
          return fieldsBuilder_.getMessage();
        }
      }
      /**
       * .clarifai.api.GetModelVersionMetricsRequest.FieldsValue fields = 4;
       */
      public Builder setFields(clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionMetricsRequest.FieldsValue value) {
        if (fieldsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          fields_ = value;
          onChanged();
        } else {
          fieldsBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * .clarifai.api.GetModelVersionMetricsRequest.FieldsValue fields = 4;
       */
      public Builder setFields(
          clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionMetricsRequest.FieldsValue.Builder builderForValue) {
        if (fieldsBuilder_ == null) {
          fields_ = builderForValue.build();
          onChanged();
        } else {
          fieldsBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * .clarifai.api.GetModelVersionMetricsRequest.FieldsValue fields = 4;
       */
      public Builder mergeFields(clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionMetricsRequest.FieldsValue value) {
        if (fieldsBuilder_ == null) {
          if (fields_ != null) {
            fields_ =
              clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionMetricsRequest.FieldsValue.newBuilder(fields_).mergeFrom(value).buildPartial();
          } else {
            fields_ = value;
          }
          onChanged();
        } else {
          fieldsBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * .clarifai.api.GetModelVersionMetricsRequest.FieldsValue fields = 4;
       */
      public Builder clearFields() {
        if (fieldsBuilder_ == null) {
          fields_ = null;
          onChanged();
        } else {
          fields_ = null;
          fieldsBuilder_ = null;
        }

        return this;
      }
      /**
       * .clarifai.api.GetModelVersionMetricsRequest.FieldsValue fields = 4;
       */
      public clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionMetricsRequest.FieldsValue.Builder getFieldsBuilder() {
        
        onChanged();
        return getFieldsFieldBuilder().getBuilder();
      }
      /**
       * .clarifai.api.GetModelVersionMetricsRequest.FieldsValue fields = 4;
       */
      public clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionMetricsRequest.FieldsValueOrBuilder getFieldsOrBuilder() {
        if (fieldsBuilder_ != null) {
          return fieldsBuilder_.getMessageOrBuilder();
        } else {
          return fields_ == null ?
              clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionMetricsRequest.FieldsValue.getDefaultInstance() : fields_;
        }
      }
      /**
       * .clarifai.api.GetModelVersionMetricsRequest.FieldsValue fields = 4;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionMetricsRequest.FieldsValue, clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionMetricsRequest.FieldsValue.Builder, clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionMetricsRequest.FieldsValueOrBuilder> 
          getFieldsFieldBuilder() {
        if (fieldsBuilder_ == null) {
          fieldsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionMetricsRequest.FieldsValue, clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionMetricsRequest.FieldsValue.Builder, clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionMetricsRequest.FieldsValueOrBuilder>(
                  getFields(),
                  getParentForChildren(),
                  isClean());
          fields_ = null;
        }
        return fieldsBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:clarifai.api.GetModelVersionMetricsRequest)
    }

    // @@protoc_insertion_point(class_scope:clarifai.api.GetModelVersionMetricsRequest)
    private static final clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionMetricsRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionMetricsRequest();
    }

    public static clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionMetricsRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public clarifai2.internal.grpc.api.ModelVersionOuterClass.GetModelVersionMetricsRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PostModelVersionMetricsRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:clarifai.api.PostModelVersionMetricsRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * .clarifai.api.UserAppIDSet user_app_id = 1;
     */
    boolean hasUserAppId();
    /**
     * .clarifai.api.UserAppIDSet user_app_id = 1;
     */
    clarifai2.internal.grpc.api.Common.UserAppIDSet getUserAppId();
    /**
     * .clarifai.api.UserAppIDSet user_app_id = 1;
     */
    clarifai2.internal.grpc.api.Common.UserAppIDSetOrBuilder getUserAppIdOrBuilder();

    /**
     * string model_id = 2;
     */
    java.lang.String getModelId();
    /**
     * string model_id = 2;
     */
    com.google.protobuf.ByteString
        getModelIdBytes();

    /**
     * string version_id = 3;
     */
    java.lang.String getVersionId();
    /**
     * string version_id = 3;
     */
    com.google.protobuf.ByteString
        getVersionIdBytes();

    /**
     * uint32 max_examples = 4;
     */
    int getMaxExamples();
  }
  /**
   * Protobuf type {@code clarifai.api.PostModelVersionMetricsRequest}
   */
  public  static final class PostModelVersionMetricsRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:clarifai.api.PostModelVersionMetricsRequest)
      PostModelVersionMetricsRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PostModelVersionMetricsRequest.newBuilder() to construct.
    private PostModelVersionMetricsRequest(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private PostModelVersionMetricsRequest() {
      modelId_ = "";
      versionId_ = "";
      maxExamples_ = 0;
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private PostModelVersionMetricsRequest(
        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;
            default: {
              if (!parseUnknownFieldProto3(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              clarifai2.internal.grpc.api.Common.UserAppIDSet.Builder subBuilder = null;
              if (userAppId_ != null) {
                subBuilder = userAppId_.toBuilder();
              }
              userAppId_ = input.readMessage(clarifai2.internal.grpc.api.Common.UserAppIDSet.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(userAppId_);
                userAppId_ = subBuilder.buildPartial();
              }

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

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

              versionId_ = s;
              break;
            }
            case 32: {

              maxExamples_ = input.readUInt32();
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_PostModelVersionMetricsRequest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_PostModelVersionMetricsRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              clarifai2.internal.grpc.api.ModelVersionOuterClass.PostModelVersionMetricsRequest.class, clarifai2.internal.grpc.api.ModelVersionOuterClass.PostModelVersionMetricsRequest.Builder.class);
    }

    public static final int USER_APP_ID_FIELD_NUMBER = 1;
    private clarifai2.internal.grpc.api.Common.UserAppIDSet userAppId_;
    /**
     * .clarifai.api.UserAppIDSet user_app_id = 1;
     */
    public boolean hasUserAppId() {
      return userAppId_ != null;
    }
    /**
     * .clarifai.api.UserAppIDSet user_app_id = 1;
     */
    public clarifai2.internal.grpc.api.Common.UserAppIDSet getUserAppId() {
      return userAppId_ == null ? clarifai2.internal.grpc.api.Common.UserAppIDSet.getDefaultInstance() : userAppId_;
    }
    /**
     * .clarifai.api.UserAppIDSet user_app_id = 1;
     */
    public clarifai2.internal.grpc.api.Common.UserAppIDSetOrBuilder getUserAppIdOrBuilder() {
      return getUserAppId();
    }

    public static final int MODEL_ID_FIELD_NUMBER = 2;
    private volatile java.lang.Object modelId_;
    /**
     * string model_id = 2;
     */
    public java.lang.String getModelId() {
      java.lang.Object ref = modelId_;
      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();
        modelId_ = s;
        return s;
      }
    }
    /**
     * string model_id = 2;
     */
    public com.google.protobuf.ByteString
        getModelIdBytes() {
      java.lang.Object ref = modelId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        modelId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int VERSION_ID_FIELD_NUMBER = 3;
    private volatile java.lang.Object versionId_;
    /**
     * string version_id = 3;
     */
    public java.lang.String getVersionId() {
      java.lang.Object ref = versionId_;
      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();
        versionId_ = s;
        return s;
      }
    }
    /**
     * string version_id = 3;
     */
    public com.google.protobuf.ByteString
        getVersionIdBytes() {
      java.lang.Object ref = versionId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        versionId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int MAX_EXAMPLES_FIELD_NUMBER = 4;
    private int maxExamples_;
    /**
     * uint32 max_examples = 4;
     */
    public int getMaxExamples() {
      return maxExamples_;
    }

    private byte memoizedIsInitialized = -1;
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (userAppId_ != null) {
        output.writeMessage(1, getUserAppId());
      }
      if (!getModelIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, modelId_);
      }
      if (!getVersionIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, versionId_);
      }
      if (maxExamples_ != 0) {
        output.writeUInt32(4, maxExamples_);
      }
      unknownFields.writeTo(output);
    }

    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (userAppId_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getUserAppId());
      }
      if (!getModelIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, modelId_);
      }
      if (!getVersionIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, versionId_);
      }
      if (maxExamples_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(4, maxExamples_);
      }
      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 clarifai2.internal.grpc.api.ModelVersionOuterClass.PostModelVersionMetricsRequest)) {
        return super.equals(obj);
      }
      clarifai2.internal.grpc.api.ModelVersionOuterClass.PostModelVersionMetricsRequest other = (clarifai2.internal.grpc.api.ModelVersionOuterClass.PostModelVersionMetricsRequest) obj;

      boolean result = true;
      result = result && (hasUserAppId() == other.hasUserAppId());
      if (hasUserAppId()) {
        result = result && getUserAppId()
            .equals(other.getUserAppId());
      }
      result = result && getModelId()
          .equals(other.getModelId());
      result = result && getVersionId()
          .equals(other.getVersionId());
      result = result && (getMaxExamples()
          == other.getMaxExamples());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasUserAppId()) {
        hash = (37 * hash) + USER_APP_ID_FIELD_NUMBER;
        hash = (53 * hash) + getUserAppId().hashCode();
      }
      hash = (37 * hash) + MODEL_ID_FIELD_NUMBER;
      hash = (53 * hash) + getModelId().hashCode();
      hash = (37 * hash) + VERSION_ID_FIELD_NUMBER;
      hash = (53 * hash) + getVersionId().hashCode();
      hash = (37 * hash) + MAX_EXAMPLES_FIELD_NUMBER;
      hash = (53 * hash) + getMaxExamples();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

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

    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(clarifai2.internal.grpc.api.ModelVersionOuterClass.PostModelVersionMetricsRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * Protobuf type {@code clarifai.api.PostModelVersionMetricsRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:clarifai.api.PostModelVersionMetricsRequest)
        clarifai2.internal.grpc.api.ModelVersionOuterClass.PostModelVersionMetricsRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_PostModelVersionMetricsRequest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_PostModelVersionMetricsRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                clarifai2.internal.grpc.api.ModelVersionOuterClass.PostModelVersionMetricsRequest.class, clarifai2.internal.grpc.api.ModelVersionOuterClass.PostModelVersionMetricsRequest.Builder.class);
      }

      // Construct using clarifai2.internal.grpc.api.ModelVersionOuterClass.PostModelVersionMetricsRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      public Builder clear() {
        super.clear();
        if (userAppIdBuilder_ == null) {
          userAppId_ = null;
        } else {
          userAppId_ = null;
          userAppIdBuilder_ = null;
        }
        modelId_ = "";

        versionId_ = "";

        maxExamples_ = 0;

        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return clarifai2.internal.grpc.api.ModelVersionOuterClass.internal_static_clarifai_api_PostModelVersionMetricsRequest_descriptor;
      }

      public clarifai2.internal.grpc.api.ModelVersionOuterClass.PostModelVersionMetricsRequest getDefaultInstanceForType() {
        return clarifai2.internal.grpc.api.ModelVersionOuterClass.PostModelVersionMetricsRequest.getDefaultInstance();
      }

      public clarifai2.internal.grpc.api.ModelVersionOuterClass.PostModelVersionMetricsRequest build() {
        clarifai2.internal.grpc.api.ModelVersionOuterClass.PostModelVersionMetricsRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public clarifai2.internal.grpc.api.ModelVersionOuterClass.PostModelVersionMetricsRequest buildPartial() {
        clarifai2.internal.grpc.api.ModelVersionOuterClass.PostModelVersionMetricsRequest result = new clarifai2.internal.grpc.api.ModelVersionOuterClass.PostModelVersionMetricsRequest(this);
        if (userAppIdBuilder_ == null) {
          result.userAppId_ = userAppId_;
        } else {
          result.userAppId_ = userAppIdBuilder_.build();
        }
        result.modelId_ = modelId_;
        result.versionId_ = versionId_;
        result.maxExamples_ = maxExamples_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof clarifai2.internal.grpc.api.ModelVersionOuterClass.PostModelVersionMetricsRequest) {
          return mergeFrom((clarifai2.internal.grpc.api.ModelVersionOuterClass.PostModelVersionMetricsRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(clarifai2.internal.grpc.api.ModelVersionOuterClass.PostModelVersionMetricsRequest other) {
        if (other == clarifai2.internal.grpc.api.ModelVersionOuterClass.PostModelVersionMetricsRequest.getDefaultInstance()) return this;
        if (other.hasUserAppId()) {
          mergeUserAppId(other.getUserAppId());
        }
        if (!other.getModelId().isEmpty()) {
          modelId_ = other.modelId_;
          onChanged();
        }
        if (!other.getVersionId().isEmpty()) {
          versionId_ = other.versionId_;
          onChanged();
        }
        if (other.getMaxExamples() != 0) {
          setMaxExamples(other.getMaxExamples());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

      public final boolean isInitialized() {
        return true;
      }

      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        clarifai2.internal.grpc.api.ModelVersionOuterClass.PostModelVersionMetricsRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (clarifai2.internal.grpc.api.ModelVersionOuterClass.PostModelVersionMetricsRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private clarifai2.internal.grpc.api.Common.UserAppIDSet userAppId_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          clarifai2.internal.grpc.api.Common.UserAppIDSet, clarifai2.internal.grpc.api.Common.UserAppIDSet.Builder, clarifai2.internal.grpc.api.Common.UserAppIDSetOrBuilder> userAppIdBuilder_;
      /**
       * .clarifai.api.UserAppIDSet user_app_id = 1;
       */
      public boolean hasUserAppId() {
        return userAppIdBuilder_ != null || userAppId_ != null;
      }
      /**
       * .clarifai.api.UserAppIDSet user_app_id = 1;
       */
      public clarifai2.internal.grpc.api.Common.UserAppIDSet getUserAppId() {
        if (userAppIdBuilder_ == null) {
          return userAppId_ == null ? clarifai2.internal.grpc.api.Common.UserAppIDSet.getDefaultInstance() : userAppId_;
        } else {
          return userAppIdBuilder_.getMessage();
        }
      }
      /**
       * .clarifai.api.UserAppIDSet user_app_id = 1;
       */
      public Builder setUserAppId(clarifai2.internal.grpc.api.Common.UserAppIDSet value) {
        if (userAppIdBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          userAppId_ = value;
          onChanged();
        } else {
          userAppIdBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * .clarifai.api.UserAppIDSet user_app_id = 1;
       */
      public Builder setUserAppId(
          clarifai2.internal.grpc.api.Common.UserAppIDSet.Builder builderForValue) {
        if (userAppIdBuilder_ == null) {
          userAppId_ = builderForValue.build();
          onChanged();
        } else {
          userAppIdBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * .clarifai.api.UserAppIDSet user_app_id = 1;
       */
      public Builder mergeUserAppId(clarifai2.internal.grpc.api.Common.UserAppIDSet value) {
        if (userAppIdBuilder_ == null) {
          if (userAppId_ != null) {
            userAppId_ =
              clarifai2.internal.grpc.api.Common.UserAppIDSet.newBuilder(userAppId_).mergeFrom(value).buildPartial();
          } else {
            userAppId_ = value;
          }
          onChanged();
        } else {
          userAppIdBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * .clarifai.api.UserAppIDSet user_app_id = 1;
       */
      public Builder clearUserAppId() {
        if (userAppIdBuilder_ == null) {
          userAppId_ = null;
          onChanged();
        } else {
          userAppId_ = null;
          userAppIdBuilder_ = null;
        }

        return this;
      }
      /**
       * .clarifai.api.UserAppIDSet user_app_id = 1;
       */
      public clarifai2.internal.grpc.api.Common.UserAppIDSet.Builder getUserAppIdBuilder() {
        
        onChanged();
        return getUserAppIdFieldBuilder().getBuilder();
      }
      /**
       * .clarifai.api.UserAppIDSet user_app_id = 1;
       */
      public clarifai2.internal.grpc.api.Common.UserAppIDSetOrBuilder getUserAppIdOrBuilder() {
        if (userAppIdBuilder_ != null) {
          return userAppIdBuilder_.getMessageOrBuilder();
        } else {
          return userAppId_ == null ?
              clarifai2.internal.grpc.api.Common.UserAppIDSet.getDefaultInstance() : userAppId_;
        }
      }
      /**
       * .clarifai.api.UserAppIDSet user_app_id = 1;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          clarifai2.internal.grpc.api.Common.UserAppIDSet, clarifai2.internal.grpc.api.Common.UserAppIDSet.Builder, clarifai2.internal.grpc.api.Common.UserAppIDSetOrBuilder> 
          getUserAppIdFieldBuilder() {
        if (userAppIdBuilder_ == null) {
          userAppIdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              clarifai2.internal.grpc.api.Common.UserAppIDSet, clarifai2.internal.grpc.api.Common.UserAppIDSet.Builder, clarifai2.internal.grpc.api.Common.UserAppIDSetOrBuilder>(
                  getUserAppId(),
                  getParentForChildren(),
                  isClean());
          userAppId_ = null;
        }
        return userAppIdBuilder_;
      }

      private java.lang.Object modelId_ = "";
      /**
       * string model_id = 2;
       */
      public java.lang.String getModelId() {
        java.lang.Object ref = modelId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          modelId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string model_id = 2;
       */
      public com.google.protobuf.ByteString
          getModelIdBytes() {
        java.lang.Object ref = modelId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          modelId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string model_id = 2;
       */
      public Builder setModelId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        modelId_ = value;
        onChanged();
        return this;
      }
      /**
       * string model_id = 2;
       */
      public Builder clearModelId() {
        
        modelId_ = getDefaultInstance().getModelId();
        onChanged();
        return this;
      }
      /**
       * string model_id = 2;
       */
      public Builder setModelIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        modelId_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object versionId_ = "";
      /**
       * string version_id = 3;
       */
      public java.lang.String getVersionId() {
        java.lang.Object ref = versionId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          versionId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string version_id = 3;
       */
      public com.google.protobuf.ByteString
          getVersionIdBytes() {
        java.lang.Object ref = versionId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          versionId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string version_id = 3;
       */
      public Builder setVersionId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        versionId_ = value;
        onChanged();
        return this;
      }
      /**
       * string version_id = 3;
       */
      public Builder clearVersionId() {
        
        versionId_ = getDefaultInstance().getVersionId();
        onChanged();
        return this;
      }
      /**
       * string version_id = 3;
       */
      public Builder setVersionIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        versionId_ = value;
        onChanged();
        return this;
      }

      private int maxExamples_ ;
      /**
       * uint32 max_examples = 4;
       */
      public int getMaxExamples() {
        return maxExamples_;
      }
      /**
       * uint32 max_examples = 4;
       */
      public Builder setMaxExamples(int value) {
        
        maxExamples_ = value;
        onChanged();
        return this;
      }
      /**
       * uint32 max_examples = 4;
       */
      public Builder clearMaxExamples() {
        
        maxExamples_ = 0;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFieldsProto3(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:clarifai.api.PostModelVersionMetricsRequest)
    }

    // @@protoc_insertion_point(class_scope:clarifai.api.PostModelVersionMetricsRequest)
    private static final clarifai2.internal.grpc.api.ModelVersionOuterClass.PostModelVersionMetricsRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new clarifai2.internal.grpc.api.ModelVersionOuterClass.PostModelVersionMetricsRequest();
    }

    public static clarifai2.internal.grpc.api.ModelVersionOuterClass.PostModelVersionMetricsRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public clarifai2.internal.grpc.api.ModelVersionOuterClass.PostModelVersionMetricsRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_clarifai_api_ModelVersion_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_clarifai_api_ModelVersion_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_clarifai_api_PretrainedModelConfig_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_clarifai_api_PretrainedModelConfig_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_clarifai_api_GetModelVersionRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_clarifai_api_GetModelVersionRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_clarifai_api_ListModelVersionsRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_clarifai_api_ListModelVersionsRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_clarifai_api_PostModelVersionsRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_clarifai_api_PostModelVersionsRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_clarifai_api_DeleteModelVersionRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_clarifai_api_DeleteModelVersionRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_clarifai_api_SingleModelVersionResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_clarifai_api_SingleModelVersionResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_clarifai_api_MultiModelVersionResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_clarifai_api_MultiModelVersionResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_clarifai_api_LabelCount_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_clarifai_api_LabelCount_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_clarifai_api_LabelDistribution_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_clarifai_api_LabelDistribution_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_clarifai_api_CooccurrenceMatrixEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_clarifai_api_CooccurrenceMatrixEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_clarifai_api_CooccurrenceMatrix_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_clarifai_api_CooccurrenceMatrix_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_clarifai_api_ConfusionMatrixEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_clarifai_api_ConfusionMatrixEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_clarifai_api_ConfusionMatrix_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_clarifai_api_ConfusionMatrix_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_clarifai_api_ROC_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_clarifai_api_ROC_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_clarifai_api_PrecisionRecallCurve_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_clarifai_api_PrecisionRecallCurve_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_clarifai_api_BinaryMetrics_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_clarifai_api_BinaryMetrics_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_clarifai_api_EvalTestSetEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_clarifai_api_EvalTestSetEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_clarifai_api_MetricsSummary_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_clarifai_api_MetricsSummary_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_clarifai_api_EvalMetrics_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_clarifai_api_EvalMetrics_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_clarifai_api_GetModelVersionMetricsRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_clarifai_api_GetModelVersionMetricsRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_clarifai_api_GetModelVersionMetricsRequest_FieldsValue_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_clarifai_api_GetModelVersionMetricsRequest_FieldsValue_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_clarifai_api_PostModelVersionMetricsRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_clarifai_api_PostModelVersionMetricsRequest_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&proto/clarifai/api/model_version.proto" +
      "\022\014clarifai.api\032\037proto/clarifai/api/commo" +
      "n.proto\032 proto/clarifai/api/concept.prot" +
      "o\032&proto/clarifai/api/status/status.prot" +
      "o\032)proto/clarifai/api/utils/extensions.p" +
      "roto\032\037google/protobuf/timestamp.proto\"\334\001" +
      "\n\014ModelVersion\022\n\n\002id\030\001 \001(\t\022.\n\ncreated_at" +
      "\030\002 \001(\0132\032.google.protobuf.Timestamp\022+\n\006st" +
      "atus\030\003 \001(\0132\033.clarifai.api.status.Status\022" +
      "\034\n\024active_concept_count\030\004 \001(\r\022*\n\007metrics" +
      "\030\005 \001(\0132\031.clarifai.api.EvalMetrics\022\031\n\021tot" +
      "al_input_count\030\006 \001(\r\"1\n\025PretrainedModelC" +
      "onfig\022\n\n\002id\030\001 \001(\t\022\014\n\004type\030\002 \001(\t\"o\n\026GetMo" +
      "delVersionRequest\022/\n\013user_app_id\030\001 \001(\0132\032" +
      ".clarifai.api.UserAppIDSet\022\020\n\010model_id\030\002" +
      " \001(\t\022\022\n\nversion_id\030\003 \001(\t\"\222\001\n\030ListModelVe" +
      "rsionsRequest\022/\n\013user_app_id\030\001 \001(\0132\032.cla" +
      "rifai.api.UserAppIDSet\022\020\n\010model_id\030\002 \001(\t" +
      "\022\014\n\004page\030\003 \001(\r\022\020\n\010per_page\030\004 \001(\r\022\023\n\013conc" +
      "ept_ids\030\005 \003(\t\"\221\001\n\030PostModelVersionsReque" +
      "st\022/\n\013user_app_id\030\001 \001(\0132\032.clarifai.api.U" +
      "serAppIDSet\022\020\n\010model_id\030\002 \001(\t\0222\n\016model_v" +
      "ersions\030\003 \003(\0132\032.clarifai.api.ModelVersio" +
      "n\"r\n\031DeleteModelVersionRequest\022/\n\013user_a" +
      "pp_id\030\001 \001(\0132\032.clarifai.api.UserAppIDSet\022" +
      "\020\n\010model_id\030\003 \001(\t\022\022\n\nversion_id\030\004 \001(\t\"|\n" +
      "\032SingleModelVersionResponse\022+\n\006status\030\001 " +
      "\001(\0132\033.clarifai.api.status.Status\0221\n\rmode" +
      "l_version\030\002 \001(\0132\032.clarifai.api.ModelVers" +
      "ion\"\202\001\n\031MultiModelVersionResponse\022+\n\006sta" +
      "tus\030\001 \001(\0132\033.clarifai.api.status.Status\0228" +
      "\n\016model_versions\030\002 \003(\0132\032.clarifai.api.Mo" +
      "delVersionB\004\200\265\030\001\"1\n\nLabelCount\022\024\n\014concep" +
      "t_name\030\001 \001(\t\022\r\n\005count\030\002 \001(\r\"L\n\021LabelDist" +
      "ribution\0227\n\025positive_label_counts\030\001 \003(\0132" +
      "\030.clarifai.api.LabelCount\"B\n\027Cooccurrenc" +
      "eMatrixEntry\022\013\n\003row\030\001 \001(\t\022\013\n\003col\030\002 \001(\t\022\r" +
      "\n\005count\030\003 \001(\r\"`\n\022CooccurrenceMatrix\0225\n\006m" +
      "atrix\030\001 \003(\0132%.clarifai.api.CooccurrenceM" +
      "atrixEntry\022\023\n\013concept_ids\030\002 \003(\t\"N\n\024Confu" +
      "sionMatrixEntry\022\021\n\tpredicted\030\001 \001(\t\022\016\n\006ac" +
      "tual\030\002 \001(\t\022\023\n\005value\030\004 \001(\002B\004\200\265\030\001\"Z\n\017Confu" +
      "sionMatrix\0222\n\006matrix\030\001 \003(\0132\".clarifai.ap" +
      "i.ConfusionMatrixEntry\022\023\n\013concept_ids\030\002 " +
      "\003(\t\"E\n\003ROC\022\021\n\003fpr\030\001 \003(\002B\004\200\265\030\001\022\021\n\003tpr\030\002 \003" +
      "(\002B\004\200\265\030\001\022\030\n\nthresholds\030\003 \003(\002B\004\200\265\030\001\"_\n\024Pr" +
      "ecisionRecallCurve\022\024\n\006recall\030\001 \003(\002B\004\200\265\030\001" +
      "\022\027\n\tprecision\030\002 \003(\002B\004\200\265\030\001\022\030\n\nthresholds\030" +
      "\003 \003(\002B\004\200\265\030\001\"\217\002\n\rBinaryMetrics\022\025\n\007num_pos" +
      "\030\001 \001(\rB\004\200\265\030\001\022\025\n\007num_neg\030\002 \001(\rB\004\200\265\030\001\022\025\n\007n" +
      "um_tot\030\003 \001(\rB\004\200\265\030\001\022\025\n\007roc_auc\030\004 \001(\002B\004\200\265\030" +
      "\001\022\020\n\002f1\030\005 \001(\002B\004\200\265\030\001\022&\n\007concept\030\006 \001(\0132\025.c" +
      "larifai.api.Concept\022$\n\troc_curve\030\007 \001(\0132\021" +
      ".clarifai.api.ROC\022B\n\026precision_recall_cu" +
      "rve\030\010 \001(\0132\".clarifai.api.PrecisionRecall" +
      "Curve\"\224\001\n\020EvalTestSetEntry\022\n\n\002id\030\001 \001(\t\022\013" +
      "\n\003url\030\002 \001(\t\0221\n\022predicted_concepts\030\003 \003(\0132" +
      "\025.clarifai.api.Concept\0224\n\025ground_truth_c" +
      "oncepts\030\004 \003(\0132\025.clarifai.api.Concept\"\217\002\n" +
      "\016MetricsSummary\022\031\n\rtop1_accuracy\030\001 \001(\002B\002" +
      "\030\001\022\031\n\rtop5_accuracy\030\002 \001(\002B\002\030\001\022\037\n\021macro_a" +
      "vg_roc_auc\030\003 \001(\002B\004\200\265\030\001\022\037\n\021macro_std_roc_" +
      "auc\030\004 \001(\002B\004\200\265\030\001\022 \n\022macro_avg_f1_score\030\005 " +
      "\001(\002B\004\200\265\030\001\022 \n\022macro_std_f1_score\030\006 \001(\002B\004\200" +
      "\265\030\001\022!\n\023macro_avg_precision\030\007 \001(\002B\004\200\265\030\001\022\036" +
      "\n\020macro_avg_recall\030\010 \001(\002B\004\200\265\030\001\"\377\002\n\013EvalM" +
      "etrics\022+\n\006status\030\001 \001(\0132\033.clarifai.api.st" +
      "atus.Status\022-\n\007summary\030\002 \001(\0132\034.clarifai." +
      "api.MetricsSummary\0227\n\020confusion_matrix\030\003" +
      " \001(\0132\035.clarifai.api.ConfusionMatrix\022=\n\023c" +
      "ooccurrence_matrix\030\004 \001(\0132 .clarifai.api." +
      "CooccurrenceMatrix\0225\n\014label_counts\030\005 \001(\013" +
      "2\037.clarifai.api.LabelDistribution\0223\n\016bin" +
      "ary_metrics\030\006 \003(\0132\033.clarifai.api.BinaryM" +
      "etrics\0220\n\010test_set\030\007 \003(\0132\036.clarifai.api." +
      "EvalTestSetEntry\"\306\002\n\035GetModelVersionMetr" +
      "icsRequest\022/\n\013user_app_id\030\001 \001(\0132\032.clarif" +
      "ai.api.UserAppIDSet\022\020\n\010model_id\030\002 \001(\t\022\022\n" +
      "\nversion_id\030\003 \001(\t\022G\n\006fields\030\004 \001(\01327.clar" +
      "ifai.api.GetModelVersionMetricsRequest.F" +
      "ieldsValue\032\204\001\n\013FieldsValue\022\030\n\020confusion_" +
      "matrix\030\001 \001(\010\022\033\n\023cooccurrence_matrix\030\002 \001(" +
      "\010\022\024\n\014label_counts\030\003 \001(\010\022\026\n\016binary_metric" +
      "s\030\004 \001(\010\022\020\n\010test_set\030\005 \001(\010\"\215\001\n\036PostModelV" +
      "ersionMetricsRequest\022/\n\013user_app_id\030\001 \001(" +
      "\0132\032.clarifai.api.UserAppIDSet\022\020\n\010model_i" +
      "d\030\002 \001(\t\022\022\n\nversion_id\030\003 \001(\t\022\024\n\014max_examp" +
      "les\030\004 \001(\rBA\n\033clarifai2.internal.grpc.api" +
      "Z\003api\242\002\004CAIP\302\002\001_\312\002\021Clarifai\\Internalb\006pr" +
      "oto3"
    };
    com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
        new com.google.protobuf.Descriptors.FileDescriptor.    InternalDescriptorAssigner() {
          public com.google.protobuf.ExtensionRegistry assignDescriptors(
              com.google.protobuf.Descriptors.FileDescriptor root) {
            descriptor = root;
            return null;
          }
        };
    com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
          clarifai2.internal.grpc.api.Common.getDescriptor(),
          clarifai2.internal.grpc.api.ConceptOuterClass.getDescriptor(),
          clarifai2.internal.grpc.api.status.StatusOuterClass.getDescriptor(),
          clarifai2.internal.grpc.api.utils.Extensions.getDescriptor(),
          com.google.protobuf.TimestampProto.getDescriptor(),
        }, assigner);
    internal_static_clarifai_api_ModelVersion_descriptor =
      getDescriptor().getMessageTypes().get(0);
    internal_static_clarifai_api_ModelVersion_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_clarifai_api_ModelVersion_descriptor,
        new java.lang.String[] { "Id", "CreatedAt", "Status", "ActiveConceptCount", "Metrics", "TotalInputCount", });
    internal_static_clarifai_api_PretrainedModelConfig_descriptor =
      getDescriptor().getMessageTypes().get(1);
    internal_static_clarifai_api_PretrainedModelConfig_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_clarifai_api_PretrainedModelConfig_descriptor,
        new java.lang.String[] { "Id", "Type", });
    internal_static_clarifai_api_GetModelVersionRequest_descriptor =
      getDescriptor().getMessageTypes().get(2);
    internal_static_clarifai_api_GetModelVersionRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_clarifai_api_GetModelVersionRequest_descriptor,
        new java.lang.String[] { "UserAppId", "ModelId", "VersionId", });
    internal_static_clarifai_api_ListModelVersionsRequest_descriptor =
      getDescriptor().getMessageTypes().get(3);
    internal_static_clarifai_api_ListModelVersionsRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_clarifai_api_ListModelVersionsRequest_descriptor,
        new java.lang.String[] { "UserAppId", "ModelId", "Page", "PerPage", "ConceptIds", });
    internal_static_clarifai_api_PostModelVersionsRequest_descriptor =
      getDescriptor().getMessageTypes().get(4);
    internal_static_clarifai_api_PostModelVersionsRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_clarifai_api_PostModelVersionsRequest_descriptor,
        new java.lang.String[] { "UserAppId", "ModelId", "ModelVersions", });
    internal_static_clarifai_api_DeleteModelVersionRequest_descriptor =
      getDescriptor().getMessageTypes().get(5);
    internal_static_clarifai_api_DeleteModelVersionRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_clarifai_api_DeleteModelVersionRequest_descriptor,
        new java.lang.String[] { "UserAppId", "ModelId", "VersionId", });
    internal_static_clarifai_api_SingleModelVersionResponse_descriptor =
      getDescriptor().getMessageTypes().get(6);
    internal_static_clarifai_api_SingleModelVersionResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_clarifai_api_SingleModelVersionResponse_descriptor,
        new java.lang.String[] { "Status", "ModelVersion", });
    internal_static_clarifai_api_MultiModelVersionResponse_descriptor =
      getDescriptor().getMessageTypes().get(7);
    internal_static_clarifai_api_MultiModelVersionResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_clarifai_api_MultiModelVersionResponse_descriptor,
        new java.lang.String[] { "Status", "ModelVersions", });
    internal_static_clarifai_api_LabelCount_descriptor =
      getDescriptor().getMessageTypes().get(8);
    internal_static_clarifai_api_LabelCount_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_clarifai_api_LabelCount_descriptor,
        new java.lang.String[] { "ConceptName", "Count", });
    internal_static_clarifai_api_LabelDistribution_descriptor =
      getDescriptor().getMessageTypes().get(9);
    internal_static_clarifai_api_LabelDistribution_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_clarifai_api_LabelDistribution_descriptor,
        new java.lang.String[] { "PositiveLabelCounts", });
    internal_static_clarifai_api_CooccurrenceMatrixEntry_descriptor =
      getDescriptor().getMessageTypes().get(10);
    internal_static_clarifai_api_CooccurrenceMatrixEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_clarifai_api_CooccurrenceMatrixEntry_descriptor,
        new java.lang.String[] { "Row", "Col", "Count", });
    internal_static_clarifai_api_CooccurrenceMatrix_descriptor =
      getDescriptor().getMessageTypes().get(11);
    internal_static_clarifai_api_CooccurrenceMatrix_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_clarifai_api_CooccurrenceMatrix_descriptor,
        new java.lang.String[] { "Matrix", "ConceptIds", });
    internal_static_clarifai_api_ConfusionMatrixEntry_descriptor =
      getDescriptor().getMessageTypes().get(12);
    internal_static_clarifai_api_ConfusionMatrixEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_clarifai_api_ConfusionMatrixEntry_descriptor,
        new java.lang.String[] { "Predicted", "Actual", "Value", });
    internal_static_clarifai_api_ConfusionMatrix_descriptor =
      getDescriptor().getMessageTypes().get(13);
    internal_static_clarifai_api_ConfusionMatrix_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_clarifai_api_ConfusionMatrix_descriptor,
        new java.lang.String[] { "Matrix", "ConceptIds", });
    internal_static_clarifai_api_ROC_descriptor =
      getDescriptor().getMessageTypes().get(14);
    internal_static_clarifai_api_ROC_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_clarifai_api_ROC_descriptor,
        new java.lang.String[] { "Fpr", "Tpr", "Thresholds", });
    internal_static_clarifai_api_PrecisionRecallCurve_descriptor =
      getDescriptor().getMessageTypes().get(15);
    internal_static_clarifai_api_PrecisionRecallCurve_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_clarifai_api_PrecisionRecallCurve_descriptor,
        new java.lang.String[] { "Recall", "Precision", "Thresholds", });
    internal_static_clarifai_api_BinaryMetrics_descriptor =
      getDescriptor().getMessageTypes().get(16);
    internal_static_clarifai_api_BinaryMetrics_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_clarifai_api_BinaryMetrics_descriptor,
        new java.lang.String[] { "NumPos", "NumNeg", "NumTot", "RocAuc", "F1", "Concept", "RocCurve", "PrecisionRecallCurve", });
    internal_static_clarifai_api_EvalTestSetEntry_descriptor =
      getDescriptor().getMessageTypes().get(17);
    internal_static_clarifai_api_EvalTestSetEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_clarifai_api_EvalTestSetEntry_descriptor,
        new java.lang.String[] { "Id", "Url", "PredictedConcepts", "GroundTruthConcepts", });
    internal_static_clarifai_api_MetricsSummary_descriptor =
      getDescriptor().getMessageTypes().get(18);
    internal_static_clarifai_api_MetricsSummary_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_clarifai_api_MetricsSummary_descriptor,
        new java.lang.String[] { "Top1Accuracy", "Top5Accuracy", "MacroAvgRocAuc", "MacroStdRocAuc", "MacroAvgF1Score", "MacroStdF1Score", "MacroAvgPrecision", "MacroAvgRecall", });
    internal_static_clarifai_api_EvalMetrics_descriptor =
      getDescriptor().getMessageTypes().get(19);
    internal_static_clarifai_api_EvalMetrics_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_clarifai_api_EvalMetrics_descriptor,
        new java.lang.String[] { "Status", "Summary", "ConfusionMatrix", "CooccurrenceMatrix", "LabelCounts", "BinaryMetrics", "TestSet", });
    internal_static_clarifai_api_GetModelVersionMetricsRequest_descriptor =
      getDescriptor().getMessageTypes().get(20);
    internal_static_clarifai_api_GetModelVersionMetricsRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_clarifai_api_GetModelVersionMetricsRequest_descriptor,
        new java.lang.String[] { "UserAppId", "ModelId", "VersionId", "Fields", });
    internal_static_clarifai_api_GetModelVersionMetricsRequest_FieldsValue_descriptor =
      internal_static_clarifai_api_GetModelVersionMetricsRequest_descriptor.getNestedTypes().get(0);
    internal_static_clarifai_api_GetModelVersionMetricsRequest_FieldsValue_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_clarifai_api_GetModelVersionMetricsRequest_FieldsValue_descriptor,
        new java.lang.String[] { "ConfusionMatrix", "CooccurrenceMatrix", "LabelCounts", "BinaryMetrics", "TestSet", });
    internal_static_clarifai_api_PostModelVersionMetricsRequest_descriptor =
      getDescriptor().getMessageTypes().get(21);
    internal_static_clarifai_api_PostModelVersionMetricsRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_clarifai_api_PostModelVersionMetricsRequest_descriptor,
        new java.lang.String[] { "UserAppId", "ModelId", "VersionId", "MaxExamples", });
    com.google.protobuf.ExtensionRegistry registry =
        com.google.protobuf.ExtensionRegistry.newInstance();
    registry.add(clarifai2.internal.grpc.api.utils.Extensions.clShowIfEmpty);
    com.google.protobuf.Descriptors.FileDescriptor
        .internalUpdateFileDescriptor(descriptor, registry);
    clarifai2.internal.grpc.api.Common.getDescriptor();
    clarifai2.internal.grpc.api.ConceptOuterClass.getDescriptor();
    clarifai2.internal.grpc.api.status.StatusOuterClass.getDescriptor();
    clarifai2.internal.grpc.api.utils.Extensions.getDescriptor();
    com.google.protobuf.TimestampProto.getDescriptor();
  }

  // @@protoc_insertion_point(outer_class_scope)
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy