// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: build/bazel/remote/execution/v2/remote_execution.proto

package build.bazel.remote.execution.v2;

/**
 * <pre>
 * A response message for
 * [Capabilities.GetCapabilities][google.devtools.remoteexecution.v2.Capabilities.GetCapabilities].
 * </pre>
 *
 * Protobuf type {@code build.bazel.remote.execution.v2.ServerCapabilities}
 */
public  final class ServerCapabilities extends
    com.google.protobuf.GeneratedMessageV3 implements
    // @@protoc_insertion_point(message_implements:build.bazel.remote.execution.v2.ServerCapabilities)
    ServerCapabilitiesOrBuilder {
private static final long serialVersionUID = 0L;
  // Use ServerCapabilities.newBuilder() to construct.
  private ServerCapabilities(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
    super(builder);
  }
  private ServerCapabilities() {
  }

  @java.lang.Override
  public final com.google.protobuf.UnknownFieldSet
  getUnknownFields() {
    return this.unknownFields;
  }
  private ServerCapabilities(
      com.google.protobuf.CodedInputStream input,
      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws com.google.protobuf.InvalidProtocolBufferException {
    this();
    if (extensionRegistry == null) {
      throw new java.lang.NullPointerException();
    }
    int mutable_bitField0_ = 0;
    com.google.protobuf.UnknownFieldSet.Builder unknownFields =
        com.google.protobuf.UnknownFieldSet.newBuilder();
    try {
      boolean done = false;
      while (!done) {
        int tag = input.readTag();
        switch (tag) {
          case 0:
            done = true;
            break;
          case 10: {
            build.bazel.remote.execution.v2.CacheCapabilities.Builder subBuilder = null;
            if (cacheCapabilities_ != null) {
              subBuilder = cacheCapabilities_.toBuilder();
            }
            cacheCapabilities_ = input.readMessage(build.bazel.remote.execution.v2.CacheCapabilities.parser(), extensionRegistry);
            if (subBuilder != null) {
              subBuilder.mergeFrom(cacheCapabilities_);
              cacheCapabilities_ = subBuilder.buildPartial();
            }

            break;
          }
          case 18: {
            build.bazel.remote.execution.v2.ExecutionCapabilities.Builder subBuilder = null;
            if (executionCapabilities_ != null) {
              subBuilder = executionCapabilities_.toBuilder();
            }
            executionCapabilities_ = input.readMessage(build.bazel.remote.execution.v2.ExecutionCapabilities.parser(), extensionRegistry);
            if (subBuilder != null) {
              subBuilder.mergeFrom(executionCapabilities_);
              executionCapabilities_ = subBuilder.buildPartial();
            }

            break;
          }
          case 26: {
            build.bazel.semver.SemVer.Builder subBuilder = null;
            if (deprecatedApiVersion_ != null) {
              subBuilder = deprecatedApiVersion_.toBuilder();
            }
            deprecatedApiVersion_ = input.readMessage(build.bazel.semver.SemVer.parser(), extensionRegistry);
            if (subBuilder != null) {
              subBuilder.mergeFrom(deprecatedApiVersion_);
              deprecatedApiVersion_ = subBuilder.buildPartial();
            }

            break;
          }
          case 34: {
            build.bazel.semver.SemVer.Builder subBuilder = null;
            if (lowApiVersion_ != null) {
              subBuilder = lowApiVersion_.toBuilder();
            }
            lowApiVersion_ = input.readMessage(build.bazel.semver.SemVer.parser(), extensionRegistry);
            if (subBuilder != null) {
              subBuilder.mergeFrom(lowApiVersion_);
              lowApiVersion_ = subBuilder.buildPartial();
            }

            break;
          }
          case 42: {
            build.bazel.semver.SemVer.Builder subBuilder = null;
            if (highApiVersion_ != null) {
              subBuilder = highApiVersion_.toBuilder();
            }
            highApiVersion_ = input.readMessage(build.bazel.semver.SemVer.parser(), extensionRegistry);
            if (subBuilder != null) {
              subBuilder.mergeFrom(highApiVersion_);
              highApiVersion_ = subBuilder.buildPartial();
            }

            break;
          }
          default: {
            if (!parseUnknownFieldProto3(
                input, unknownFields, extensionRegistry, tag)) {
              done = true;
            }
            break;
          }
        }
      }
    } catch (com.google.protobuf.InvalidProtocolBufferException e) {
      throw e.setUnfinishedMessage(this);
    } catch (java.io.IOException e) {
      throw new com.google.protobuf.InvalidProtocolBufferException(
          e).setUnfinishedMessage(this);
    } finally {
      this.unknownFields = unknownFields.build();
      makeExtensionsImmutable();
    }
  }
  public static final com.google.protobuf.Descriptors.Descriptor
      getDescriptor() {
    return build.bazel.remote.execution.v2.RemoteExecutionProto.internal_static_build_bazel_remote_execution_v2_ServerCapabilities_descriptor;
  }

  @java.lang.Override
  protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internalGetFieldAccessorTable() {
    return build.bazel.remote.execution.v2.RemoteExecutionProto.internal_static_build_bazel_remote_execution_v2_ServerCapabilities_fieldAccessorTable
        .ensureFieldAccessorsInitialized(
            build.bazel.remote.execution.v2.ServerCapabilities.class, build.bazel.remote.execution.v2.ServerCapabilities.Builder.class);
  }

  public static final int CACHE_CAPABILITIES_FIELD_NUMBER = 1;
  private build.bazel.remote.execution.v2.CacheCapabilities cacheCapabilities_;
  /**
   * <pre>
   * Capabilities of the remote cache system.
   * </pre>
   *
   * <code>.build.bazel.remote.execution.v2.CacheCapabilities cache_capabilities = 1;</code>
   */
  public boolean hasCacheCapabilities() {
    return cacheCapabilities_ != null;
  }
  /**
   * <pre>
   * Capabilities of the remote cache system.
   * </pre>
   *
   * <code>.build.bazel.remote.execution.v2.CacheCapabilities cache_capabilities = 1;</code>
   */
  public build.bazel.remote.execution.v2.CacheCapabilities getCacheCapabilities() {
    return cacheCapabilities_ == null ? build.bazel.remote.execution.v2.CacheCapabilities.getDefaultInstance() : cacheCapabilities_;
  }
  /**
   * <pre>
   * Capabilities of the remote cache system.
   * </pre>
   *
   * <code>.build.bazel.remote.execution.v2.CacheCapabilities cache_capabilities = 1;</code>
   */
  public build.bazel.remote.execution.v2.CacheCapabilitiesOrBuilder getCacheCapabilitiesOrBuilder() {
    return getCacheCapabilities();
  }

  public static final int EXECUTION_CAPABILITIES_FIELD_NUMBER = 2;
  private build.bazel.remote.execution.v2.ExecutionCapabilities executionCapabilities_;
  /**
   * <pre>
   * Capabilities of the remote execution system.
   * </pre>
   *
   * <code>.build.bazel.remote.execution.v2.ExecutionCapabilities execution_capabilities = 2;</code>
   */
  public boolean hasExecutionCapabilities() {
    return executionCapabilities_ != null;
  }
  /**
   * <pre>
   * Capabilities of the remote execution system.
   * </pre>
   *
   * <code>.build.bazel.remote.execution.v2.ExecutionCapabilities execution_capabilities = 2;</code>
   */
  public build.bazel.remote.execution.v2.ExecutionCapabilities getExecutionCapabilities() {
    return executionCapabilities_ == null ? build.bazel.remote.execution.v2.ExecutionCapabilities.getDefaultInstance() : executionCapabilities_;
  }
  /**
   * <pre>
   * Capabilities of the remote execution system.
   * </pre>
   *
   * <code>.build.bazel.remote.execution.v2.ExecutionCapabilities execution_capabilities = 2;</code>
   */
  public build.bazel.remote.execution.v2.ExecutionCapabilitiesOrBuilder getExecutionCapabilitiesOrBuilder() {
    return getExecutionCapabilities();
  }

  public static final int DEPRECATED_API_VERSION_FIELD_NUMBER = 3;
  private build.bazel.semver.SemVer deprecatedApiVersion_;
  /**
   * <pre>
   * Earliest RE API version supported, including deprecated versions.
   * </pre>
   *
   * <code>.build.bazel.semver.SemVer deprecated_api_version = 3;</code>
   */
  public boolean hasDeprecatedApiVersion() {
    return deprecatedApiVersion_ != null;
  }
  /**
   * <pre>
   * Earliest RE API version supported, including deprecated versions.
   * </pre>
   *
   * <code>.build.bazel.semver.SemVer deprecated_api_version = 3;</code>
   */
  public build.bazel.semver.SemVer getDeprecatedApiVersion() {
    return deprecatedApiVersion_ == null ? build.bazel.semver.SemVer.getDefaultInstance() : deprecatedApiVersion_;
  }
  /**
   * <pre>
   * Earliest RE API version supported, including deprecated versions.
   * </pre>
   *
   * <code>.build.bazel.semver.SemVer deprecated_api_version = 3;</code>
   */
  public build.bazel.semver.SemVerOrBuilder getDeprecatedApiVersionOrBuilder() {
    return getDeprecatedApiVersion();
  }

  public static final int LOW_API_VERSION_FIELD_NUMBER = 4;
  private build.bazel.semver.SemVer lowApiVersion_;
  /**
   * <pre>
   * Earliest non-deprecated RE API version supported.
   * </pre>
   *
   * <code>.build.bazel.semver.SemVer low_api_version = 4;</code>
   */
  public boolean hasLowApiVersion() {
    return lowApiVersion_ != null;
  }
  /**
   * <pre>
   * Earliest non-deprecated RE API version supported.
   * </pre>
   *
   * <code>.build.bazel.semver.SemVer low_api_version = 4;</code>
   */
  public build.bazel.semver.SemVer getLowApiVersion() {
    return lowApiVersion_ == null ? build.bazel.semver.SemVer.getDefaultInstance() : lowApiVersion_;
  }
  /**
   * <pre>
   * Earliest non-deprecated RE API version supported.
   * </pre>
   *
   * <code>.build.bazel.semver.SemVer low_api_version = 4;</code>
   */
  public build.bazel.semver.SemVerOrBuilder getLowApiVersionOrBuilder() {
    return getLowApiVersion();
  }

  public static final int HIGH_API_VERSION_FIELD_NUMBER = 5;
  private build.bazel.semver.SemVer highApiVersion_;
  /**
   * <pre>
   * Latest RE API version supported.
   * </pre>
   *
   * <code>.build.bazel.semver.SemVer high_api_version = 5;</code>
   */
  public boolean hasHighApiVersion() {
    return highApiVersion_ != null;
  }
  /**
   * <pre>
   * Latest RE API version supported.
   * </pre>
   *
   * <code>.build.bazel.semver.SemVer high_api_version = 5;</code>
   */
  public build.bazel.semver.SemVer getHighApiVersion() {
    return highApiVersion_ == null ? build.bazel.semver.SemVer.getDefaultInstance() : highApiVersion_;
  }
  /**
   * <pre>
   * Latest RE API version supported.
   * </pre>
   *
   * <code>.build.bazel.semver.SemVer high_api_version = 5;</code>
   */
  public build.bazel.semver.SemVerOrBuilder getHighApiVersionOrBuilder() {
    return getHighApiVersion();
  }

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

    memoizedIsInitialized = 1;
    return true;
  }

  @java.lang.Override
  public void writeTo(com.google.protobuf.CodedOutputStream output)
                      throws java.io.IOException {
    if (cacheCapabilities_ != null) {
      output.writeMessage(1, getCacheCapabilities());
    }
    if (executionCapabilities_ != null) {
      output.writeMessage(2, getExecutionCapabilities());
    }
    if (deprecatedApiVersion_ != null) {
      output.writeMessage(3, getDeprecatedApiVersion());
    }
    if (lowApiVersion_ != null) {
      output.writeMessage(4, getLowApiVersion());
    }
    if (highApiVersion_ != null) {
      output.writeMessage(5, getHighApiVersion());
    }
    unknownFields.writeTo(output);
  }

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

    size = 0;
    if (cacheCapabilities_ != null) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(1, getCacheCapabilities());
    }
    if (executionCapabilities_ != null) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(2, getExecutionCapabilities());
    }
    if (deprecatedApiVersion_ != null) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(3, getDeprecatedApiVersion());
    }
    if (lowApiVersion_ != null) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(4, getLowApiVersion());
    }
    if (highApiVersion_ != null) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(5, getHighApiVersion());
    }
    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 build.bazel.remote.execution.v2.ServerCapabilities)) {
      return super.equals(obj);
    }
    build.bazel.remote.execution.v2.ServerCapabilities other = (build.bazel.remote.execution.v2.ServerCapabilities) obj;

    boolean result = true;
    result = result && (hasCacheCapabilities() == other.hasCacheCapabilities());
    if (hasCacheCapabilities()) {
      result = result && getCacheCapabilities()
          .equals(other.getCacheCapabilities());
    }
    result = result && (hasExecutionCapabilities() == other.hasExecutionCapabilities());
    if (hasExecutionCapabilities()) {
      result = result && getExecutionCapabilities()
          .equals(other.getExecutionCapabilities());
    }
    result = result && (hasDeprecatedApiVersion() == other.hasDeprecatedApiVersion());
    if (hasDeprecatedApiVersion()) {
      result = result && getDeprecatedApiVersion()
          .equals(other.getDeprecatedApiVersion());
    }
    result = result && (hasLowApiVersion() == other.hasLowApiVersion());
    if (hasLowApiVersion()) {
      result = result && getLowApiVersion()
          .equals(other.getLowApiVersion());
    }
    result = result && (hasHighApiVersion() == other.hasHighApiVersion());
    if (hasHighApiVersion()) {
      result = result && getHighApiVersion()
          .equals(other.getHighApiVersion());
    }
    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 (hasCacheCapabilities()) {
      hash = (37 * hash) + CACHE_CAPABILITIES_FIELD_NUMBER;
      hash = (53 * hash) + getCacheCapabilities().hashCode();
    }
    if (hasExecutionCapabilities()) {
      hash = (37 * hash) + EXECUTION_CAPABILITIES_FIELD_NUMBER;
      hash = (53 * hash) + getExecutionCapabilities().hashCode();
    }
    if (hasDeprecatedApiVersion()) {
      hash = (37 * hash) + DEPRECATED_API_VERSION_FIELD_NUMBER;
      hash = (53 * hash) + getDeprecatedApiVersion().hashCode();
    }
    if (hasLowApiVersion()) {
      hash = (37 * hash) + LOW_API_VERSION_FIELD_NUMBER;
      hash = (53 * hash) + getLowApiVersion().hashCode();
    }
    if (hasHighApiVersion()) {
      hash = (37 * hash) + HIGH_API_VERSION_FIELD_NUMBER;
      hash = (53 * hash) + getHighApiVersion().hashCode();
    }
    hash = (29 * hash) + unknownFields.hashCode();
    memoizedHashCode = hash;
    return hash;
  }

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

  @java.lang.Override
  public Builder newBuilderForType() { return newBuilder(); }
  public static Builder newBuilder() {
    return DEFAULT_INSTANCE.toBuilder();
  }
  public static Builder newBuilder(build.bazel.remote.execution.v2.ServerCapabilities prototype) {
    return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
  }
  @java.lang.Override
  public Builder toBuilder() {
    return this == DEFAULT_INSTANCE
        ? new Builder() : new Builder().mergeFrom(this);
  }

  @java.lang.Override
  protected Builder newBuilderForType(
      com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
    Builder builder = new Builder(parent);
    return builder;
  }
  /**
   * <pre>
   * A response message for
   * [Capabilities.GetCapabilities][google.devtools.remoteexecution.v2.Capabilities.GetCapabilities].
   * </pre>
   *
   * Protobuf type {@code build.bazel.remote.execution.v2.ServerCapabilities}
   */
  public static final class Builder extends
      com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
      // @@protoc_insertion_point(builder_implements:build.bazel.remote.execution.v2.ServerCapabilities)
      build.bazel.remote.execution.v2.ServerCapabilitiesOrBuilder {
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return build.bazel.remote.execution.v2.RemoteExecutionProto.internal_static_build_bazel_remote_execution_v2_ServerCapabilities_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return build.bazel.remote.execution.v2.RemoteExecutionProto.internal_static_build_bazel_remote_execution_v2_ServerCapabilities_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              build.bazel.remote.execution.v2.ServerCapabilities.class, build.bazel.remote.execution.v2.ServerCapabilities.Builder.class);
    }

    // Construct using build.bazel.remote.execution.v2.ServerCapabilities.newBuilder()
    private Builder() {
      maybeForceBuilderInitialization();
    }

    private Builder(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      super(parent);
      maybeForceBuilderInitialization();
    }
    private void maybeForceBuilderInitialization() {
      if (com.google.protobuf.GeneratedMessageV3
              .alwaysUseFieldBuilders) {
      }
    }
    @java.lang.Override
    public Builder clear() {
      super.clear();
      if (cacheCapabilitiesBuilder_ == null) {
        cacheCapabilities_ = null;
      } else {
        cacheCapabilities_ = null;
        cacheCapabilitiesBuilder_ = null;
      }
      if (executionCapabilitiesBuilder_ == null) {
        executionCapabilities_ = null;
      } else {
        executionCapabilities_ = null;
        executionCapabilitiesBuilder_ = null;
      }
      if (deprecatedApiVersionBuilder_ == null) {
        deprecatedApiVersion_ = null;
      } else {
        deprecatedApiVersion_ = null;
        deprecatedApiVersionBuilder_ = null;
      }
      if (lowApiVersionBuilder_ == null) {
        lowApiVersion_ = null;
      } else {
        lowApiVersion_ = null;
        lowApiVersionBuilder_ = null;
      }
      if (highApiVersionBuilder_ == null) {
        highApiVersion_ = null;
      } else {
        highApiVersion_ = null;
        highApiVersionBuilder_ = null;
      }
      return this;
    }

    @java.lang.Override
    public com.google.protobuf.Descriptors.Descriptor
        getDescriptorForType() {
      return build.bazel.remote.execution.v2.RemoteExecutionProto.internal_static_build_bazel_remote_execution_v2_ServerCapabilities_descriptor;
    }

    @java.lang.Override
    public build.bazel.remote.execution.v2.ServerCapabilities getDefaultInstanceForType() {
      return build.bazel.remote.execution.v2.ServerCapabilities.getDefaultInstance();
    }

    @java.lang.Override
    public build.bazel.remote.execution.v2.ServerCapabilities build() {
      build.bazel.remote.execution.v2.ServerCapabilities result = buildPartial();
      if (!result.isInitialized()) {
        throw newUninitializedMessageException(result);
      }
      return result;
    }

    @java.lang.Override
    public build.bazel.remote.execution.v2.ServerCapabilities buildPartial() {
      build.bazel.remote.execution.v2.ServerCapabilities result = new build.bazel.remote.execution.v2.ServerCapabilities(this);
      if (cacheCapabilitiesBuilder_ == null) {
        result.cacheCapabilities_ = cacheCapabilities_;
      } else {
        result.cacheCapabilities_ = cacheCapabilitiesBuilder_.build();
      }
      if (executionCapabilitiesBuilder_ == null) {
        result.executionCapabilities_ = executionCapabilities_;
      } else {
        result.executionCapabilities_ = executionCapabilitiesBuilder_.build();
      }
      if (deprecatedApiVersionBuilder_ == null) {
        result.deprecatedApiVersion_ = deprecatedApiVersion_;
      } else {
        result.deprecatedApiVersion_ = deprecatedApiVersionBuilder_.build();
      }
      if (lowApiVersionBuilder_ == null) {
        result.lowApiVersion_ = lowApiVersion_;
      } else {
        result.lowApiVersion_ = lowApiVersionBuilder_.build();
      }
      if (highApiVersionBuilder_ == null) {
        result.highApiVersion_ = highApiVersion_;
      } else {
        result.highApiVersion_ = highApiVersionBuilder_.build();
      }
      onBuilt();
      return result;
    }

    @java.lang.Override
    public Builder clone() {
      return (Builder) super.clone();
    }
    @java.lang.Override
    public Builder setField(
        com.google.protobuf.Descriptors.FieldDescriptor field,
        java.lang.Object value) {
      return (Builder) super.setField(field, value);
    }
    @java.lang.Override
    public Builder clearField(
        com.google.protobuf.Descriptors.FieldDescriptor field) {
      return (Builder) super.clearField(field);
    }
    @java.lang.Override
    public Builder clearOneof(
        com.google.protobuf.Descriptors.OneofDescriptor oneof) {
      return (Builder) super.clearOneof(oneof);
    }
    @java.lang.Override
    public Builder setRepeatedField(
        com.google.protobuf.Descriptors.FieldDescriptor field,
        int index, java.lang.Object value) {
      return (Builder) super.setRepeatedField(field, index, value);
    }
    @java.lang.Override
    public Builder addRepeatedField(
        com.google.protobuf.Descriptors.FieldDescriptor field,
        java.lang.Object value) {
      return (Builder) super.addRepeatedField(field, value);
    }
    @java.lang.Override
    public Builder mergeFrom(com.google.protobuf.Message other) {
      if (other instanceof build.bazel.remote.execution.v2.ServerCapabilities) {
        return mergeFrom((build.bazel.remote.execution.v2.ServerCapabilities)other);
      } else {
        super.mergeFrom(other);
        return this;
      }
    }

    public Builder mergeFrom(build.bazel.remote.execution.v2.ServerCapabilities other) {
      if (other == build.bazel.remote.execution.v2.ServerCapabilities.getDefaultInstance()) return this;
      if (other.hasCacheCapabilities()) {
        mergeCacheCapabilities(other.getCacheCapabilities());
      }
      if (other.hasExecutionCapabilities()) {
        mergeExecutionCapabilities(other.getExecutionCapabilities());
      }
      if (other.hasDeprecatedApiVersion()) {
        mergeDeprecatedApiVersion(other.getDeprecatedApiVersion());
      }
      if (other.hasLowApiVersion()) {
        mergeLowApiVersion(other.getLowApiVersion());
      }
      if (other.hasHighApiVersion()) {
        mergeHighApiVersion(other.getHighApiVersion());
      }
      this.mergeUnknownFields(other.unknownFields);
      onChanged();
      return this;
    }

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

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

    private build.bazel.remote.execution.v2.CacheCapabilities cacheCapabilities_ = null;
    private com.google.protobuf.SingleFieldBuilderV3<
        build.bazel.remote.execution.v2.CacheCapabilities, build.bazel.remote.execution.v2.CacheCapabilities.Builder, build.bazel.remote.execution.v2.CacheCapabilitiesOrBuilder> cacheCapabilitiesBuilder_;
    /**
     * <pre>
     * Capabilities of the remote cache system.
     * </pre>
     *
     * <code>.build.bazel.remote.execution.v2.CacheCapabilities cache_capabilities = 1;</code>
     */
    public boolean hasCacheCapabilities() {
      return cacheCapabilitiesBuilder_ != null || cacheCapabilities_ != null;
    }
    /**
     * <pre>
     * Capabilities of the remote cache system.
     * </pre>
     *
     * <code>.build.bazel.remote.execution.v2.CacheCapabilities cache_capabilities = 1;</code>
     */
    public build.bazel.remote.execution.v2.CacheCapabilities getCacheCapabilities() {
      if (cacheCapabilitiesBuilder_ == null) {
        return cacheCapabilities_ == null ? build.bazel.remote.execution.v2.CacheCapabilities.getDefaultInstance() : cacheCapabilities_;
      } else {
        return cacheCapabilitiesBuilder_.getMessage();
      }
    }
    /**
     * <pre>
     * Capabilities of the remote cache system.
     * </pre>
     *
     * <code>.build.bazel.remote.execution.v2.CacheCapabilities cache_capabilities = 1;</code>
     */
    public Builder setCacheCapabilities(build.bazel.remote.execution.v2.CacheCapabilities value) {
      if (cacheCapabilitiesBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        cacheCapabilities_ = value;
        onChanged();
      } else {
        cacheCapabilitiesBuilder_.setMessage(value);
      }

      return this;
    }
    /**
     * <pre>
     * Capabilities of the remote cache system.
     * </pre>
     *
     * <code>.build.bazel.remote.execution.v2.CacheCapabilities cache_capabilities = 1;</code>
     */
    public Builder setCacheCapabilities(
        build.bazel.remote.execution.v2.CacheCapabilities.Builder builderForValue) {
      if (cacheCapabilitiesBuilder_ == null) {
        cacheCapabilities_ = builderForValue.build();
        onChanged();
      } else {
        cacheCapabilitiesBuilder_.setMessage(builderForValue.build());
      }

      return this;
    }
    /**
     * <pre>
     * Capabilities of the remote cache system.
     * </pre>
     *
     * <code>.build.bazel.remote.execution.v2.CacheCapabilities cache_capabilities = 1;</code>
     */
    public Builder mergeCacheCapabilities(build.bazel.remote.execution.v2.CacheCapabilities value) {
      if (cacheCapabilitiesBuilder_ == null) {
        if (cacheCapabilities_ != null) {
          cacheCapabilities_ =
            build.bazel.remote.execution.v2.CacheCapabilities.newBuilder(cacheCapabilities_).mergeFrom(value).buildPartial();
        } else {
          cacheCapabilities_ = value;
        }
        onChanged();
      } else {
        cacheCapabilitiesBuilder_.mergeFrom(value);
      }

      return this;
    }
    /**
     * <pre>
     * Capabilities of the remote cache system.
     * </pre>
     *
     * <code>.build.bazel.remote.execution.v2.CacheCapabilities cache_capabilities = 1;</code>
     */
    public Builder clearCacheCapabilities() {
      if (cacheCapabilitiesBuilder_ == null) {
        cacheCapabilities_ = null;
        onChanged();
      } else {
        cacheCapabilities_ = null;
        cacheCapabilitiesBuilder_ = null;
      }

      return this;
    }
    /**
     * <pre>
     * Capabilities of the remote cache system.
     * </pre>
     *
     * <code>.build.bazel.remote.execution.v2.CacheCapabilities cache_capabilities = 1;</code>
     */
    public build.bazel.remote.execution.v2.CacheCapabilities.Builder getCacheCapabilitiesBuilder() {
      
      onChanged();
      return getCacheCapabilitiesFieldBuilder().getBuilder();
    }
    /**
     * <pre>
     * Capabilities of the remote cache system.
     * </pre>
     *
     * <code>.build.bazel.remote.execution.v2.CacheCapabilities cache_capabilities = 1;</code>
     */
    public build.bazel.remote.execution.v2.CacheCapabilitiesOrBuilder getCacheCapabilitiesOrBuilder() {
      if (cacheCapabilitiesBuilder_ != null) {
        return cacheCapabilitiesBuilder_.getMessageOrBuilder();
      } else {
        return cacheCapabilities_ == null ?
            build.bazel.remote.execution.v2.CacheCapabilities.getDefaultInstance() : cacheCapabilities_;
      }
    }
    /**
     * <pre>
     * Capabilities of the remote cache system.
     * </pre>
     *
     * <code>.build.bazel.remote.execution.v2.CacheCapabilities cache_capabilities = 1;</code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
        build.bazel.remote.execution.v2.CacheCapabilities, build.bazel.remote.execution.v2.CacheCapabilities.Builder, build.bazel.remote.execution.v2.CacheCapabilitiesOrBuilder> 
        getCacheCapabilitiesFieldBuilder() {
      if (cacheCapabilitiesBuilder_ == null) {
        cacheCapabilitiesBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
            build.bazel.remote.execution.v2.CacheCapabilities, build.bazel.remote.execution.v2.CacheCapabilities.Builder, build.bazel.remote.execution.v2.CacheCapabilitiesOrBuilder>(
                getCacheCapabilities(),
                getParentForChildren(),
                isClean());
        cacheCapabilities_ = null;
      }
      return cacheCapabilitiesBuilder_;
    }

    private build.bazel.remote.execution.v2.ExecutionCapabilities executionCapabilities_ = null;
    private com.google.protobuf.SingleFieldBuilderV3<
        build.bazel.remote.execution.v2.ExecutionCapabilities, build.bazel.remote.execution.v2.ExecutionCapabilities.Builder, build.bazel.remote.execution.v2.ExecutionCapabilitiesOrBuilder> executionCapabilitiesBuilder_;
    /**
     * <pre>
     * Capabilities of the remote execution system.
     * </pre>
     *
     * <code>.build.bazel.remote.execution.v2.ExecutionCapabilities execution_capabilities = 2;</code>
     */
    public boolean hasExecutionCapabilities() {
      return executionCapabilitiesBuilder_ != null || executionCapabilities_ != null;
    }
    /**
     * <pre>
     * Capabilities of the remote execution system.
     * </pre>
     *
     * <code>.build.bazel.remote.execution.v2.ExecutionCapabilities execution_capabilities = 2;</code>
     */
    public build.bazel.remote.execution.v2.ExecutionCapabilities getExecutionCapabilities() {
      if (executionCapabilitiesBuilder_ == null) {
        return executionCapabilities_ == null ? build.bazel.remote.execution.v2.ExecutionCapabilities.getDefaultInstance() : executionCapabilities_;
      } else {
        return executionCapabilitiesBuilder_.getMessage();
      }
    }
    /**
     * <pre>
     * Capabilities of the remote execution system.
     * </pre>
     *
     * <code>.build.bazel.remote.execution.v2.ExecutionCapabilities execution_capabilities = 2;</code>
     */
    public Builder setExecutionCapabilities(build.bazel.remote.execution.v2.ExecutionCapabilities value) {
      if (executionCapabilitiesBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        executionCapabilities_ = value;
        onChanged();
      } else {
        executionCapabilitiesBuilder_.setMessage(value);
      }

      return this;
    }
    /**
     * <pre>
     * Capabilities of the remote execution system.
     * </pre>
     *
     * <code>.build.bazel.remote.execution.v2.ExecutionCapabilities execution_capabilities = 2;</code>
     */
    public Builder setExecutionCapabilities(
        build.bazel.remote.execution.v2.ExecutionCapabilities.Builder builderForValue) {
      if (executionCapabilitiesBuilder_ == null) {
        executionCapabilities_ = builderForValue.build();
        onChanged();
      } else {
        executionCapabilitiesBuilder_.setMessage(builderForValue.build());
      }

      return this;
    }
    /**
     * <pre>
     * Capabilities of the remote execution system.
     * </pre>
     *
     * <code>.build.bazel.remote.execution.v2.ExecutionCapabilities execution_capabilities = 2;</code>
     */
    public Builder mergeExecutionCapabilities(build.bazel.remote.execution.v2.ExecutionCapabilities value) {
      if (executionCapabilitiesBuilder_ == null) {
        if (executionCapabilities_ != null) {
          executionCapabilities_ =
            build.bazel.remote.execution.v2.ExecutionCapabilities.newBuilder(executionCapabilities_).mergeFrom(value).buildPartial();
        } else {
          executionCapabilities_ = value;
        }
        onChanged();
      } else {
        executionCapabilitiesBuilder_.mergeFrom(value);
      }

      return this;
    }
    /**
     * <pre>
     * Capabilities of the remote execution system.
     * </pre>
     *
     * <code>.build.bazel.remote.execution.v2.ExecutionCapabilities execution_capabilities = 2;</code>
     */
    public Builder clearExecutionCapabilities() {
      if (executionCapabilitiesBuilder_ == null) {
        executionCapabilities_ = null;
        onChanged();
      } else {
        executionCapabilities_ = null;
        executionCapabilitiesBuilder_ = null;
      }

      return this;
    }
    /**
     * <pre>
     * Capabilities of the remote execution system.
     * </pre>
     *
     * <code>.build.bazel.remote.execution.v2.ExecutionCapabilities execution_capabilities = 2;</code>
     */
    public build.bazel.remote.execution.v2.ExecutionCapabilities.Builder getExecutionCapabilitiesBuilder() {
      
      onChanged();
      return getExecutionCapabilitiesFieldBuilder().getBuilder();
    }
    /**
     * <pre>
     * Capabilities of the remote execution system.
     * </pre>
     *
     * <code>.build.bazel.remote.execution.v2.ExecutionCapabilities execution_capabilities = 2;</code>
     */
    public build.bazel.remote.execution.v2.ExecutionCapabilitiesOrBuilder getExecutionCapabilitiesOrBuilder() {
      if (executionCapabilitiesBuilder_ != null) {
        return executionCapabilitiesBuilder_.getMessageOrBuilder();
      } else {
        return executionCapabilities_ == null ?
            build.bazel.remote.execution.v2.ExecutionCapabilities.getDefaultInstance() : executionCapabilities_;
      }
    }
    /**
     * <pre>
     * Capabilities of the remote execution system.
     * </pre>
     *
     * <code>.build.bazel.remote.execution.v2.ExecutionCapabilities execution_capabilities = 2;</code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
        build.bazel.remote.execution.v2.ExecutionCapabilities, build.bazel.remote.execution.v2.ExecutionCapabilities.Builder, build.bazel.remote.execution.v2.ExecutionCapabilitiesOrBuilder> 
        getExecutionCapabilitiesFieldBuilder() {
      if (executionCapabilitiesBuilder_ == null) {
        executionCapabilitiesBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
            build.bazel.remote.execution.v2.ExecutionCapabilities, build.bazel.remote.execution.v2.ExecutionCapabilities.Builder, build.bazel.remote.execution.v2.ExecutionCapabilitiesOrBuilder>(
                getExecutionCapabilities(),
                getParentForChildren(),
                isClean());
        executionCapabilities_ = null;
      }
      return executionCapabilitiesBuilder_;
    }

    private build.bazel.semver.SemVer deprecatedApiVersion_ = null;
    private com.google.protobuf.SingleFieldBuilderV3<
        build.bazel.semver.SemVer, build.bazel.semver.SemVer.Builder, build.bazel.semver.SemVerOrBuilder> deprecatedApiVersionBuilder_;
    /**
     * <pre>
     * Earliest RE API version supported, including deprecated versions.
     * </pre>
     *
     * <code>.build.bazel.semver.SemVer deprecated_api_version = 3;</code>
     */
    public boolean hasDeprecatedApiVersion() {
      return deprecatedApiVersionBuilder_ != null || deprecatedApiVersion_ != null;
    }
    /**
     * <pre>
     * Earliest RE API version supported, including deprecated versions.
     * </pre>
     *
     * <code>.build.bazel.semver.SemVer deprecated_api_version = 3;</code>
     */
    public build.bazel.semver.SemVer getDeprecatedApiVersion() {
      if (deprecatedApiVersionBuilder_ == null) {
        return deprecatedApiVersion_ == null ? build.bazel.semver.SemVer.getDefaultInstance() : deprecatedApiVersion_;
      } else {
        return deprecatedApiVersionBuilder_.getMessage();
      }
    }
    /**
     * <pre>
     * Earliest RE API version supported, including deprecated versions.
     * </pre>
     *
     * <code>.build.bazel.semver.SemVer deprecated_api_version = 3;</code>
     */
    public Builder setDeprecatedApiVersion(build.bazel.semver.SemVer value) {
      if (deprecatedApiVersionBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        deprecatedApiVersion_ = value;
        onChanged();
      } else {
        deprecatedApiVersionBuilder_.setMessage(value);
      }

      return this;
    }
    /**
     * <pre>
     * Earliest RE API version supported, including deprecated versions.
     * </pre>
     *
     * <code>.build.bazel.semver.SemVer deprecated_api_version = 3;</code>
     */
    public Builder setDeprecatedApiVersion(
        build.bazel.semver.SemVer.Builder builderForValue) {
      if (deprecatedApiVersionBuilder_ == null) {
        deprecatedApiVersion_ = builderForValue.build();
        onChanged();
      } else {
        deprecatedApiVersionBuilder_.setMessage(builderForValue.build());
      }

      return this;
    }
    /**
     * <pre>
     * Earliest RE API version supported, including deprecated versions.
     * </pre>
     *
     * <code>.build.bazel.semver.SemVer deprecated_api_version = 3;</code>
     */
    public Builder mergeDeprecatedApiVersion(build.bazel.semver.SemVer value) {
      if (deprecatedApiVersionBuilder_ == null) {
        if (deprecatedApiVersion_ != null) {
          deprecatedApiVersion_ =
            build.bazel.semver.SemVer.newBuilder(deprecatedApiVersion_).mergeFrom(value).buildPartial();
        } else {
          deprecatedApiVersion_ = value;
        }
        onChanged();
      } else {
        deprecatedApiVersionBuilder_.mergeFrom(value);
      }

      return this;
    }
    /**
     * <pre>
     * Earliest RE API version supported, including deprecated versions.
     * </pre>
     *
     * <code>.build.bazel.semver.SemVer deprecated_api_version = 3;</code>
     */
    public Builder clearDeprecatedApiVersion() {
      if (deprecatedApiVersionBuilder_ == null) {
        deprecatedApiVersion_ = null;
        onChanged();
      } else {
        deprecatedApiVersion_ = null;
        deprecatedApiVersionBuilder_ = null;
      }

      return this;
    }
    /**
     * <pre>
     * Earliest RE API version supported, including deprecated versions.
     * </pre>
     *
     * <code>.build.bazel.semver.SemVer deprecated_api_version = 3;</code>
     */
    public build.bazel.semver.SemVer.Builder getDeprecatedApiVersionBuilder() {
      
      onChanged();
      return getDeprecatedApiVersionFieldBuilder().getBuilder();
    }
    /**
     * <pre>
     * Earliest RE API version supported, including deprecated versions.
     * </pre>
     *
     * <code>.build.bazel.semver.SemVer deprecated_api_version = 3;</code>
     */
    public build.bazel.semver.SemVerOrBuilder getDeprecatedApiVersionOrBuilder() {
      if (deprecatedApiVersionBuilder_ != null) {
        return deprecatedApiVersionBuilder_.getMessageOrBuilder();
      } else {
        return deprecatedApiVersion_ == null ?
            build.bazel.semver.SemVer.getDefaultInstance() : deprecatedApiVersion_;
      }
    }
    /**
     * <pre>
     * Earliest RE API version supported, including deprecated versions.
     * </pre>
     *
     * <code>.build.bazel.semver.SemVer deprecated_api_version = 3;</code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
        build.bazel.semver.SemVer, build.bazel.semver.SemVer.Builder, build.bazel.semver.SemVerOrBuilder> 
        getDeprecatedApiVersionFieldBuilder() {
      if (deprecatedApiVersionBuilder_ == null) {
        deprecatedApiVersionBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
            build.bazel.semver.SemVer, build.bazel.semver.SemVer.Builder, build.bazel.semver.SemVerOrBuilder>(
                getDeprecatedApiVersion(),
                getParentForChildren(),
                isClean());
        deprecatedApiVersion_ = null;
      }
      return deprecatedApiVersionBuilder_;
    }

    private build.bazel.semver.SemVer lowApiVersion_ = null;
    private com.google.protobuf.SingleFieldBuilderV3<
        build.bazel.semver.SemVer, build.bazel.semver.SemVer.Builder, build.bazel.semver.SemVerOrBuilder> lowApiVersionBuilder_;
    /**
     * <pre>
     * Earliest non-deprecated RE API version supported.
     * </pre>
     *
     * <code>.build.bazel.semver.SemVer low_api_version = 4;</code>
     */
    public boolean hasLowApiVersion() {
      return lowApiVersionBuilder_ != null || lowApiVersion_ != null;
    }
    /**
     * <pre>
     * Earliest non-deprecated RE API version supported.
     * </pre>
     *
     * <code>.build.bazel.semver.SemVer low_api_version = 4;</code>
     */
    public build.bazel.semver.SemVer getLowApiVersion() {
      if (lowApiVersionBuilder_ == null) {
        return lowApiVersion_ == null ? build.bazel.semver.SemVer.getDefaultInstance() : lowApiVersion_;
      } else {
        return lowApiVersionBuilder_.getMessage();
      }
    }
    /**
     * <pre>
     * Earliest non-deprecated RE API version supported.
     * </pre>
     *
     * <code>.build.bazel.semver.SemVer low_api_version = 4;</code>
     */
    public Builder setLowApiVersion(build.bazel.semver.SemVer value) {
      if (lowApiVersionBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        lowApiVersion_ = value;
        onChanged();
      } else {
        lowApiVersionBuilder_.setMessage(value);
      }

      return this;
    }
    /**
     * <pre>
     * Earliest non-deprecated RE API version supported.
     * </pre>
     *
     * <code>.build.bazel.semver.SemVer low_api_version = 4;</code>
     */
    public Builder setLowApiVersion(
        build.bazel.semver.SemVer.Builder builderForValue) {
      if (lowApiVersionBuilder_ == null) {
        lowApiVersion_ = builderForValue.build();
        onChanged();
      } else {
        lowApiVersionBuilder_.setMessage(builderForValue.build());
      }

      return this;
    }
    /**
     * <pre>
     * Earliest non-deprecated RE API version supported.
     * </pre>
     *
     * <code>.build.bazel.semver.SemVer low_api_version = 4;</code>
     */
    public Builder mergeLowApiVersion(build.bazel.semver.SemVer value) {
      if (lowApiVersionBuilder_ == null) {
        if (lowApiVersion_ != null) {
          lowApiVersion_ =
            build.bazel.semver.SemVer.newBuilder(lowApiVersion_).mergeFrom(value).buildPartial();
        } else {
          lowApiVersion_ = value;
        }
        onChanged();
      } else {
        lowApiVersionBuilder_.mergeFrom(value);
      }

      return this;
    }
    /**
     * <pre>
     * Earliest non-deprecated RE API version supported.
     * </pre>
     *
     * <code>.build.bazel.semver.SemVer low_api_version = 4;</code>
     */
    public Builder clearLowApiVersion() {
      if (lowApiVersionBuilder_ == null) {
        lowApiVersion_ = null;
        onChanged();
      } else {
        lowApiVersion_ = null;
        lowApiVersionBuilder_ = null;
      }

      return this;
    }
    /**
     * <pre>
     * Earliest non-deprecated RE API version supported.
     * </pre>
     *
     * <code>.build.bazel.semver.SemVer low_api_version = 4;</code>
     */
    public build.bazel.semver.SemVer.Builder getLowApiVersionBuilder() {
      
      onChanged();
      return getLowApiVersionFieldBuilder().getBuilder();
    }
    /**
     * <pre>
     * Earliest non-deprecated RE API version supported.
     * </pre>
     *
     * <code>.build.bazel.semver.SemVer low_api_version = 4;</code>
     */
    public build.bazel.semver.SemVerOrBuilder getLowApiVersionOrBuilder() {
      if (lowApiVersionBuilder_ != null) {
        return lowApiVersionBuilder_.getMessageOrBuilder();
      } else {
        return lowApiVersion_ == null ?
            build.bazel.semver.SemVer.getDefaultInstance() : lowApiVersion_;
      }
    }
    /**
     * <pre>
     * Earliest non-deprecated RE API version supported.
     * </pre>
     *
     * <code>.build.bazel.semver.SemVer low_api_version = 4;</code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
        build.bazel.semver.SemVer, build.bazel.semver.SemVer.Builder, build.bazel.semver.SemVerOrBuilder> 
        getLowApiVersionFieldBuilder() {
      if (lowApiVersionBuilder_ == null) {
        lowApiVersionBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
            build.bazel.semver.SemVer, build.bazel.semver.SemVer.Builder, build.bazel.semver.SemVerOrBuilder>(
                getLowApiVersion(),
                getParentForChildren(),
                isClean());
        lowApiVersion_ = null;
      }
      return lowApiVersionBuilder_;
    }

    private build.bazel.semver.SemVer highApiVersion_ = null;
    private com.google.protobuf.SingleFieldBuilderV3<
        build.bazel.semver.SemVer, build.bazel.semver.SemVer.Builder, build.bazel.semver.SemVerOrBuilder> highApiVersionBuilder_;
    /**
     * <pre>
     * Latest RE API version supported.
     * </pre>
     *
     * <code>.build.bazel.semver.SemVer high_api_version = 5;</code>
     */
    public boolean hasHighApiVersion() {
      return highApiVersionBuilder_ != null || highApiVersion_ != null;
    }
    /**
     * <pre>
     * Latest RE API version supported.
     * </pre>
     *
     * <code>.build.bazel.semver.SemVer high_api_version = 5;</code>
     */
    public build.bazel.semver.SemVer getHighApiVersion() {
      if (highApiVersionBuilder_ == null) {
        return highApiVersion_ == null ? build.bazel.semver.SemVer.getDefaultInstance() : highApiVersion_;
      } else {
        return highApiVersionBuilder_.getMessage();
      }
    }
    /**
     * <pre>
     * Latest RE API version supported.
     * </pre>
     *
     * <code>.build.bazel.semver.SemVer high_api_version = 5;</code>
     */
    public Builder setHighApiVersion(build.bazel.semver.SemVer value) {
      if (highApiVersionBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        highApiVersion_ = value;
        onChanged();
      } else {
        highApiVersionBuilder_.setMessage(value);
      }

      return this;
    }
    /**
     * <pre>
     * Latest RE API version supported.
     * </pre>
     *
     * <code>.build.bazel.semver.SemVer high_api_version = 5;</code>
     */
    public Builder setHighApiVersion(
        build.bazel.semver.SemVer.Builder builderForValue) {
      if (highApiVersionBuilder_ == null) {
        highApiVersion_ = builderForValue.build();
        onChanged();
      } else {
        highApiVersionBuilder_.setMessage(builderForValue.build());
      }

      return this;
    }
    /**
     * <pre>
     * Latest RE API version supported.
     * </pre>
     *
     * <code>.build.bazel.semver.SemVer high_api_version = 5;</code>
     */
    public Builder mergeHighApiVersion(build.bazel.semver.SemVer value) {
      if (highApiVersionBuilder_ == null) {
        if (highApiVersion_ != null) {
          highApiVersion_ =
            build.bazel.semver.SemVer.newBuilder(highApiVersion_).mergeFrom(value).buildPartial();
        } else {
          highApiVersion_ = value;
        }
        onChanged();
      } else {
        highApiVersionBuilder_.mergeFrom(value);
      }

      return this;
    }
    /**
     * <pre>
     * Latest RE API version supported.
     * </pre>
     *
     * <code>.build.bazel.semver.SemVer high_api_version = 5;</code>
     */
    public Builder clearHighApiVersion() {
      if (highApiVersionBuilder_ == null) {
        highApiVersion_ = null;
        onChanged();
      } else {
        highApiVersion_ = null;
        highApiVersionBuilder_ = null;
      }

      return this;
    }
    /**
     * <pre>
     * Latest RE API version supported.
     * </pre>
     *
     * <code>.build.bazel.semver.SemVer high_api_version = 5;</code>
     */
    public build.bazel.semver.SemVer.Builder getHighApiVersionBuilder() {
      
      onChanged();
      return getHighApiVersionFieldBuilder().getBuilder();
    }
    /**
     * <pre>
     * Latest RE API version supported.
     * </pre>
     *
     * <code>.build.bazel.semver.SemVer high_api_version = 5;</code>
     */
    public build.bazel.semver.SemVerOrBuilder getHighApiVersionOrBuilder() {
      if (highApiVersionBuilder_ != null) {
        return highApiVersionBuilder_.getMessageOrBuilder();
      } else {
        return highApiVersion_ == null ?
            build.bazel.semver.SemVer.getDefaultInstance() : highApiVersion_;
      }
    }
    /**
     * <pre>
     * Latest RE API version supported.
     * </pre>
     *
     * <code>.build.bazel.semver.SemVer high_api_version = 5;</code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
        build.bazel.semver.SemVer, build.bazel.semver.SemVer.Builder, build.bazel.semver.SemVerOrBuilder> 
        getHighApiVersionFieldBuilder() {
      if (highApiVersionBuilder_ == null) {
        highApiVersionBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
            build.bazel.semver.SemVer, build.bazel.semver.SemVer.Builder, build.bazel.semver.SemVerOrBuilder>(
                getHighApiVersion(),
                getParentForChildren(),
                isClean());
        highApiVersion_ = null;
      }
      return highApiVersionBuilder_;
    }
    @java.lang.Override
    public final Builder setUnknownFields(
        final com.google.protobuf.UnknownFieldSet unknownFields) {
      return super.setUnknownFieldsProto3(unknownFields);
    }

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


    // @@protoc_insertion_point(builder_scope:build.bazel.remote.execution.v2.ServerCapabilities)
  }

  // @@protoc_insertion_point(class_scope:build.bazel.remote.execution.v2.ServerCapabilities)
  private static final build.bazel.remote.execution.v2.ServerCapabilities DEFAULT_INSTANCE;
  static {
    DEFAULT_INSTANCE = new build.bazel.remote.execution.v2.ServerCapabilities();
  }

  public static build.bazel.remote.execution.v2.ServerCapabilities getDefaultInstance() {
    return DEFAULT_INSTANCE;
  }

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

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

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

  @java.lang.Override
  public build.bazel.remote.execution.v2.ServerCapabilities getDefaultInstanceForType() {
    return DEFAULT_INSTANCE;
  }

}

