// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: tensorflow/compiler/xla/xla.proto

package xla;

public final class Xla {
  private Xla() {}
  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 HloReducePrecisionOptionsOrBuilder extends
      // @@protoc_insertion_point(interface_extends:xla.HloReducePrecisionOptions)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.xla.HloReducePrecisionOptions.Location location = 1;</code>
     */
    int getLocationValue();
    /**
     * <code>.xla.HloReducePrecisionOptions.Location location = 1;</code>
     */
    xla.Xla.HloReducePrecisionOptions.Location getLocation();

    /**
     * <pre>
     * Exponent and mantissa bit counts for the reduced precision.
     * </pre>
     *
     * <code>uint32 exponent_bits = 2;</code>
     */
    int getExponentBits();

    /**
     * <code>uint32 mantissa_bits = 3;</code>
     */
    int getMantissaBits();

    /**
     * <pre>
     * Operations matching these opcodes should be suffixed with reduce-precision
     * operations.
     * </pre>
     *
     * <code>repeated uint32 opcodes_to_suffix = 4;</code>
     */
    java.util.List<java.lang.Integer> getOpcodesToSuffixList();
    /**
     * <pre>
     * Operations matching these opcodes should be suffixed with reduce-precision
     * operations.
     * </pre>
     *
     * <code>repeated uint32 opcodes_to_suffix = 4;</code>
     */
    int getOpcodesToSuffixCount();
    /**
     * <pre>
     * Operations matching these opcodes should be suffixed with reduce-precision
     * operations.
     * </pre>
     *
     * <code>repeated uint32 opcodes_to_suffix = 4;</code>
     */
    int getOpcodesToSuffix(int index);

    /**
     * <pre>
     * Operations with names containing these substrings should be suffixed with
     * reduce-precision operations.
     * </pre>
     *
     * <code>repeated string opname_substrings_to_suffix = 5;</code>
     */
    java.util.List<java.lang.String>
        getOpnameSubstringsToSuffixList();
    /**
     * <pre>
     * Operations with names containing these substrings should be suffixed with
     * reduce-precision operations.
     * </pre>
     *
     * <code>repeated string opname_substrings_to_suffix = 5;</code>
     */
    int getOpnameSubstringsToSuffixCount();
    /**
     * <pre>
     * Operations with names containing these substrings should be suffixed with
     * reduce-precision operations.
     * </pre>
     *
     * <code>repeated string opname_substrings_to_suffix = 5;</code>
     */
    java.lang.String getOpnameSubstringsToSuffix(int index);
    /**
     * <pre>
     * Operations with names containing these substrings should be suffixed with
     * reduce-precision operations.
     * </pre>
     *
     * <code>repeated string opname_substrings_to_suffix = 5;</code>
     */
    com.google.protobuf.ByteString
        getOpnameSubstringsToSuffixBytes(int index);
  }
  /**
   * <pre>
   * Options for the HLO insert-reduce-precision-operations pass.
   * </pre>
   *
   * Protobuf type {@code xla.HloReducePrecisionOptions}
   */
  public  static final class HloReducePrecisionOptions extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:xla.HloReducePrecisionOptions)
      HloReducePrecisionOptionsOrBuilder {
    // Use HloReducePrecisionOptions.newBuilder() to construct.
    private HloReducePrecisionOptions(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private HloReducePrecisionOptions() {
      location_ = 0;
      exponentBits_ = 0;
      mantissaBits_ = 0;
      opcodesToSuffix_ = java.util.Collections.emptyList();
      opnameSubstringsToSuffix_ = com.google.protobuf.LazyStringArrayList.EMPTY;
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private HloReducePrecisionOptions(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 8: {
              int rawValue = input.readEnum();

              location_ = rawValue;
              break;
            }
            case 16: {

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

              mantissaBits_ = input.readUInt32();
              break;
            }
            case 32: {
              if (!((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
                opcodesToSuffix_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00000008;
              }
              opcodesToSuffix_.add(input.readUInt32());
              break;
            }
            case 34: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00000008) == 0x00000008) && input.getBytesUntilLimit() > 0) {
                opcodesToSuffix_ = new java.util.ArrayList<java.lang.Integer>();
                mutable_bitField0_ |= 0x00000008;
              }
              while (input.getBytesUntilLimit() > 0) {
                opcodesToSuffix_.add(input.readUInt32());
              }
              input.popLimit(limit);
              break;
            }
            case 42: {
              java.lang.String s = input.readStringRequireUtf8();
              if (!((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
                opnameSubstringsToSuffix_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000010;
              }
              opnameSubstringsToSuffix_.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_ & 0x00000008) == 0x00000008)) {
          opcodesToSuffix_ = java.util.Collections.unmodifiableList(opcodesToSuffix_);
        }
        if (((mutable_bitField0_ & 0x00000010) == 0x00000010)) {
          opnameSubstringsToSuffix_ = opnameSubstringsToSuffix_.getUnmodifiableView();
        }
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return xla.Xla.internal_static_xla_HloReducePrecisionOptions_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return xla.Xla.internal_static_xla_HloReducePrecisionOptions_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              xla.Xla.HloReducePrecisionOptions.class, xla.Xla.HloReducePrecisionOptions.Builder.class);
    }

    /**
     * <pre>
     * Where and when the reduce-precision operations will be added.
     * </pre>
     *
     * Protobuf enum {@code xla.HloReducePrecisionOptions.Location}
     */
    public enum Location
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <pre>
       * Add reduce-precision operations to the inputs of selected instructions.
       * This is done before any optimization occurs.
       * </pre>
       *
       * <code>OP_INPUTS = 0;</code>
       */
      OP_INPUTS(0),
      /**
       * <pre>
       * Add reduce-precision operations to the outputs of selected instructions.
       * This is done before any optimization occurs.
       * </pre>
       *
       * <code>OP_OUTPUTS = 1;</code>
       */
      OP_OUTPUTS(1),
      /**
       * <pre>
       * After operation-fusion occurs, add reduce-precision operations to the
       * outputs of any selected instructions that have not been fused into
       * fusion instructions.
       * </pre>
       *
       * <code>UNFUSED_OP_OUTPUTS = 2;</code>
       */
      UNFUSED_OP_OUTPUTS(2),
      /**
       * <pre>
       * After operation-fusion occurs, add reduce-precision operations to the
       * outputs of any fusion instructions that contain operations matching the
       * selection criteria.
       * </pre>
       *
       * <code>FUSION_INPUTS_BY_CONTENT = 3;</code>
       */
      FUSION_INPUTS_BY_CONTENT(3),
      /**
       * <pre>
       * After operation-fusion occurs, add reduce-precision operations to the
       * outputs of any fusion instructions that contain operations matching the
       * selection criteria.
       * </pre>
       *
       * <code>FUSION_OUTPUTS_BY_CONTENT = 4;</code>
       */
      FUSION_OUTPUTS_BY_CONTENT(4),
      UNRECOGNIZED(-1),
      ;

      /**
       * <pre>
       * Add reduce-precision operations to the inputs of selected instructions.
       * This is done before any optimization occurs.
       * </pre>
       *
       * <code>OP_INPUTS = 0;</code>
       */
      public static final int OP_INPUTS_VALUE = 0;
      /**
       * <pre>
       * Add reduce-precision operations to the outputs of selected instructions.
       * This is done before any optimization occurs.
       * </pre>
       *
       * <code>OP_OUTPUTS = 1;</code>
       */
      public static final int OP_OUTPUTS_VALUE = 1;
      /**
       * <pre>
       * After operation-fusion occurs, add reduce-precision operations to the
       * outputs of any selected instructions that have not been fused into
       * fusion instructions.
       * </pre>
       *
       * <code>UNFUSED_OP_OUTPUTS = 2;</code>
       */
      public static final int UNFUSED_OP_OUTPUTS_VALUE = 2;
      /**
       * <pre>
       * After operation-fusion occurs, add reduce-precision operations to the
       * outputs of any fusion instructions that contain operations matching the
       * selection criteria.
       * </pre>
       *
       * <code>FUSION_INPUTS_BY_CONTENT = 3;</code>
       */
      public static final int FUSION_INPUTS_BY_CONTENT_VALUE = 3;
      /**
       * <pre>
       * After operation-fusion occurs, add reduce-precision operations to the
       * outputs of any fusion instructions that contain operations matching the
       * selection criteria.
       * </pre>
       *
       * <code>FUSION_OUTPUTS_BY_CONTENT = 4;</code>
       */
      public static final int FUSION_OUTPUTS_BY_CONTENT_VALUE = 4;


      public final int getNumber() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalArgumentException(
              "Can't get the number of an unknown enum value.");
        }
        return value;
      }

      /**
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static Location valueOf(int value) {
        return forNumber(value);
      }

      public static Location forNumber(int value) {
        switch (value) {
          case 0: return OP_INPUTS;
          case 1: return OP_OUTPUTS;
          case 2: return UNFUSED_OP_OUTPUTS;
          case 3: return FUSION_INPUTS_BY_CONTENT;
          case 4: return FUSION_OUTPUTS_BY_CONTENT;
          default: return null;
        }
      }

      public static com.google.protobuf.Internal.EnumLiteMap<Location>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static final com.google.protobuf.Internal.EnumLiteMap<
          Location> internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap<Location>() {
              public Location findValueByNumber(int number) {
                return Location.forNumber(number);
              }
            };

      public final com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        return getDescriptor().getValues().get(ordinal());
      }
      public final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptorForType() {
        return getDescriptor();
      }
      public static final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptor() {
        return xla.Xla.HloReducePrecisionOptions.getDescriptor().getEnumTypes().get(0);
      }

      private static final Location[] VALUES = values();

      public static Location valueOf(
          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
        if (desc.getType() != getDescriptor()) {
          throw new java.lang.IllegalArgumentException(
            "EnumValueDescriptor is not for this type.");
        }
        if (desc.getIndex() == -1) {
          return UNRECOGNIZED;
        }
        return VALUES[desc.getIndex()];
      }

      private final int value;

      private Location(int value) {
        this.value = value;
      }

      // @@protoc_insertion_point(enum_scope:xla.HloReducePrecisionOptions.Location)
    }

    private int bitField0_;
    public static final int LOCATION_FIELD_NUMBER = 1;
    private int location_;
    /**
     * <code>.xla.HloReducePrecisionOptions.Location location = 1;</code>
     */
    public int getLocationValue() {
      return location_;
    }
    /**
     * <code>.xla.HloReducePrecisionOptions.Location location = 1;</code>
     */
    public xla.Xla.HloReducePrecisionOptions.Location getLocation() {
      xla.Xla.HloReducePrecisionOptions.Location result = xla.Xla.HloReducePrecisionOptions.Location.valueOf(location_);
      return result == null ? xla.Xla.HloReducePrecisionOptions.Location.UNRECOGNIZED : result;
    }

    public static final int EXPONENT_BITS_FIELD_NUMBER = 2;
    private int exponentBits_;
    /**
     * <pre>
     * Exponent and mantissa bit counts for the reduced precision.
     * </pre>
     *
     * <code>uint32 exponent_bits = 2;</code>
     */
    public int getExponentBits() {
      return exponentBits_;
    }

    public static final int MANTISSA_BITS_FIELD_NUMBER = 3;
    private int mantissaBits_;
    /**
     * <code>uint32 mantissa_bits = 3;</code>
     */
    public int getMantissaBits() {
      return mantissaBits_;
    }

    public static final int OPCODES_TO_SUFFIX_FIELD_NUMBER = 4;
    private java.util.List<java.lang.Integer> opcodesToSuffix_;
    /**
     * <pre>
     * Operations matching these opcodes should be suffixed with reduce-precision
     * operations.
     * </pre>
     *
     * <code>repeated uint32 opcodes_to_suffix = 4;</code>
     */
    public java.util.List<java.lang.Integer>
        getOpcodesToSuffixList() {
      return opcodesToSuffix_;
    }
    /**
     * <pre>
     * Operations matching these opcodes should be suffixed with reduce-precision
     * operations.
     * </pre>
     *
     * <code>repeated uint32 opcodes_to_suffix = 4;</code>
     */
    public int getOpcodesToSuffixCount() {
      return opcodesToSuffix_.size();
    }
    /**
     * <pre>
     * Operations matching these opcodes should be suffixed with reduce-precision
     * operations.
     * </pre>
     *
     * <code>repeated uint32 opcodes_to_suffix = 4;</code>
     */
    public int getOpcodesToSuffix(int index) {
      return opcodesToSuffix_.get(index);
    }
    private int opcodesToSuffixMemoizedSerializedSize = -1;

    public static final int OPNAME_SUBSTRINGS_TO_SUFFIX_FIELD_NUMBER = 5;
    private com.google.protobuf.LazyStringList opnameSubstringsToSuffix_;
    /**
     * <pre>
     * Operations with names containing these substrings should be suffixed with
     * reduce-precision operations.
     * </pre>
     *
     * <code>repeated string opname_substrings_to_suffix = 5;</code>
     */
    public com.google.protobuf.ProtocolStringList
        getOpnameSubstringsToSuffixList() {
      return opnameSubstringsToSuffix_;
    }
    /**
     * <pre>
     * Operations with names containing these substrings should be suffixed with
     * reduce-precision operations.
     * </pre>
     *
     * <code>repeated string opname_substrings_to_suffix = 5;</code>
     */
    public int getOpnameSubstringsToSuffixCount() {
      return opnameSubstringsToSuffix_.size();
    }
    /**
     * <pre>
     * Operations with names containing these substrings should be suffixed with
     * reduce-precision operations.
     * </pre>
     *
     * <code>repeated string opname_substrings_to_suffix = 5;</code>
     */
    public java.lang.String getOpnameSubstringsToSuffix(int index) {
      return opnameSubstringsToSuffix_.get(index);
    }
    /**
     * <pre>
     * Operations with names containing these substrings should be suffixed with
     * reduce-precision operations.
     * </pre>
     *
     * <code>repeated string opname_substrings_to_suffix = 5;</code>
     */
    public com.google.protobuf.ByteString
        getOpnameSubstringsToSuffixBytes(int index) {
      return opnameSubstringsToSuffix_.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 {
      getSerializedSize();
      if (location_ != xla.Xla.HloReducePrecisionOptions.Location.OP_INPUTS.getNumber()) {
        output.writeEnum(1, location_);
      }
      if (exponentBits_ != 0) {
        output.writeUInt32(2, exponentBits_);
      }
      if (mantissaBits_ != 0) {
        output.writeUInt32(3, mantissaBits_);
      }
      if (getOpcodesToSuffixList().size() > 0) {
        output.writeUInt32NoTag(34);
        output.writeUInt32NoTag(opcodesToSuffixMemoizedSerializedSize);
      }
      for (int i = 0; i < opcodesToSuffix_.size(); i++) {
        output.writeUInt32NoTag(opcodesToSuffix_.get(i));
      }
      for (int i = 0; i < opnameSubstringsToSuffix_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 5, opnameSubstringsToSuffix_.getRaw(i));
      }
    }

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

      size = 0;
      if (location_ != xla.Xla.HloReducePrecisionOptions.Location.OP_INPUTS.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(1, location_);
      }
      if (exponentBits_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(2, exponentBits_);
      }
      if (mantissaBits_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(3, mantissaBits_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < opcodesToSuffix_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeUInt32SizeNoTag(opcodesToSuffix_.get(i));
        }
        size += dataSize;
        if (!getOpcodesToSuffixList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        opcodesToSuffixMemoizedSerializedSize = dataSize;
      }
      {
        int dataSize = 0;
        for (int i = 0; i < opnameSubstringsToSuffix_.size(); i++) {
          dataSize += computeStringSizeNoTag(opnameSubstringsToSuffix_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getOpnameSubstringsToSuffixList().size();
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof xla.Xla.HloReducePrecisionOptions)) {
        return super.equals(obj);
      }
      xla.Xla.HloReducePrecisionOptions other = (xla.Xla.HloReducePrecisionOptions) obj;

      boolean result = true;
      result = result && location_ == other.location_;
      result = result && (getExponentBits()
          == other.getExponentBits());
      result = result && (getMantissaBits()
          == other.getMantissaBits());
      result = result && getOpcodesToSuffixList()
          .equals(other.getOpcodesToSuffixList());
      result = result && getOpnameSubstringsToSuffixList()
          .equals(other.getOpnameSubstringsToSuffixList());
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + LOCATION_FIELD_NUMBER;
      hash = (53 * hash) + location_;
      hash = (37 * hash) + EXPONENT_BITS_FIELD_NUMBER;
      hash = (53 * hash) + getExponentBits();
      hash = (37 * hash) + MANTISSA_BITS_FIELD_NUMBER;
      hash = (53 * hash) + getMantissaBits();
      if (getOpcodesToSuffixCount() > 0) {
        hash = (37 * hash) + OPCODES_TO_SUFFIX_FIELD_NUMBER;
        hash = (53 * hash) + getOpcodesToSuffixList().hashCode();
      }
      if (getOpnameSubstringsToSuffixCount() > 0) {
        hash = (37 * hash) + OPNAME_SUBSTRINGS_TO_SUFFIX_FIELD_NUMBER;
        hash = (53 * hash) + getOpnameSubstringsToSuffixList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static xla.Xla.HloReducePrecisionOptions parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.HloReducePrecisionOptions parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.HloReducePrecisionOptions parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.HloReducePrecisionOptions parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.HloReducePrecisionOptions parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.HloReducePrecisionOptions 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 xla.Xla.HloReducePrecisionOptions parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static xla.Xla.HloReducePrecisionOptions 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 xla.Xla.HloReducePrecisionOptions parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.HloReducePrecisionOptions 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(xla.Xla.HloReducePrecisionOptions 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;
    }
    /**
     * <pre>
     * Options for the HLO insert-reduce-precision-operations pass.
     * </pre>
     *
     * Protobuf type {@code xla.HloReducePrecisionOptions}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:xla.HloReducePrecisionOptions)
        xla.Xla.HloReducePrecisionOptionsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return xla.Xla.internal_static_xla_HloReducePrecisionOptions_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return xla.Xla.internal_static_xla_HloReducePrecisionOptions_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                xla.Xla.HloReducePrecisionOptions.class, xla.Xla.HloReducePrecisionOptions.Builder.class);
      }

      // Construct using xla.Xla.HloReducePrecisionOptions.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();
        location_ = 0;

        exponentBits_ = 0;

        mantissaBits_ = 0;

        opcodesToSuffix_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000008);
        opnameSubstringsToSuffix_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000010);
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return xla.Xla.internal_static_xla_HloReducePrecisionOptions_descriptor;
      }

      public xla.Xla.HloReducePrecisionOptions getDefaultInstanceForType() {
        return xla.Xla.HloReducePrecisionOptions.getDefaultInstance();
      }

      public xla.Xla.HloReducePrecisionOptions build() {
        xla.Xla.HloReducePrecisionOptions result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public xla.Xla.HloReducePrecisionOptions buildPartial() {
        xla.Xla.HloReducePrecisionOptions result = new xla.Xla.HloReducePrecisionOptions(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        result.location_ = location_;
        result.exponentBits_ = exponentBits_;
        result.mantissaBits_ = mantissaBits_;
        if (((bitField0_ & 0x00000008) == 0x00000008)) {
          opcodesToSuffix_ = java.util.Collections.unmodifiableList(opcodesToSuffix_);
          bitField0_ = (bitField0_ & ~0x00000008);
        }
        result.opcodesToSuffix_ = opcodesToSuffix_;
        if (((bitField0_ & 0x00000010) == 0x00000010)) {
          opnameSubstringsToSuffix_ = opnameSubstringsToSuffix_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000010);
        }
        result.opnameSubstringsToSuffix_ = opnameSubstringsToSuffix_;
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof xla.Xla.HloReducePrecisionOptions) {
          return mergeFrom((xla.Xla.HloReducePrecisionOptions)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(xla.Xla.HloReducePrecisionOptions other) {
        if (other == xla.Xla.HloReducePrecisionOptions.getDefaultInstance()) return this;
        if (other.location_ != 0) {
          setLocationValue(other.getLocationValue());
        }
        if (other.getExponentBits() != 0) {
          setExponentBits(other.getExponentBits());
        }
        if (other.getMantissaBits() != 0) {
          setMantissaBits(other.getMantissaBits());
        }
        if (!other.opcodesToSuffix_.isEmpty()) {
          if (opcodesToSuffix_.isEmpty()) {
            opcodesToSuffix_ = other.opcodesToSuffix_;
            bitField0_ = (bitField0_ & ~0x00000008);
          } else {
            ensureOpcodesToSuffixIsMutable();
            opcodesToSuffix_.addAll(other.opcodesToSuffix_);
          }
          onChanged();
        }
        if (!other.opnameSubstringsToSuffix_.isEmpty()) {
          if (opnameSubstringsToSuffix_.isEmpty()) {
            opnameSubstringsToSuffix_ = other.opnameSubstringsToSuffix_;
            bitField0_ = (bitField0_ & ~0x00000010);
          } else {
            ensureOpnameSubstringsToSuffixIsMutable();
            opnameSubstringsToSuffix_.addAll(other.opnameSubstringsToSuffix_);
          }
          onChanged();
        }
        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 {
        xla.Xla.HloReducePrecisionOptions parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (xla.Xla.HloReducePrecisionOptions) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private int location_ = 0;
      /**
       * <code>.xla.HloReducePrecisionOptions.Location location = 1;</code>
       */
      public int getLocationValue() {
        return location_;
      }
      /**
       * <code>.xla.HloReducePrecisionOptions.Location location = 1;</code>
       */
      public Builder setLocationValue(int value) {
        location_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>.xla.HloReducePrecisionOptions.Location location = 1;</code>
       */
      public xla.Xla.HloReducePrecisionOptions.Location getLocation() {
        xla.Xla.HloReducePrecisionOptions.Location result = xla.Xla.HloReducePrecisionOptions.Location.valueOf(location_);
        return result == null ? xla.Xla.HloReducePrecisionOptions.Location.UNRECOGNIZED : result;
      }
      /**
       * <code>.xla.HloReducePrecisionOptions.Location location = 1;</code>
       */
      public Builder setLocation(xla.Xla.HloReducePrecisionOptions.Location value) {
        if (value == null) {
          throw new NullPointerException();
        }
        
        location_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <code>.xla.HloReducePrecisionOptions.Location location = 1;</code>
       */
      public Builder clearLocation() {
        
        location_ = 0;
        onChanged();
        return this;
      }

      private int exponentBits_ ;
      /**
       * <pre>
       * Exponent and mantissa bit counts for the reduced precision.
       * </pre>
       *
       * <code>uint32 exponent_bits = 2;</code>
       */
      public int getExponentBits() {
        return exponentBits_;
      }
      /**
       * <pre>
       * Exponent and mantissa bit counts for the reduced precision.
       * </pre>
       *
       * <code>uint32 exponent_bits = 2;</code>
       */
      public Builder setExponentBits(int value) {
        
        exponentBits_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Exponent and mantissa bit counts for the reduced precision.
       * </pre>
       *
       * <code>uint32 exponent_bits = 2;</code>
       */
      public Builder clearExponentBits() {
        
        exponentBits_ = 0;
        onChanged();
        return this;
      }

      private int mantissaBits_ ;
      /**
       * <code>uint32 mantissa_bits = 3;</code>
       */
      public int getMantissaBits() {
        return mantissaBits_;
      }
      /**
       * <code>uint32 mantissa_bits = 3;</code>
       */
      public Builder setMantissaBits(int value) {
        
        mantissaBits_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>uint32 mantissa_bits = 3;</code>
       */
      public Builder clearMantissaBits() {
        
        mantissaBits_ = 0;
        onChanged();
        return this;
      }

      private java.util.List<java.lang.Integer> opcodesToSuffix_ = java.util.Collections.emptyList();
      private void ensureOpcodesToSuffixIsMutable() {
        if (!((bitField0_ & 0x00000008) == 0x00000008)) {
          opcodesToSuffix_ = new java.util.ArrayList<java.lang.Integer>(opcodesToSuffix_);
          bitField0_ |= 0x00000008;
         }
      }
      /**
       * <pre>
       * Operations matching these opcodes should be suffixed with reduce-precision
       * operations.
       * </pre>
       *
       * <code>repeated uint32 opcodes_to_suffix = 4;</code>
       */
      public java.util.List<java.lang.Integer>
          getOpcodesToSuffixList() {
        return java.util.Collections.unmodifiableList(opcodesToSuffix_);
      }
      /**
       * <pre>
       * Operations matching these opcodes should be suffixed with reduce-precision
       * operations.
       * </pre>
       *
       * <code>repeated uint32 opcodes_to_suffix = 4;</code>
       */
      public int getOpcodesToSuffixCount() {
        return opcodesToSuffix_.size();
      }
      /**
       * <pre>
       * Operations matching these opcodes should be suffixed with reduce-precision
       * operations.
       * </pre>
       *
       * <code>repeated uint32 opcodes_to_suffix = 4;</code>
       */
      public int getOpcodesToSuffix(int index) {
        return opcodesToSuffix_.get(index);
      }
      /**
       * <pre>
       * Operations matching these opcodes should be suffixed with reduce-precision
       * operations.
       * </pre>
       *
       * <code>repeated uint32 opcodes_to_suffix = 4;</code>
       */
      public Builder setOpcodesToSuffix(
          int index, int value) {
        ensureOpcodesToSuffixIsMutable();
        opcodesToSuffix_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Operations matching these opcodes should be suffixed with reduce-precision
       * operations.
       * </pre>
       *
       * <code>repeated uint32 opcodes_to_suffix = 4;</code>
       */
      public Builder addOpcodesToSuffix(int value) {
        ensureOpcodesToSuffixIsMutable();
        opcodesToSuffix_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Operations matching these opcodes should be suffixed with reduce-precision
       * operations.
       * </pre>
       *
       * <code>repeated uint32 opcodes_to_suffix = 4;</code>
       */
      public Builder addAllOpcodesToSuffix(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureOpcodesToSuffixIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, opcodesToSuffix_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Operations matching these opcodes should be suffixed with reduce-precision
       * operations.
       * </pre>
       *
       * <code>repeated uint32 opcodes_to_suffix = 4;</code>
       */
      public Builder clearOpcodesToSuffix() {
        opcodesToSuffix_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000008);
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList opnameSubstringsToSuffix_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureOpnameSubstringsToSuffixIsMutable() {
        if (!((bitField0_ & 0x00000010) == 0x00000010)) {
          opnameSubstringsToSuffix_ = new com.google.protobuf.LazyStringArrayList(opnameSubstringsToSuffix_);
          bitField0_ |= 0x00000010;
         }
      }
      /**
       * <pre>
       * Operations with names containing these substrings should be suffixed with
       * reduce-precision operations.
       * </pre>
       *
       * <code>repeated string opname_substrings_to_suffix = 5;</code>
       */
      public com.google.protobuf.ProtocolStringList
          getOpnameSubstringsToSuffixList() {
        return opnameSubstringsToSuffix_.getUnmodifiableView();
      }
      /**
       * <pre>
       * Operations with names containing these substrings should be suffixed with
       * reduce-precision operations.
       * </pre>
       *
       * <code>repeated string opname_substrings_to_suffix = 5;</code>
       */
      public int getOpnameSubstringsToSuffixCount() {
        return opnameSubstringsToSuffix_.size();
      }
      /**
       * <pre>
       * Operations with names containing these substrings should be suffixed with
       * reduce-precision operations.
       * </pre>
       *
       * <code>repeated string opname_substrings_to_suffix = 5;</code>
       */
      public java.lang.String getOpnameSubstringsToSuffix(int index) {
        return opnameSubstringsToSuffix_.get(index);
      }
      /**
       * <pre>
       * Operations with names containing these substrings should be suffixed with
       * reduce-precision operations.
       * </pre>
       *
       * <code>repeated string opname_substrings_to_suffix = 5;</code>
       */
      public com.google.protobuf.ByteString
          getOpnameSubstringsToSuffixBytes(int index) {
        return opnameSubstringsToSuffix_.getByteString(index);
      }
      /**
       * <pre>
       * Operations with names containing these substrings should be suffixed with
       * reduce-precision operations.
       * </pre>
       *
       * <code>repeated string opname_substrings_to_suffix = 5;</code>
       */
      public Builder setOpnameSubstringsToSuffix(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureOpnameSubstringsToSuffixIsMutable();
        opnameSubstringsToSuffix_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Operations with names containing these substrings should be suffixed with
       * reduce-precision operations.
       * </pre>
       *
       * <code>repeated string opname_substrings_to_suffix = 5;</code>
       */
      public Builder addOpnameSubstringsToSuffix(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureOpnameSubstringsToSuffixIsMutable();
        opnameSubstringsToSuffix_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Operations with names containing these substrings should be suffixed with
       * reduce-precision operations.
       * </pre>
       *
       * <code>repeated string opname_substrings_to_suffix = 5;</code>
       */
      public Builder addAllOpnameSubstringsToSuffix(
          java.lang.Iterable<java.lang.String> values) {
        ensureOpnameSubstringsToSuffixIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, opnameSubstringsToSuffix_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Operations with names containing these substrings should be suffixed with
       * reduce-precision operations.
       * </pre>
       *
       * <code>repeated string opname_substrings_to_suffix = 5;</code>
       */
      public Builder clearOpnameSubstringsToSuffix() {
        opnameSubstringsToSuffix_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000010);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Operations with names containing these substrings should be suffixed with
       * reduce-precision operations.
       * </pre>
       *
       * <code>repeated string opname_substrings_to_suffix = 5;</code>
       */
      public Builder addOpnameSubstringsToSuffixBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureOpnameSubstringsToSuffixIsMutable();
        opnameSubstringsToSuffix_.add(value);
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

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


      // @@protoc_insertion_point(builder_scope:xla.HloReducePrecisionOptions)
    }

    // @@protoc_insertion_point(class_scope:xla.HloReducePrecisionOptions)
    private static final xla.Xla.HloReducePrecisionOptions DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new xla.Xla.HloReducePrecisionOptions();
    }

    public static xla.Xla.HloReducePrecisionOptions getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public xla.Xla.HloReducePrecisionOptions getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface DebugOptionsOrBuilder extends
      // @@protoc_insertion_point(interface_extends:xla.DebugOptions)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * HLO modules matching this regex will be dumped to a .dot file throughout
     * various stages in compilation (file names are LOG(INFO)'d). Set to ".*" to
     * dump *all* HLO modules.
     * </pre>
     *
     * <code>string xla_generate_hlo_graph = 1;</code>
     */
    java.lang.String getXlaGenerateHloGraph();
    /**
     * <pre>
     * HLO modules matching this regex will be dumped to a .dot file throughout
     * various stages in compilation (file names are LOG(INFO)'d). Set to ".*" to
     * dump *all* HLO modules.
     * </pre>
     *
     * <code>string xla_generate_hlo_graph = 1;</code>
     */
    com.google.protobuf.ByteString
        getXlaGenerateHloGraphBytes();

    /**
     * <pre>
     * Show addresses of HLO ops in graph dump.
     * </pre>
     *
     * <code>bool xla_hlo_graph_addresses = 2;</code>
     */
    boolean getXlaHloGraphAddresses();

    /**
     * <pre>
     * Path to dump HLO graphs to.
     * </pre>
     *
     * <code>string xla_hlo_graph_path = 4;</code>
     */
    java.lang.String getXlaHloGraphPath();
    /**
     * <pre>
     * Path to dump HLO graphs to.
     * </pre>
     *
     * <code>string xla_hlo_graph_path = 4;</code>
     */
    com.google.protobuf.ByteString
        getXlaHloGraphPathBytes();

    /**
     * <pre>
     * Dump HLO graphs as TensorFlow GraphDefs.
     * </pre>
     *
     * <code>bool xla_hlo_dump_as_graphdef = 5;</code>
     */
    boolean getXlaHloDumpAsGraphdef();

    /**
     * <pre>
     * HLO modules matching this regex will be dumped to LOG(INFO). Set to ".*" to
     * dump *all* HLO modules.
     * </pre>
     *
     * <code>string xla_log_hlo_text = 6;</code>
     */
    java.lang.String getXlaLogHloText();
    /**
     * <pre>
     * HLO modules matching this regex will be dumped to LOG(INFO). Set to ".*" to
     * dump *all* HLO modules.
     * </pre>
     *
     * <code>string xla_log_hlo_text = 6;</code>
     */
    com.google.protobuf.ByteString
        getXlaLogHloTextBytes();

    /**
     * <pre>
     * Dump all HLO modules as text into the provided directory path.
     * </pre>
     *
     * <code>string xla_generate_hlo_text_to = 7;</code>
     */
    java.lang.String getXlaGenerateHloTextTo();
    /**
     * <pre>
     * Dump all HLO modules as text into the provided directory path.
     * </pre>
     *
     * <code>string xla_generate_hlo_text_to = 7;</code>
     */
    com.google.protobuf.ByteString
        getXlaGenerateHloTextToBytes();

    /**
     * <pre>
     * Dump Hlo after all hlo passes are executed as proto binary into this
     * directory.
     * </pre>
     *
     * <code>string xla_dump_optimized_hlo_proto_to = 8;</code>
     */
    java.lang.String getXlaDumpOptimizedHloProtoTo();
    /**
     * <pre>
     * Dump Hlo after all hlo passes are executed as proto binary into this
     * directory.
     * </pre>
     *
     * <code>string xla_dump_optimized_hlo_proto_to = 8;</code>
     */
    com.google.protobuf.ByteString
        getXlaDumpOptimizedHloProtoToBytes();

    /**
     * <pre>
     * Instrument the computation to collect per-HLO cycle counts.
     * </pre>
     *
     * <code>bool xla_hlo_profile = 9;</code>
     */
    boolean getXlaHloProfile();

    /**
     * <pre>
     * Dumps computations that XLA executes into the provided directory path.
     * </pre>
     *
     * <code>string xla_dump_computations_to = 10;</code>
     */
    java.lang.String getXlaDumpComputationsTo();
    /**
     * <pre>
     * Dumps computations that XLA executes into the provided directory path.
     * </pre>
     *
     * <code>string xla_dump_computations_to = 10;</code>
     */
    com.google.protobuf.ByteString
        getXlaDumpComputationsToBytes();

    /**
     * <pre>
     * Dumps parameters and results of computations that XLA executes into the
     * provided directory path.
     * </pre>
     *
     * <code>string xla_dump_executions_to = 11;</code>
     */
    java.lang.String getXlaDumpExecutionsTo();
    /**
     * <pre>
     * Dumps parameters and results of computations that XLA executes into the
     * provided directory path.
     * </pre>
     *
     * <code>string xla_dump_executions_to = 11;</code>
     */
    com.google.protobuf.ByteString
        getXlaDumpExecutionsToBytes();

    /**
     * <pre>
     * List of HLO passes to disable. These names must exactly match the pass
     * names as specified by the HloPassInterface::name() method.
     * </pre>
     *
     * <code>repeated string xla_disable_hlo_passes = 30;</code>
     */
    java.util.List<java.lang.String>
        getXlaDisableHloPassesList();
    /**
     * <pre>
     * List of HLO passes to disable. These names must exactly match the pass
     * names as specified by the HloPassInterface::name() method.
     * </pre>
     *
     * <code>repeated string xla_disable_hlo_passes = 30;</code>
     */
    int getXlaDisableHloPassesCount();
    /**
     * <pre>
     * List of HLO passes to disable. These names must exactly match the pass
     * names as specified by the HloPassInterface::name() method.
     * </pre>
     *
     * <code>repeated string xla_disable_hlo_passes = 30;</code>
     */
    java.lang.String getXlaDisableHloPasses(int index);
    /**
     * <pre>
     * List of HLO passes to disable. These names must exactly match the pass
     * names as specified by the HloPassInterface::name() method.
     * </pre>
     *
     * <code>repeated string xla_disable_hlo_passes = 30;</code>
     */
    com.google.protobuf.ByteString
        getXlaDisableHloPassesBytes(int index);

    /**
     * <pre>
     * Numerical optimization level for the XLA compiler backend; the specific
     * interpretation of this value is left to the backends.
     * </pre>
     *
     * <code>int32 xla_backend_optimization_level = 31;</code>
     */
    int getXlaBackendOptimizationLevel();

    /**
     * <pre>
     * When true, "unsafe" mathematical optimizations are enabled. These
     * transformations include but are not limited to:
     *  - Reducing the precision of operations (e.g. using an approximate sin
     *    function, or transforming x/y into x * (1/y)).
     *  - Assuming that operations never produce or consume NaN or +/- Inf.
     *  - Assuming that +0 and -0 are indistinguishable.
     * </pre>
     *
     * <code>bool xla_enable_fast_math = 32;</code>
     */
    boolean getXlaEnableFastMath();

    /**
     * <pre>
     * Embed the compiler IR as a string in the executable.
     * </pre>
     *
     * <code>bool xla_embed_ir_in_executable = 33;</code>
     */
    boolean getXlaEmbedIrInExecutable();

    /**
     * <pre>
     * Dump the compiler IR into this directory as individual files.
     * </pre>
     *
     * <code>string xla_dump_ir_to = 34;</code>
     */
    java.lang.String getXlaDumpIrTo();
    /**
     * <pre>
     * Dump the compiler IR into this directory as individual files.
     * </pre>
     *
     * <code>string xla_dump_ir_to = 34;</code>
     */
    com.google.protobuf.ByteString
        getXlaDumpIrToBytes();

    /**
     * <pre>
     * Eliminate implicit broadcasts when lowering user computations to HLO
     * instructions; use explicit broadcast instead.
     * </pre>
     *
     * <code>bool xla_eliminate_hlo_implicit_broadcast = 35;</code>
     */
    boolean getXlaEliminateHloImplicitBroadcast();

    /**
     * <pre>
     * When generating calls to Eigen in the CPU backend, use multi-threaded Eigen
     * mode.
     * </pre>
     *
     * <code>bool xla_cpu_multi_thread_eigen = 60;</code>
     */
    boolean getXlaCpuMultiThreadEigen();

    /**
     * <pre>
     * Path to directory with cuda/ptx tools and libraries.
     * </pre>
     *
     * <code>string xla_gpu_cuda_data_dir = 61;</code>
     */
    java.lang.String getXlaGpuCudaDataDir();
    /**
     * <pre>
     * Path to directory with cuda/ptx tools and libraries.
     * </pre>
     *
     * <code>string xla_gpu_cuda_data_dir = 61;</code>
     */
    com.google.protobuf.ByteString
        getXlaGpuCudaDataDirBytes();

    /**
     * <pre>
     * Enable flush-to-zero semantics in the GPU backend.
     * </pre>
     *
     * <code>bool xla_gpu_ftz = 62;</code>
     */
    boolean getXlaGpuFtz();

    /**
     * <pre>
     * Disable multi-streaming in the GPU backend.
     * </pre>
     *
     * <code>bool xla_gpu_disable_multi_streaming = 63;</code>
     */
    boolean getXlaGpuDisableMultiStreaming();

    /**
     * <pre>
     * If true, in LLVM-based backends, emit !alias.scope metadata in
     * generated IR.
     * </pre>
     *
     * <code>bool xla_llvm_enable_alias_scope_metadata = 70;</code>
     */
    boolean getXlaLlvmEnableAliasScopeMetadata();

    /**
     * <pre>
     * If true, in LLVM-based backends, emit !noalias metadata in the
     * generated IR.
     * </pre>
     *
     * <code>bool xla_llvm_enable_noalias_metadata = 71;</code>
     */
    boolean getXlaLlvmEnableNoaliasMetadata();

    /**
     * <pre>
     * If true, in LLVM-based backends, emit !invariant.load metadata in
     * the generated IR.
     * </pre>
     *
     * <code>bool xla_llvm_enable_invariant_load_metadata = 72;</code>
     */
    boolean getXlaLlvmEnableInvariantLoadMetadata();

    /**
     * <pre>
     * If true, a set of expensive LLVM optimization passes will not be run.
     * </pre>
     *
     * <code>bool xla_llvm_disable_expensive_passes = 73;</code>
     */
    boolean getXlaLlvmDisableExpensivePasses();

    /**
     * <pre>
     * Options for inserting reduce-precision operations for numerical
     * experimentation.  This is a repeated field, as we may want to have
     * multiple passes with different parameters.
     * </pre>
     *
     * <code>repeated .xla.HloReducePrecisionOptions hlo_reduce_precision_options = 80;</code>
     */
    java.util.List<xla.Xla.HloReducePrecisionOptions> 
        getHloReducePrecisionOptionsList();
    /**
     * <pre>
     * Options for inserting reduce-precision operations for numerical
     * experimentation.  This is a repeated field, as we may want to have
     * multiple passes with different parameters.
     * </pre>
     *
     * <code>repeated .xla.HloReducePrecisionOptions hlo_reduce_precision_options = 80;</code>
     */
    xla.Xla.HloReducePrecisionOptions getHloReducePrecisionOptions(int index);
    /**
     * <pre>
     * Options for inserting reduce-precision operations for numerical
     * experimentation.  This is a repeated field, as we may want to have
     * multiple passes with different parameters.
     * </pre>
     *
     * <code>repeated .xla.HloReducePrecisionOptions hlo_reduce_precision_options = 80;</code>
     */
    int getHloReducePrecisionOptionsCount();
    /**
     * <pre>
     * Options for inserting reduce-precision operations for numerical
     * experimentation.  This is a repeated field, as we may want to have
     * multiple passes with different parameters.
     * </pre>
     *
     * <code>repeated .xla.HloReducePrecisionOptions hlo_reduce_precision_options = 80;</code>
     */
    java.util.List<? extends xla.Xla.HloReducePrecisionOptionsOrBuilder> 
        getHloReducePrecisionOptionsOrBuilderList();
    /**
     * <pre>
     * Options for inserting reduce-precision operations for numerical
     * experimentation.  This is a repeated field, as we may want to have
     * multiple passes with different parameters.
     * </pre>
     *
     * <code>repeated .xla.HloReducePrecisionOptions hlo_reduce_precision_options = 80;</code>
     */
    xla.Xla.HloReducePrecisionOptionsOrBuilder getHloReducePrecisionOptionsOrBuilder(
        int index);

    /**
     * <pre>
     * This is used by ClientLibraryTestBase::ComputeAndCompare*. If true, the
     * computation will run n! times with all permunations of layouts for the
     * output shape in rank n. For example, with a 3D shape, all permutations of
     * the set {0, 1, 2} are tried.
     * </pre>
     *
     * <code>bool xla_test_all_output_layouts = 90;</code>
     */
    boolean getXlaTestAllOutputLayouts();

    /**
     * <pre>
     * This is used by ClientLibraryTestBase::ComputeAndCompare*. If true, the
     * computation will run for all permunations of layouts of all input
     * arguments. For example, with 2 input arguments in 2D and 4D shapes, the
     * computation will run 2! * 4! times.
     * </pre>
     *
     * <code>bool xla_test_all_input_layouts = 91;</code>
     */
    boolean getXlaTestAllInputLayouts();

    /**
     * <pre>
     * Assign colors based on sharding information when generating the Graphviz
     * HLO graph.
     * </pre>
     *
     * <code>bool xla_hlo_graph_sharding_color = 92;</code>
     */
    boolean getXlaHloGraphShardingColor();

    /**
     * <pre>
     * Prefix the name scopes of the TF graph exports with "devX" device
     * assignments, if available.
     * </pre>
     *
     * <code>bool xla_hlo_tfgraph_device_scopes = 93;</code>
     */
    boolean getXlaHloTfgraphDeviceScopes();

    /**
     * <pre>
     * If true, the GPU backend is free to use cudnn for HLO batch normalization
     * ops.
     * </pre>
     *
     * <code>bool xla_gpu_use_cudnn_batchnorm = 94;</code>
     */
    boolean getXlaGpuUseCudnnBatchnorm();

    /**
     * <pre>
     * Dump HLO before any hlo passes are executed as proto binary into this
     * directory.
     * </pre>
     *
     * <code>string xla_dump_unoptimized_hlo_proto_to = 95;</code>
     */
    java.lang.String getXlaDumpUnoptimizedHloProtoTo();
    /**
     * <pre>
     * Dump HLO before any hlo passes are executed as proto binary into this
     * directory.
     * </pre>
     *
     * <code>string xla_dump_unoptimized_hlo_proto_to = 95;</code>
     */
    com.google.protobuf.ByteString
        getXlaDumpUnoptimizedHloProtoToBytes();

    /**
     * <pre>
     * Dump HLO after each pass as an HloProto in binary file format into this
     * directory.
     * </pre>
     *
     * <code>string xla_dump_per_pass_hlo_proto_to = 96;</code>
     */
    java.lang.String getXlaDumpPerPassHloProtoTo();
    /**
     * <pre>
     * Dump HLO after each pass as an HloProto in binary file format into this
     * directory.
     * </pre>
     *
     * <code>string xla_dump_per_pass_hlo_proto_to = 96;</code>
     */
    com.google.protobuf.ByteString
        getXlaDumpPerPassHloProtoToBytes();

    /**
     * <pre>
     * Generate calls to MKL-DNN in the CPU backend.
     * </pre>
     *
     * <code>bool xla_cpu_use_mkl_dnn = 97;</code>
     */
    boolean getXlaCpuUseMklDnn();

    /**
     * <pre>
     * Extra options to pass to the compilation backend; specific interpretation
     * of these values is left to the backend.
     * </pre>
     *
     * <code>map&lt;string, string&gt; xla_backend_extra_options = 500;</code>
     */
    int getXlaBackendExtraOptionsCount();
    /**
     * <pre>
     * Extra options to pass to the compilation backend; specific interpretation
     * of these values is left to the backend.
     * </pre>
     *
     * <code>map&lt;string, string&gt; xla_backend_extra_options = 500;</code>
     */
    boolean containsXlaBackendExtraOptions(
        java.lang.String key);
    /**
     * Use {@link #getXlaBackendExtraOptionsMap()} instead.
     */
    @java.lang.Deprecated
    java.util.Map<java.lang.String, java.lang.String>
    getXlaBackendExtraOptions();
    /**
     * <pre>
     * Extra options to pass to the compilation backend; specific interpretation
     * of these values is left to the backend.
     * </pre>
     *
     * <code>map&lt;string, string&gt; xla_backend_extra_options = 500;</code>
     */
    java.util.Map<java.lang.String, java.lang.String>
    getXlaBackendExtraOptionsMap();
    /**
     * <pre>
     * Extra options to pass to the compilation backend; specific interpretation
     * of these values is left to the backend.
     * </pre>
     *
     * <code>map&lt;string, string&gt; xla_backend_extra_options = 500;</code>
     */

    java.lang.String getXlaBackendExtraOptionsOrDefault(
        java.lang.String key,
        java.lang.String defaultValue);
    /**
     * <pre>
     * Extra options to pass to the compilation backend; specific interpretation
     * of these values is left to the backend.
     * </pre>
     *
     * <code>map&lt;string, string&gt; xla_backend_extra_options = 500;</code>
     */

    java.lang.String getXlaBackendExtraOptionsOrThrow(
        java.lang.String key);
  }
  /**
   * <pre>
   * Debugging options for XLA. These options may change at any time - there are
   * no guarantees about backward or forward compatibility for these fields.
   * </pre>
   *
   * Protobuf type {@code xla.DebugOptions}
   */
  public  static final class DebugOptions extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:xla.DebugOptions)
      DebugOptionsOrBuilder {
    // Use DebugOptions.newBuilder() to construct.
    private DebugOptions(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private DebugOptions() {
      xlaGenerateHloGraph_ = "";
      xlaHloGraphAddresses_ = false;
      xlaHloGraphPath_ = "";
      xlaHloDumpAsGraphdef_ = false;
      xlaLogHloText_ = "";
      xlaGenerateHloTextTo_ = "";
      xlaDumpOptimizedHloProtoTo_ = "";
      xlaHloProfile_ = false;
      xlaDumpComputationsTo_ = "";
      xlaDumpExecutionsTo_ = "";
      xlaDisableHloPasses_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      xlaBackendOptimizationLevel_ = 0;
      xlaEnableFastMath_ = false;
      xlaEmbedIrInExecutable_ = false;
      xlaDumpIrTo_ = "";
      xlaEliminateHloImplicitBroadcast_ = false;
      xlaCpuMultiThreadEigen_ = false;
      xlaGpuCudaDataDir_ = "";
      xlaGpuFtz_ = false;
      xlaGpuDisableMultiStreaming_ = false;
      xlaLlvmEnableAliasScopeMetadata_ = false;
      xlaLlvmEnableNoaliasMetadata_ = false;
      xlaLlvmEnableInvariantLoadMetadata_ = false;
      xlaLlvmDisableExpensivePasses_ = false;
      hloReducePrecisionOptions_ = java.util.Collections.emptyList();
      xlaTestAllOutputLayouts_ = false;
      xlaTestAllInputLayouts_ = false;
      xlaHloGraphShardingColor_ = false;
      xlaHloTfgraphDeviceScopes_ = false;
      xlaGpuUseCudnnBatchnorm_ = false;
      xlaDumpUnoptimizedHloProtoTo_ = "";
      xlaDumpPerPassHloProtoTo_ = "";
      xlaCpuUseMklDnn_ = false;
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private DebugOptions(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      int mutable_bitField1_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

              xlaGenerateHloGraph_ = s;
              break;
            }
            case 16: {

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

              xlaHloGraphPath_ = s;
              break;
            }
            case 40: {

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

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

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

              xlaDumpOptimizedHloProtoTo_ = s;
              break;
            }
            case 72: {

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

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

              xlaDumpExecutionsTo_ = s;
              break;
            }
            case 242: {
              java.lang.String s = input.readStringRequireUtf8();
              if (!((mutable_bitField0_ & 0x00000400) == 0x00000400)) {
                xlaDisableHloPasses_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000400;
              }
              xlaDisableHloPasses_.add(s);
              break;
            }
            case 248: {

              xlaBackendOptimizationLevel_ = input.readInt32();
              break;
            }
            case 256: {

              xlaEnableFastMath_ = input.readBool();
              break;
            }
            case 264: {

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

              xlaDumpIrTo_ = s;
              break;
            }
            case 280: {

              xlaEliminateHloImplicitBroadcast_ = input.readBool();
              break;
            }
            case 480: {

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

              xlaGpuCudaDataDir_ = s;
              break;
            }
            case 496: {

              xlaGpuFtz_ = input.readBool();
              break;
            }
            case 504: {

              xlaGpuDisableMultiStreaming_ = input.readBool();
              break;
            }
            case 560: {

              xlaLlvmEnableAliasScopeMetadata_ = input.readBool();
              break;
            }
            case 568: {

              xlaLlvmEnableNoaliasMetadata_ = input.readBool();
              break;
            }
            case 576: {

              xlaLlvmEnableInvariantLoadMetadata_ = input.readBool();
              break;
            }
            case 584: {

              xlaLlvmDisableExpensivePasses_ = input.readBool();
              break;
            }
            case 642: {
              if (!((mutable_bitField0_ & 0x01000000) == 0x01000000)) {
                hloReducePrecisionOptions_ = new java.util.ArrayList<xla.Xla.HloReducePrecisionOptions>();
                mutable_bitField0_ |= 0x01000000;
              }
              hloReducePrecisionOptions_.add(
                  input.readMessage(xla.Xla.HloReducePrecisionOptions.parser(), extensionRegistry));
              break;
            }
            case 720: {

              xlaTestAllOutputLayouts_ = input.readBool();
              break;
            }
            case 728: {

              xlaTestAllInputLayouts_ = input.readBool();
              break;
            }
            case 736: {

              xlaHloGraphShardingColor_ = input.readBool();
              break;
            }
            case 744: {

              xlaHloTfgraphDeviceScopes_ = input.readBool();
              break;
            }
            case 752: {

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

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

              xlaDumpPerPassHloProtoTo_ = s;
              break;
            }
            case 776: {

              xlaCpuUseMklDnn_ = input.readBool();
              break;
            }
            case 4002: {
              if (!((mutable_bitField1_ & 0x00000002) == 0x00000002)) {
                xlaBackendExtraOptions_ = com.google.protobuf.MapField.newMapField(
                    XlaBackendExtraOptionsDefaultEntryHolder.defaultEntry);
                mutable_bitField1_ |= 0x00000002;
              }
              com.google.protobuf.MapEntry<java.lang.String, java.lang.String>
              xlaBackendExtraOptions__ = input.readMessage(
                  XlaBackendExtraOptionsDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
              xlaBackendExtraOptions_.getMutableMap().put(
                  xlaBackendExtraOptions__.getKey(), xlaBackendExtraOptions__.getValue());
              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_ & 0x00000400) == 0x00000400)) {
          xlaDisableHloPasses_ = xlaDisableHloPasses_.getUnmodifiableView();
        }
        if (((mutable_bitField0_ & 0x01000000) == 0x01000000)) {
          hloReducePrecisionOptions_ = java.util.Collections.unmodifiableList(hloReducePrecisionOptions_);
        }
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return xla.Xla.internal_static_xla_DebugOptions_descriptor;
    }

    @SuppressWarnings({"rawtypes"})
    protected com.google.protobuf.MapField internalGetMapField(
        int number) {
      switch (number) {
        case 500:
          return internalGetXlaBackendExtraOptions();
        default:
          throw new RuntimeException(
              "Invalid map field number: " + number);
      }
    }
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return xla.Xla.internal_static_xla_DebugOptions_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              xla.Xla.DebugOptions.class, xla.Xla.DebugOptions.Builder.class);
    }

    private int bitField0_;
    public static final int XLA_GENERATE_HLO_GRAPH_FIELD_NUMBER = 1;
    private volatile java.lang.Object xlaGenerateHloGraph_;
    /**
     * <pre>
     * HLO modules matching this regex will be dumped to a .dot file throughout
     * various stages in compilation (file names are LOG(INFO)'d). Set to ".*" to
     * dump *all* HLO modules.
     * </pre>
     *
     * <code>string xla_generate_hlo_graph = 1;</code>
     */
    public java.lang.String getXlaGenerateHloGraph() {
      java.lang.Object ref = xlaGenerateHloGraph_;
      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();
        xlaGenerateHloGraph_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * HLO modules matching this regex will be dumped to a .dot file throughout
     * various stages in compilation (file names are LOG(INFO)'d). Set to ".*" to
     * dump *all* HLO modules.
     * </pre>
     *
     * <code>string xla_generate_hlo_graph = 1;</code>
     */
    public com.google.protobuf.ByteString
        getXlaGenerateHloGraphBytes() {
      java.lang.Object ref = xlaGenerateHloGraph_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        xlaGenerateHloGraph_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int XLA_HLO_GRAPH_ADDRESSES_FIELD_NUMBER = 2;
    private boolean xlaHloGraphAddresses_;
    /**
     * <pre>
     * Show addresses of HLO ops in graph dump.
     * </pre>
     *
     * <code>bool xla_hlo_graph_addresses = 2;</code>
     */
    public boolean getXlaHloGraphAddresses() {
      return xlaHloGraphAddresses_;
    }

    public static final int XLA_HLO_GRAPH_PATH_FIELD_NUMBER = 4;
    private volatile java.lang.Object xlaHloGraphPath_;
    /**
     * <pre>
     * Path to dump HLO graphs to.
     * </pre>
     *
     * <code>string xla_hlo_graph_path = 4;</code>
     */
    public java.lang.String getXlaHloGraphPath() {
      java.lang.Object ref = xlaHloGraphPath_;
      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();
        xlaHloGraphPath_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Path to dump HLO graphs to.
     * </pre>
     *
     * <code>string xla_hlo_graph_path = 4;</code>
     */
    public com.google.protobuf.ByteString
        getXlaHloGraphPathBytes() {
      java.lang.Object ref = xlaHloGraphPath_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        xlaHloGraphPath_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int XLA_HLO_DUMP_AS_GRAPHDEF_FIELD_NUMBER = 5;
    private boolean xlaHloDumpAsGraphdef_;
    /**
     * <pre>
     * Dump HLO graphs as TensorFlow GraphDefs.
     * </pre>
     *
     * <code>bool xla_hlo_dump_as_graphdef = 5;</code>
     */
    public boolean getXlaHloDumpAsGraphdef() {
      return xlaHloDumpAsGraphdef_;
    }

    public static final int XLA_LOG_HLO_TEXT_FIELD_NUMBER = 6;
    private volatile java.lang.Object xlaLogHloText_;
    /**
     * <pre>
     * HLO modules matching this regex will be dumped to LOG(INFO). Set to ".*" to
     * dump *all* HLO modules.
     * </pre>
     *
     * <code>string xla_log_hlo_text = 6;</code>
     */
    public java.lang.String getXlaLogHloText() {
      java.lang.Object ref = xlaLogHloText_;
      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();
        xlaLogHloText_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * HLO modules matching this regex will be dumped to LOG(INFO). Set to ".*" to
     * dump *all* HLO modules.
     * </pre>
     *
     * <code>string xla_log_hlo_text = 6;</code>
     */
    public com.google.protobuf.ByteString
        getXlaLogHloTextBytes() {
      java.lang.Object ref = xlaLogHloText_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        xlaLogHloText_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int XLA_GENERATE_HLO_TEXT_TO_FIELD_NUMBER = 7;
    private volatile java.lang.Object xlaGenerateHloTextTo_;
    /**
     * <pre>
     * Dump all HLO modules as text into the provided directory path.
     * </pre>
     *
     * <code>string xla_generate_hlo_text_to = 7;</code>
     */
    public java.lang.String getXlaGenerateHloTextTo() {
      java.lang.Object ref = xlaGenerateHloTextTo_;
      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();
        xlaGenerateHloTextTo_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Dump all HLO modules as text into the provided directory path.
     * </pre>
     *
     * <code>string xla_generate_hlo_text_to = 7;</code>
     */
    public com.google.protobuf.ByteString
        getXlaGenerateHloTextToBytes() {
      java.lang.Object ref = xlaGenerateHloTextTo_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        xlaGenerateHloTextTo_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int XLA_DUMP_OPTIMIZED_HLO_PROTO_TO_FIELD_NUMBER = 8;
    private volatile java.lang.Object xlaDumpOptimizedHloProtoTo_;
    /**
     * <pre>
     * Dump Hlo after all hlo passes are executed as proto binary into this
     * directory.
     * </pre>
     *
     * <code>string xla_dump_optimized_hlo_proto_to = 8;</code>
     */
    public java.lang.String getXlaDumpOptimizedHloProtoTo() {
      java.lang.Object ref = xlaDumpOptimizedHloProtoTo_;
      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();
        xlaDumpOptimizedHloProtoTo_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Dump Hlo after all hlo passes are executed as proto binary into this
     * directory.
     * </pre>
     *
     * <code>string xla_dump_optimized_hlo_proto_to = 8;</code>
     */
    public com.google.protobuf.ByteString
        getXlaDumpOptimizedHloProtoToBytes() {
      java.lang.Object ref = xlaDumpOptimizedHloProtoTo_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        xlaDumpOptimizedHloProtoTo_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int XLA_HLO_PROFILE_FIELD_NUMBER = 9;
    private boolean xlaHloProfile_;
    /**
     * <pre>
     * Instrument the computation to collect per-HLO cycle counts.
     * </pre>
     *
     * <code>bool xla_hlo_profile = 9;</code>
     */
    public boolean getXlaHloProfile() {
      return xlaHloProfile_;
    }

    public static final int XLA_DUMP_COMPUTATIONS_TO_FIELD_NUMBER = 10;
    private volatile java.lang.Object xlaDumpComputationsTo_;
    /**
     * <pre>
     * Dumps computations that XLA executes into the provided directory path.
     * </pre>
     *
     * <code>string xla_dump_computations_to = 10;</code>
     */
    public java.lang.String getXlaDumpComputationsTo() {
      java.lang.Object ref = xlaDumpComputationsTo_;
      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();
        xlaDumpComputationsTo_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Dumps computations that XLA executes into the provided directory path.
     * </pre>
     *
     * <code>string xla_dump_computations_to = 10;</code>
     */
    public com.google.protobuf.ByteString
        getXlaDumpComputationsToBytes() {
      java.lang.Object ref = xlaDumpComputationsTo_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        xlaDumpComputationsTo_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int XLA_DUMP_EXECUTIONS_TO_FIELD_NUMBER = 11;
    private volatile java.lang.Object xlaDumpExecutionsTo_;
    /**
     * <pre>
     * Dumps parameters and results of computations that XLA executes into the
     * provided directory path.
     * </pre>
     *
     * <code>string xla_dump_executions_to = 11;</code>
     */
    public java.lang.String getXlaDumpExecutionsTo() {
      java.lang.Object ref = xlaDumpExecutionsTo_;
      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();
        xlaDumpExecutionsTo_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Dumps parameters and results of computations that XLA executes into the
     * provided directory path.
     * </pre>
     *
     * <code>string xla_dump_executions_to = 11;</code>
     */
    public com.google.protobuf.ByteString
        getXlaDumpExecutionsToBytes() {
      java.lang.Object ref = xlaDumpExecutionsTo_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        xlaDumpExecutionsTo_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int XLA_DISABLE_HLO_PASSES_FIELD_NUMBER = 30;
    private com.google.protobuf.LazyStringList xlaDisableHloPasses_;
    /**
     * <pre>
     * List of HLO passes to disable. These names must exactly match the pass
     * names as specified by the HloPassInterface::name() method.
     * </pre>
     *
     * <code>repeated string xla_disable_hlo_passes = 30;</code>
     */
    public com.google.protobuf.ProtocolStringList
        getXlaDisableHloPassesList() {
      return xlaDisableHloPasses_;
    }
    /**
     * <pre>
     * List of HLO passes to disable. These names must exactly match the pass
     * names as specified by the HloPassInterface::name() method.
     * </pre>
     *
     * <code>repeated string xla_disable_hlo_passes = 30;</code>
     */
    public int getXlaDisableHloPassesCount() {
      return xlaDisableHloPasses_.size();
    }
    /**
     * <pre>
     * List of HLO passes to disable. These names must exactly match the pass
     * names as specified by the HloPassInterface::name() method.
     * </pre>
     *
     * <code>repeated string xla_disable_hlo_passes = 30;</code>
     */
    public java.lang.String getXlaDisableHloPasses(int index) {
      return xlaDisableHloPasses_.get(index);
    }
    /**
     * <pre>
     * List of HLO passes to disable. These names must exactly match the pass
     * names as specified by the HloPassInterface::name() method.
     * </pre>
     *
     * <code>repeated string xla_disable_hlo_passes = 30;</code>
     */
    public com.google.protobuf.ByteString
        getXlaDisableHloPassesBytes(int index) {
      return xlaDisableHloPasses_.getByteString(index);
    }

    public static final int XLA_BACKEND_OPTIMIZATION_LEVEL_FIELD_NUMBER = 31;
    private int xlaBackendOptimizationLevel_;
    /**
     * <pre>
     * Numerical optimization level for the XLA compiler backend; the specific
     * interpretation of this value is left to the backends.
     * </pre>
     *
     * <code>int32 xla_backend_optimization_level = 31;</code>
     */
    public int getXlaBackendOptimizationLevel() {
      return xlaBackendOptimizationLevel_;
    }

    public static final int XLA_ENABLE_FAST_MATH_FIELD_NUMBER = 32;
    private boolean xlaEnableFastMath_;
    /**
     * <pre>
     * When true, "unsafe" mathematical optimizations are enabled. These
     * transformations include but are not limited to:
     *  - Reducing the precision of operations (e.g. using an approximate sin
     *    function, or transforming x/y into x * (1/y)).
     *  - Assuming that operations never produce or consume NaN or +/- Inf.
     *  - Assuming that +0 and -0 are indistinguishable.
     * </pre>
     *
     * <code>bool xla_enable_fast_math = 32;</code>
     */
    public boolean getXlaEnableFastMath() {
      return xlaEnableFastMath_;
    }

    public static final int XLA_EMBED_IR_IN_EXECUTABLE_FIELD_NUMBER = 33;
    private boolean xlaEmbedIrInExecutable_;
    /**
     * <pre>
     * Embed the compiler IR as a string in the executable.
     * </pre>
     *
     * <code>bool xla_embed_ir_in_executable = 33;</code>
     */
    public boolean getXlaEmbedIrInExecutable() {
      return xlaEmbedIrInExecutable_;
    }

    public static final int XLA_DUMP_IR_TO_FIELD_NUMBER = 34;
    private volatile java.lang.Object xlaDumpIrTo_;
    /**
     * <pre>
     * Dump the compiler IR into this directory as individual files.
     * </pre>
     *
     * <code>string xla_dump_ir_to = 34;</code>
     */
    public java.lang.String getXlaDumpIrTo() {
      java.lang.Object ref = xlaDumpIrTo_;
      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();
        xlaDumpIrTo_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Dump the compiler IR into this directory as individual files.
     * </pre>
     *
     * <code>string xla_dump_ir_to = 34;</code>
     */
    public com.google.protobuf.ByteString
        getXlaDumpIrToBytes() {
      java.lang.Object ref = xlaDumpIrTo_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        xlaDumpIrTo_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int XLA_ELIMINATE_HLO_IMPLICIT_BROADCAST_FIELD_NUMBER = 35;
    private boolean xlaEliminateHloImplicitBroadcast_;
    /**
     * <pre>
     * Eliminate implicit broadcasts when lowering user computations to HLO
     * instructions; use explicit broadcast instead.
     * </pre>
     *
     * <code>bool xla_eliminate_hlo_implicit_broadcast = 35;</code>
     */
    public boolean getXlaEliminateHloImplicitBroadcast() {
      return xlaEliminateHloImplicitBroadcast_;
    }

    public static final int XLA_CPU_MULTI_THREAD_EIGEN_FIELD_NUMBER = 60;
    private boolean xlaCpuMultiThreadEigen_;
    /**
     * <pre>
     * When generating calls to Eigen in the CPU backend, use multi-threaded Eigen
     * mode.
     * </pre>
     *
     * <code>bool xla_cpu_multi_thread_eigen = 60;</code>
     */
    public boolean getXlaCpuMultiThreadEigen() {
      return xlaCpuMultiThreadEigen_;
    }

    public static final int XLA_GPU_CUDA_DATA_DIR_FIELD_NUMBER = 61;
    private volatile java.lang.Object xlaGpuCudaDataDir_;
    /**
     * <pre>
     * Path to directory with cuda/ptx tools and libraries.
     * </pre>
     *
     * <code>string xla_gpu_cuda_data_dir = 61;</code>
     */
    public java.lang.String getXlaGpuCudaDataDir() {
      java.lang.Object ref = xlaGpuCudaDataDir_;
      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();
        xlaGpuCudaDataDir_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Path to directory with cuda/ptx tools and libraries.
     * </pre>
     *
     * <code>string xla_gpu_cuda_data_dir = 61;</code>
     */
    public com.google.protobuf.ByteString
        getXlaGpuCudaDataDirBytes() {
      java.lang.Object ref = xlaGpuCudaDataDir_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        xlaGpuCudaDataDir_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int XLA_GPU_FTZ_FIELD_NUMBER = 62;
    private boolean xlaGpuFtz_;
    /**
     * <pre>
     * Enable flush-to-zero semantics in the GPU backend.
     * </pre>
     *
     * <code>bool xla_gpu_ftz = 62;</code>
     */
    public boolean getXlaGpuFtz() {
      return xlaGpuFtz_;
    }

    public static final int XLA_GPU_DISABLE_MULTI_STREAMING_FIELD_NUMBER = 63;
    private boolean xlaGpuDisableMultiStreaming_;
    /**
     * <pre>
     * Disable multi-streaming in the GPU backend.
     * </pre>
     *
     * <code>bool xla_gpu_disable_multi_streaming = 63;</code>
     */
    public boolean getXlaGpuDisableMultiStreaming() {
      return xlaGpuDisableMultiStreaming_;
    }

    public static final int XLA_LLVM_ENABLE_ALIAS_SCOPE_METADATA_FIELD_NUMBER = 70;
    private boolean xlaLlvmEnableAliasScopeMetadata_;
    /**
     * <pre>
     * If true, in LLVM-based backends, emit !alias.scope metadata in
     * generated IR.
     * </pre>
     *
     * <code>bool xla_llvm_enable_alias_scope_metadata = 70;</code>
     */
    public boolean getXlaLlvmEnableAliasScopeMetadata() {
      return xlaLlvmEnableAliasScopeMetadata_;
    }

    public static final int XLA_LLVM_ENABLE_NOALIAS_METADATA_FIELD_NUMBER = 71;
    private boolean xlaLlvmEnableNoaliasMetadata_;
    /**
     * <pre>
     * If true, in LLVM-based backends, emit !noalias metadata in the
     * generated IR.
     * </pre>
     *
     * <code>bool xla_llvm_enable_noalias_metadata = 71;</code>
     */
    public boolean getXlaLlvmEnableNoaliasMetadata() {
      return xlaLlvmEnableNoaliasMetadata_;
    }

    public static final int XLA_LLVM_ENABLE_INVARIANT_LOAD_METADATA_FIELD_NUMBER = 72;
    private boolean xlaLlvmEnableInvariantLoadMetadata_;
    /**
     * <pre>
     * If true, in LLVM-based backends, emit !invariant.load metadata in
     * the generated IR.
     * </pre>
     *
     * <code>bool xla_llvm_enable_invariant_load_metadata = 72;</code>
     */
    public boolean getXlaLlvmEnableInvariantLoadMetadata() {
      return xlaLlvmEnableInvariantLoadMetadata_;
    }

    public static final int XLA_LLVM_DISABLE_EXPENSIVE_PASSES_FIELD_NUMBER = 73;
    private boolean xlaLlvmDisableExpensivePasses_;
    /**
     * <pre>
     * If true, a set of expensive LLVM optimization passes will not be run.
     * </pre>
     *
     * <code>bool xla_llvm_disable_expensive_passes = 73;</code>
     */
    public boolean getXlaLlvmDisableExpensivePasses() {
      return xlaLlvmDisableExpensivePasses_;
    }

    public static final int HLO_REDUCE_PRECISION_OPTIONS_FIELD_NUMBER = 80;
    private java.util.List<xla.Xla.HloReducePrecisionOptions> hloReducePrecisionOptions_;
    /**
     * <pre>
     * Options for inserting reduce-precision operations for numerical
     * experimentation.  This is a repeated field, as we may want to have
     * multiple passes with different parameters.
     * </pre>
     *
     * <code>repeated .xla.HloReducePrecisionOptions hlo_reduce_precision_options = 80;</code>
     */
    public java.util.List<xla.Xla.HloReducePrecisionOptions> getHloReducePrecisionOptionsList() {
      return hloReducePrecisionOptions_;
    }
    /**
     * <pre>
     * Options for inserting reduce-precision operations for numerical
     * experimentation.  This is a repeated field, as we may want to have
     * multiple passes with different parameters.
     * </pre>
     *
     * <code>repeated .xla.HloReducePrecisionOptions hlo_reduce_precision_options = 80;</code>
     */
    public java.util.List<? extends xla.Xla.HloReducePrecisionOptionsOrBuilder> 
        getHloReducePrecisionOptionsOrBuilderList() {
      return hloReducePrecisionOptions_;
    }
    /**
     * <pre>
     * Options for inserting reduce-precision operations for numerical
     * experimentation.  This is a repeated field, as we may want to have
     * multiple passes with different parameters.
     * </pre>
     *
     * <code>repeated .xla.HloReducePrecisionOptions hlo_reduce_precision_options = 80;</code>
     */
    public int getHloReducePrecisionOptionsCount() {
      return hloReducePrecisionOptions_.size();
    }
    /**
     * <pre>
     * Options for inserting reduce-precision operations for numerical
     * experimentation.  This is a repeated field, as we may want to have
     * multiple passes with different parameters.
     * </pre>
     *
     * <code>repeated .xla.HloReducePrecisionOptions hlo_reduce_precision_options = 80;</code>
     */
    public xla.Xla.HloReducePrecisionOptions getHloReducePrecisionOptions(int index) {
      return hloReducePrecisionOptions_.get(index);
    }
    /**
     * <pre>
     * Options for inserting reduce-precision operations for numerical
     * experimentation.  This is a repeated field, as we may want to have
     * multiple passes with different parameters.
     * </pre>
     *
     * <code>repeated .xla.HloReducePrecisionOptions hlo_reduce_precision_options = 80;</code>
     */
    public xla.Xla.HloReducePrecisionOptionsOrBuilder getHloReducePrecisionOptionsOrBuilder(
        int index) {
      return hloReducePrecisionOptions_.get(index);
    }

    public static final int XLA_TEST_ALL_OUTPUT_LAYOUTS_FIELD_NUMBER = 90;
    private boolean xlaTestAllOutputLayouts_;
    /**
     * <pre>
     * This is used by ClientLibraryTestBase::ComputeAndCompare*. If true, the
     * computation will run n! times with all permunations of layouts for the
     * output shape in rank n. For example, with a 3D shape, all permutations of
     * the set {0, 1, 2} are tried.
     * </pre>
     *
     * <code>bool xla_test_all_output_layouts = 90;</code>
     */
    public boolean getXlaTestAllOutputLayouts() {
      return xlaTestAllOutputLayouts_;
    }

    public static final int XLA_TEST_ALL_INPUT_LAYOUTS_FIELD_NUMBER = 91;
    private boolean xlaTestAllInputLayouts_;
    /**
     * <pre>
     * This is used by ClientLibraryTestBase::ComputeAndCompare*. If true, the
     * computation will run for all permunations of layouts of all input
     * arguments. For example, with 2 input arguments in 2D and 4D shapes, the
     * computation will run 2! * 4! times.
     * </pre>
     *
     * <code>bool xla_test_all_input_layouts = 91;</code>
     */
    public boolean getXlaTestAllInputLayouts() {
      return xlaTestAllInputLayouts_;
    }

    public static final int XLA_HLO_GRAPH_SHARDING_COLOR_FIELD_NUMBER = 92;
    private boolean xlaHloGraphShardingColor_;
    /**
     * <pre>
     * Assign colors based on sharding information when generating the Graphviz
     * HLO graph.
     * </pre>
     *
     * <code>bool xla_hlo_graph_sharding_color = 92;</code>
     */
    public boolean getXlaHloGraphShardingColor() {
      return xlaHloGraphShardingColor_;
    }

    public static final int XLA_HLO_TFGRAPH_DEVICE_SCOPES_FIELD_NUMBER = 93;
    private boolean xlaHloTfgraphDeviceScopes_;
    /**
     * <pre>
     * Prefix the name scopes of the TF graph exports with "devX" device
     * assignments, if available.
     * </pre>
     *
     * <code>bool xla_hlo_tfgraph_device_scopes = 93;</code>
     */
    public boolean getXlaHloTfgraphDeviceScopes() {
      return xlaHloTfgraphDeviceScopes_;
    }

    public static final int XLA_GPU_USE_CUDNN_BATCHNORM_FIELD_NUMBER = 94;
    private boolean xlaGpuUseCudnnBatchnorm_;
    /**
     * <pre>
     * If true, the GPU backend is free to use cudnn for HLO batch normalization
     * ops.
     * </pre>
     *
     * <code>bool xla_gpu_use_cudnn_batchnorm = 94;</code>
     */
    public boolean getXlaGpuUseCudnnBatchnorm() {
      return xlaGpuUseCudnnBatchnorm_;
    }

    public static final int XLA_DUMP_UNOPTIMIZED_HLO_PROTO_TO_FIELD_NUMBER = 95;
    private volatile java.lang.Object xlaDumpUnoptimizedHloProtoTo_;
    /**
     * <pre>
     * Dump HLO before any hlo passes are executed as proto binary into this
     * directory.
     * </pre>
     *
     * <code>string xla_dump_unoptimized_hlo_proto_to = 95;</code>
     */
    public java.lang.String getXlaDumpUnoptimizedHloProtoTo() {
      java.lang.Object ref = xlaDumpUnoptimizedHloProtoTo_;
      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();
        xlaDumpUnoptimizedHloProtoTo_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Dump HLO before any hlo passes are executed as proto binary into this
     * directory.
     * </pre>
     *
     * <code>string xla_dump_unoptimized_hlo_proto_to = 95;</code>
     */
    public com.google.protobuf.ByteString
        getXlaDumpUnoptimizedHloProtoToBytes() {
      java.lang.Object ref = xlaDumpUnoptimizedHloProtoTo_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        xlaDumpUnoptimizedHloProtoTo_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int XLA_DUMP_PER_PASS_HLO_PROTO_TO_FIELD_NUMBER = 96;
    private volatile java.lang.Object xlaDumpPerPassHloProtoTo_;
    /**
     * <pre>
     * Dump HLO after each pass as an HloProto in binary file format into this
     * directory.
     * </pre>
     *
     * <code>string xla_dump_per_pass_hlo_proto_to = 96;</code>
     */
    public java.lang.String getXlaDumpPerPassHloProtoTo() {
      java.lang.Object ref = xlaDumpPerPassHloProtoTo_;
      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();
        xlaDumpPerPassHloProtoTo_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Dump HLO after each pass as an HloProto in binary file format into this
     * directory.
     * </pre>
     *
     * <code>string xla_dump_per_pass_hlo_proto_to = 96;</code>
     */
    public com.google.protobuf.ByteString
        getXlaDumpPerPassHloProtoToBytes() {
      java.lang.Object ref = xlaDumpPerPassHloProtoTo_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        xlaDumpPerPassHloProtoTo_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int XLA_CPU_USE_MKL_DNN_FIELD_NUMBER = 97;
    private boolean xlaCpuUseMklDnn_;
    /**
     * <pre>
     * Generate calls to MKL-DNN in the CPU backend.
     * </pre>
     *
     * <code>bool xla_cpu_use_mkl_dnn = 97;</code>
     */
    public boolean getXlaCpuUseMklDnn() {
      return xlaCpuUseMklDnn_;
    }

    public static final int XLA_BACKEND_EXTRA_OPTIONS_FIELD_NUMBER = 500;
    private static final class XlaBackendExtraOptionsDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<
          java.lang.String, java.lang.String> defaultEntry =
              com.google.protobuf.MapEntry
              .<java.lang.String, java.lang.String>newDefaultInstance(
                  xla.Xla.internal_static_xla_DebugOptions_XlaBackendExtraOptionsEntry_descriptor, 
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "",
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "");
    }
    private com.google.protobuf.MapField<
        java.lang.String, java.lang.String> xlaBackendExtraOptions_;
    private com.google.protobuf.MapField<java.lang.String, java.lang.String>
    internalGetXlaBackendExtraOptions() {
      if (xlaBackendExtraOptions_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            XlaBackendExtraOptionsDefaultEntryHolder.defaultEntry);
      }
      return xlaBackendExtraOptions_;
    }

    public int getXlaBackendExtraOptionsCount() {
      return internalGetXlaBackendExtraOptions().getMap().size();
    }
    /**
     * <pre>
     * Extra options to pass to the compilation backend; specific interpretation
     * of these values is left to the backend.
     * </pre>
     *
     * <code>map&lt;string, string&gt; xla_backend_extra_options = 500;</code>
     */

    public boolean containsXlaBackendExtraOptions(
        java.lang.String key) {
      if (key == null) { throw new java.lang.NullPointerException(); }
      return internalGetXlaBackendExtraOptions().getMap().containsKey(key);
    }
    /**
     * Use {@link #getXlaBackendExtraOptionsMap()} instead.
     */
    @java.lang.Deprecated
    public java.util.Map<java.lang.String, java.lang.String> getXlaBackendExtraOptions() {
      return getXlaBackendExtraOptionsMap();
    }
    /**
     * <pre>
     * Extra options to pass to the compilation backend; specific interpretation
     * of these values is left to the backend.
     * </pre>
     *
     * <code>map&lt;string, string&gt; xla_backend_extra_options = 500;</code>
     */

    public java.util.Map<java.lang.String, java.lang.String> getXlaBackendExtraOptionsMap() {
      return internalGetXlaBackendExtraOptions().getMap();
    }
    /**
     * <pre>
     * Extra options to pass to the compilation backend; specific interpretation
     * of these values is left to the backend.
     * </pre>
     *
     * <code>map&lt;string, string&gt; xla_backend_extra_options = 500;</code>
     */

    public java.lang.String getXlaBackendExtraOptionsOrDefault(
        java.lang.String key,
        java.lang.String defaultValue) {
      if (key == null) { throw new java.lang.NullPointerException(); }
      java.util.Map<java.lang.String, java.lang.String> map =
          internalGetXlaBackendExtraOptions().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     * <pre>
     * Extra options to pass to the compilation backend; specific interpretation
     * of these values is left to the backend.
     * </pre>
     *
     * <code>map&lt;string, string&gt; xla_backend_extra_options = 500;</code>
     */

    public java.lang.String getXlaBackendExtraOptionsOrThrow(
        java.lang.String key) {
      if (key == null) { throw new java.lang.NullPointerException(); }
      java.util.Map<java.lang.String, java.lang.String> map =
          internalGetXlaBackendExtraOptions().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    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 (!getXlaGenerateHloGraphBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, xlaGenerateHloGraph_);
      }
      if (xlaHloGraphAddresses_ != false) {
        output.writeBool(2, xlaHloGraphAddresses_);
      }
      if (!getXlaHloGraphPathBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, xlaHloGraphPath_);
      }
      if (xlaHloDumpAsGraphdef_ != false) {
        output.writeBool(5, xlaHloDumpAsGraphdef_);
      }
      if (!getXlaLogHloTextBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 6, xlaLogHloText_);
      }
      if (!getXlaGenerateHloTextToBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 7, xlaGenerateHloTextTo_);
      }
      if (!getXlaDumpOptimizedHloProtoToBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 8, xlaDumpOptimizedHloProtoTo_);
      }
      if (xlaHloProfile_ != false) {
        output.writeBool(9, xlaHloProfile_);
      }
      if (!getXlaDumpComputationsToBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 10, xlaDumpComputationsTo_);
      }
      if (!getXlaDumpExecutionsToBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 11, xlaDumpExecutionsTo_);
      }
      for (int i = 0; i < xlaDisableHloPasses_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 30, xlaDisableHloPasses_.getRaw(i));
      }
      if (xlaBackendOptimizationLevel_ != 0) {
        output.writeInt32(31, xlaBackendOptimizationLevel_);
      }
      if (xlaEnableFastMath_ != false) {
        output.writeBool(32, xlaEnableFastMath_);
      }
      if (xlaEmbedIrInExecutable_ != false) {
        output.writeBool(33, xlaEmbedIrInExecutable_);
      }
      if (!getXlaDumpIrToBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 34, xlaDumpIrTo_);
      }
      if (xlaEliminateHloImplicitBroadcast_ != false) {
        output.writeBool(35, xlaEliminateHloImplicitBroadcast_);
      }
      if (xlaCpuMultiThreadEigen_ != false) {
        output.writeBool(60, xlaCpuMultiThreadEigen_);
      }
      if (!getXlaGpuCudaDataDirBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 61, xlaGpuCudaDataDir_);
      }
      if (xlaGpuFtz_ != false) {
        output.writeBool(62, xlaGpuFtz_);
      }
      if (xlaGpuDisableMultiStreaming_ != false) {
        output.writeBool(63, xlaGpuDisableMultiStreaming_);
      }
      if (xlaLlvmEnableAliasScopeMetadata_ != false) {
        output.writeBool(70, xlaLlvmEnableAliasScopeMetadata_);
      }
      if (xlaLlvmEnableNoaliasMetadata_ != false) {
        output.writeBool(71, xlaLlvmEnableNoaliasMetadata_);
      }
      if (xlaLlvmEnableInvariantLoadMetadata_ != false) {
        output.writeBool(72, xlaLlvmEnableInvariantLoadMetadata_);
      }
      if (xlaLlvmDisableExpensivePasses_ != false) {
        output.writeBool(73, xlaLlvmDisableExpensivePasses_);
      }
      for (int i = 0; i < hloReducePrecisionOptions_.size(); i++) {
        output.writeMessage(80, hloReducePrecisionOptions_.get(i));
      }
      if (xlaTestAllOutputLayouts_ != false) {
        output.writeBool(90, xlaTestAllOutputLayouts_);
      }
      if (xlaTestAllInputLayouts_ != false) {
        output.writeBool(91, xlaTestAllInputLayouts_);
      }
      if (xlaHloGraphShardingColor_ != false) {
        output.writeBool(92, xlaHloGraphShardingColor_);
      }
      if (xlaHloTfgraphDeviceScopes_ != false) {
        output.writeBool(93, xlaHloTfgraphDeviceScopes_);
      }
      if (xlaGpuUseCudnnBatchnorm_ != false) {
        output.writeBool(94, xlaGpuUseCudnnBatchnorm_);
      }
      if (!getXlaDumpUnoptimizedHloProtoToBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 95, xlaDumpUnoptimizedHloProtoTo_);
      }
      if (!getXlaDumpPerPassHloProtoToBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 96, xlaDumpPerPassHloProtoTo_);
      }
      if (xlaCpuUseMklDnn_ != false) {
        output.writeBool(97, xlaCpuUseMklDnn_);
      }
      com.google.protobuf.GeneratedMessageV3
        .serializeStringMapTo(
          output,
          internalGetXlaBackendExtraOptions(),
          XlaBackendExtraOptionsDefaultEntryHolder.defaultEntry,
          500);
    }

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

      size = 0;
      if (!getXlaGenerateHloGraphBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, xlaGenerateHloGraph_);
      }
      if (xlaHloGraphAddresses_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(2, xlaHloGraphAddresses_);
      }
      if (!getXlaHloGraphPathBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, xlaHloGraphPath_);
      }
      if (xlaHloDumpAsGraphdef_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(5, xlaHloDumpAsGraphdef_);
      }
      if (!getXlaLogHloTextBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(6, xlaLogHloText_);
      }
      if (!getXlaGenerateHloTextToBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(7, xlaGenerateHloTextTo_);
      }
      if (!getXlaDumpOptimizedHloProtoToBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(8, xlaDumpOptimizedHloProtoTo_);
      }
      if (xlaHloProfile_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(9, xlaHloProfile_);
      }
      if (!getXlaDumpComputationsToBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(10, xlaDumpComputationsTo_);
      }
      if (!getXlaDumpExecutionsToBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(11, xlaDumpExecutionsTo_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < xlaDisableHloPasses_.size(); i++) {
          dataSize += computeStringSizeNoTag(xlaDisableHloPasses_.getRaw(i));
        }
        size += dataSize;
        size += 2 * getXlaDisableHloPassesList().size();
      }
      if (xlaBackendOptimizationLevel_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(31, xlaBackendOptimizationLevel_);
      }
      if (xlaEnableFastMath_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(32, xlaEnableFastMath_);
      }
      if (xlaEmbedIrInExecutable_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(33, xlaEmbedIrInExecutable_);
      }
      if (!getXlaDumpIrToBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(34, xlaDumpIrTo_);
      }
      if (xlaEliminateHloImplicitBroadcast_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(35, xlaEliminateHloImplicitBroadcast_);
      }
      if (xlaCpuMultiThreadEigen_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(60, xlaCpuMultiThreadEigen_);
      }
      if (!getXlaGpuCudaDataDirBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(61, xlaGpuCudaDataDir_);
      }
      if (xlaGpuFtz_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(62, xlaGpuFtz_);
      }
      if (xlaGpuDisableMultiStreaming_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(63, xlaGpuDisableMultiStreaming_);
      }
      if (xlaLlvmEnableAliasScopeMetadata_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(70, xlaLlvmEnableAliasScopeMetadata_);
      }
      if (xlaLlvmEnableNoaliasMetadata_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(71, xlaLlvmEnableNoaliasMetadata_);
      }
      if (xlaLlvmEnableInvariantLoadMetadata_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(72, xlaLlvmEnableInvariantLoadMetadata_);
      }
      if (xlaLlvmDisableExpensivePasses_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(73, xlaLlvmDisableExpensivePasses_);
      }
      for (int i = 0; i < hloReducePrecisionOptions_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(80, hloReducePrecisionOptions_.get(i));
      }
      if (xlaTestAllOutputLayouts_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(90, xlaTestAllOutputLayouts_);
      }
      if (xlaTestAllInputLayouts_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(91, xlaTestAllInputLayouts_);
      }
      if (xlaHloGraphShardingColor_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(92, xlaHloGraphShardingColor_);
      }
      if (xlaHloTfgraphDeviceScopes_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(93, xlaHloTfgraphDeviceScopes_);
      }
      if (xlaGpuUseCudnnBatchnorm_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(94, xlaGpuUseCudnnBatchnorm_);
      }
      if (!getXlaDumpUnoptimizedHloProtoToBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(95, xlaDumpUnoptimizedHloProtoTo_);
      }
      if (!getXlaDumpPerPassHloProtoToBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(96, xlaDumpPerPassHloProtoTo_);
      }
      if (xlaCpuUseMklDnn_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(97, xlaCpuUseMklDnn_);
      }
      for (java.util.Map.Entry<java.lang.String, java.lang.String> entry
           : internalGetXlaBackendExtraOptions().getMap().entrySet()) {
        com.google.protobuf.MapEntry<java.lang.String, java.lang.String>
        xlaBackendExtraOptions__ = XlaBackendExtraOptionsDefaultEntryHolder.defaultEntry.newBuilderForType()
            .setKey(entry.getKey())
            .setValue(entry.getValue())
            .build();
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(500, xlaBackendExtraOptions__);
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof xla.Xla.DebugOptions)) {
        return super.equals(obj);
      }
      xla.Xla.DebugOptions other = (xla.Xla.DebugOptions) obj;

      boolean result = true;
      result = result && getXlaGenerateHloGraph()
          .equals(other.getXlaGenerateHloGraph());
      result = result && (getXlaHloGraphAddresses()
          == other.getXlaHloGraphAddresses());
      result = result && getXlaHloGraphPath()
          .equals(other.getXlaHloGraphPath());
      result = result && (getXlaHloDumpAsGraphdef()
          == other.getXlaHloDumpAsGraphdef());
      result = result && getXlaLogHloText()
          .equals(other.getXlaLogHloText());
      result = result && getXlaGenerateHloTextTo()
          .equals(other.getXlaGenerateHloTextTo());
      result = result && getXlaDumpOptimizedHloProtoTo()
          .equals(other.getXlaDumpOptimizedHloProtoTo());
      result = result && (getXlaHloProfile()
          == other.getXlaHloProfile());
      result = result && getXlaDumpComputationsTo()
          .equals(other.getXlaDumpComputationsTo());
      result = result && getXlaDumpExecutionsTo()
          .equals(other.getXlaDumpExecutionsTo());
      result = result && getXlaDisableHloPassesList()
          .equals(other.getXlaDisableHloPassesList());
      result = result && (getXlaBackendOptimizationLevel()
          == other.getXlaBackendOptimizationLevel());
      result = result && (getXlaEnableFastMath()
          == other.getXlaEnableFastMath());
      result = result && (getXlaEmbedIrInExecutable()
          == other.getXlaEmbedIrInExecutable());
      result = result && getXlaDumpIrTo()
          .equals(other.getXlaDumpIrTo());
      result = result && (getXlaEliminateHloImplicitBroadcast()
          == other.getXlaEliminateHloImplicitBroadcast());
      result = result && (getXlaCpuMultiThreadEigen()
          == other.getXlaCpuMultiThreadEigen());
      result = result && getXlaGpuCudaDataDir()
          .equals(other.getXlaGpuCudaDataDir());
      result = result && (getXlaGpuFtz()
          == other.getXlaGpuFtz());
      result = result && (getXlaGpuDisableMultiStreaming()
          == other.getXlaGpuDisableMultiStreaming());
      result = result && (getXlaLlvmEnableAliasScopeMetadata()
          == other.getXlaLlvmEnableAliasScopeMetadata());
      result = result && (getXlaLlvmEnableNoaliasMetadata()
          == other.getXlaLlvmEnableNoaliasMetadata());
      result = result && (getXlaLlvmEnableInvariantLoadMetadata()
          == other.getXlaLlvmEnableInvariantLoadMetadata());
      result = result && (getXlaLlvmDisableExpensivePasses()
          == other.getXlaLlvmDisableExpensivePasses());
      result = result && getHloReducePrecisionOptionsList()
          .equals(other.getHloReducePrecisionOptionsList());
      result = result && (getXlaTestAllOutputLayouts()
          == other.getXlaTestAllOutputLayouts());
      result = result && (getXlaTestAllInputLayouts()
          == other.getXlaTestAllInputLayouts());
      result = result && (getXlaHloGraphShardingColor()
          == other.getXlaHloGraphShardingColor());
      result = result && (getXlaHloTfgraphDeviceScopes()
          == other.getXlaHloTfgraphDeviceScopes());
      result = result && (getXlaGpuUseCudnnBatchnorm()
          == other.getXlaGpuUseCudnnBatchnorm());
      result = result && getXlaDumpUnoptimizedHloProtoTo()
          .equals(other.getXlaDumpUnoptimizedHloProtoTo());
      result = result && getXlaDumpPerPassHloProtoTo()
          .equals(other.getXlaDumpPerPassHloProtoTo());
      result = result && (getXlaCpuUseMklDnn()
          == other.getXlaCpuUseMklDnn());
      result = result && internalGetXlaBackendExtraOptions().equals(
          other.internalGetXlaBackendExtraOptions());
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + XLA_GENERATE_HLO_GRAPH_FIELD_NUMBER;
      hash = (53 * hash) + getXlaGenerateHloGraph().hashCode();
      hash = (37 * hash) + XLA_HLO_GRAPH_ADDRESSES_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getXlaHloGraphAddresses());
      hash = (37 * hash) + XLA_HLO_GRAPH_PATH_FIELD_NUMBER;
      hash = (53 * hash) + getXlaHloGraphPath().hashCode();
      hash = (37 * hash) + XLA_HLO_DUMP_AS_GRAPHDEF_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getXlaHloDumpAsGraphdef());
      hash = (37 * hash) + XLA_LOG_HLO_TEXT_FIELD_NUMBER;
      hash = (53 * hash) + getXlaLogHloText().hashCode();
      hash = (37 * hash) + XLA_GENERATE_HLO_TEXT_TO_FIELD_NUMBER;
      hash = (53 * hash) + getXlaGenerateHloTextTo().hashCode();
      hash = (37 * hash) + XLA_DUMP_OPTIMIZED_HLO_PROTO_TO_FIELD_NUMBER;
      hash = (53 * hash) + getXlaDumpOptimizedHloProtoTo().hashCode();
      hash = (37 * hash) + XLA_HLO_PROFILE_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getXlaHloProfile());
      hash = (37 * hash) + XLA_DUMP_COMPUTATIONS_TO_FIELD_NUMBER;
      hash = (53 * hash) + getXlaDumpComputationsTo().hashCode();
      hash = (37 * hash) + XLA_DUMP_EXECUTIONS_TO_FIELD_NUMBER;
      hash = (53 * hash) + getXlaDumpExecutionsTo().hashCode();
      if (getXlaDisableHloPassesCount() > 0) {
        hash = (37 * hash) + XLA_DISABLE_HLO_PASSES_FIELD_NUMBER;
        hash = (53 * hash) + getXlaDisableHloPassesList().hashCode();
      }
      hash = (37 * hash) + XLA_BACKEND_OPTIMIZATION_LEVEL_FIELD_NUMBER;
      hash = (53 * hash) + getXlaBackendOptimizationLevel();
      hash = (37 * hash) + XLA_ENABLE_FAST_MATH_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getXlaEnableFastMath());
      hash = (37 * hash) + XLA_EMBED_IR_IN_EXECUTABLE_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getXlaEmbedIrInExecutable());
      hash = (37 * hash) + XLA_DUMP_IR_TO_FIELD_NUMBER;
      hash = (53 * hash) + getXlaDumpIrTo().hashCode();
      hash = (37 * hash) + XLA_ELIMINATE_HLO_IMPLICIT_BROADCAST_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getXlaEliminateHloImplicitBroadcast());
      hash = (37 * hash) + XLA_CPU_MULTI_THREAD_EIGEN_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getXlaCpuMultiThreadEigen());
      hash = (37 * hash) + XLA_GPU_CUDA_DATA_DIR_FIELD_NUMBER;
      hash = (53 * hash) + getXlaGpuCudaDataDir().hashCode();
      hash = (37 * hash) + XLA_GPU_FTZ_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getXlaGpuFtz());
      hash = (37 * hash) + XLA_GPU_DISABLE_MULTI_STREAMING_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getXlaGpuDisableMultiStreaming());
      hash = (37 * hash) + XLA_LLVM_ENABLE_ALIAS_SCOPE_METADATA_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getXlaLlvmEnableAliasScopeMetadata());
      hash = (37 * hash) + XLA_LLVM_ENABLE_NOALIAS_METADATA_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getXlaLlvmEnableNoaliasMetadata());
      hash = (37 * hash) + XLA_LLVM_ENABLE_INVARIANT_LOAD_METADATA_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getXlaLlvmEnableInvariantLoadMetadata());
      hash = (37 * hash) + XLA_LLVM_DISABLE_EXPENSIVE_PASSES_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getXlaLlvmDisableExpensivePasses());
      if (getHloReducePrecisionOptionsCount() > 0) {
        hash = (37 * hash) + HLO_REDUCE_PRECISION_OPTIONS_FIELD_NUMBER;
        hash = (53 * hash) + getHloReducePrecisionOptionsList().hashCode();
      }
      hash = (37 * hash) + XLA_TEST_ALL_OUTPUT_LAYOUTS_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getXlaTestAllOutputLayouts());
      hash = (37 * hash) + XLA_TEST_ALL_INPUT_LAYOUTS_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getXlaTestAllInputLayouts());
      hash = (37 * hash) + XLA_HLO_GRAPH_SHARDING_COLOR_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getXlaHloGraphShardingColor());
      hash = (37 * hash) + XLA_HLO_TFGRAPH_DEVICE_SCOPES_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getXlaHloTfgraphDeviceScopes());
      hash = (37 * hash) + XLA_GPU_USE_CUDNN_BATCHNORM_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getXlaGpuUseCudnnBatchnorm());
      hash = (37 * hash) + XLA_DUMP_UNOPTIMIZED_HLO_PROTO_TO_FIELD_NUMBER;
      hash = (53 * hash) + getXlaDumpUnoptimizedHloProtoTo().hashCode();
      hash = (37 * hash) + XLA_DUMP_PER_PASS_HLO_PROTO_TO_FIELD_NUMBER;
      hash = (53 * hash) + getXlaDumpPerPassHloProtoTo().hashCode();
      hash = (37 * hash) + XLA_CPU_USE_MKL_DNN_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getXlaCpuUseMklDnn());
      if (!internalGetXlaBackendExtraOptions().getMap().isEmpty()) {
        hash = (37 * hash) + XLA_BACKEND_EXTRA_OPTIONS_FIELD_NUMBER;
        hash = (53 * hash) + internalGetXlaBackendExtraOptions().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static xla.Xla.DebugOptions parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.DebugOptions parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.DebugOptions parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.DebugOptions parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.DebugOptions parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.DebugOptions 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 xla.Xla.DebugOptions parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static xla.Xla.DebugOptions 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 xla.Xla.DebugOptions parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.DebugOptions 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(xla.Xla.DebugOptions 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;
    }
    /**
     * <pre>
     * Debugging options for XLA. These options may change at any time - there are
     * no guarantees about backward or forward compatibility for these fields.
     * </pre>
     *
     * Protobuf type {@code xla.DebugOptions}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:xla.DebugOptions)
        xla.Xla.DebugOptionsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return xla.Xla.internal_static_xla_DebugOptions_descriptor;
      }

      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapField internalGetMapField(
          int number) {
        switch (number) {
          case 500:
            return internalGetXlaBackendExtraOptions();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapField internalGetMutableMapField(
          int number) {
        switch (number) {
          case 500:
            return internalGetMutableXlaBackendExtraOptions();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return xla.Xla.internal_static_xla_DebugOptions_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                xla.Xla.DebugOptions.class, xla.Xla.DebugOptions.Builder.class);
      }

      // Construct using xla.Xla.DebugOptions.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

        xlaHloGraphAddresses_ = false;

        xlaHloGraphPath_ = "";

        xlaHloDumpAsGraphdef_ = false;

        xlaLogHloText_ = "";

        xlaGenerateHloTextTo_ = "";

        xlaDumpOptimizedHloProtoTo_ = "";

        xlaHloProfile_ = false;

        xlaDumpComputationsTo_ = "";

        xlaDumpExecutionsTo_ = "";

        xlaDisableHloPasses_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000400);
        xlaBackendOptimizationLevel_ = 0;

        xlaEnableFastMath_ = false;

        xlaEmbedIrInExecutable_ = false;

        xlaDumpIrTo_ = "";

        xlaEliminateHloImplicitBroadcast_ = false;

        xlaCpuMultiThreadEigen_ = false;

        xlaGpuCudaDataDir_ = "";

        xlaGpuFtz_ = false;

        xlaGpuDisableMultiStreaming_ = false;

        xlaLlvmEnableAliasScopeMetadata_ = false;

        xlaLlvmEnableNoaliasMetadata_ = false;

        xlaLlvmEnableInvariantLoadMetadata_ = false;

        xlaLlvmDisableExpensivePasses_ = false;

        if (hloReducePrecisionOptionsBuilder_ == null) {
          hloReducePrecisionOptions_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x01000000);
        } else {
          hloReducePrecisionOptionsBuilder_.clear();
        }
        xlaTestAllOutputLayouts_ = false;

        xlaTestAllInputLayouts_ = false;

        xlaHloGraphShardingColor_ = false;

        xlaHloTfgraphDeviceScopes_ = false;

        xlaGpuUseCudnnBatchnorm_ = false;

        xlaDumpUnoptimizedHloProtoTo_ = "";

        xlaDumpPerPassHloProtoTo_ = "";

        xlaCpuUseMklDnn_ = false;

        internalGetMutableXlaBackendExtraOptions().clear();
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return xla.Xla.internal_static_xla_DebugOptions_descriptor;
      }

      public xla.Xla.DebugOptions getDefaultInstanceForType() {
        return xla.Xla.DebugOptions.getDefaultInstance();
      }

      public xla.Xla.DebugOptions build() {
        xla.Xla.DebugOptions result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public xla.Xla.DebugOptions buildPartial() {
        xla.Xla.DebugOptions result = new xla.Xla.DebugOptions(this);
        int from_bitField0_ = bitField0_;
        int from_bitField1_ = bitField1_;
        int to_bitField0_ = 0;
        result.xlaGenerateHloGraph_ = xlaGenerateHloGraph_;
        result.xlaHloGraphAddresses_ = xlaHloGraphAddresses_;
        result.xlaHloGraphPath_ = xlaHloGraphPath_;
        result.xlaHloDumpAsGraphdef_ = xlaHloDumpAsGraphdef_;
        result.xlaLogHloText_ = xlaLogHloText_;
        result.xlaGenerateHloTextTo_ = xlaGenerateHloTextTo_;
        result.xlaDumpOptimizedHloProtoTo_ = xlaDumpOptimizedHloProtoTo_;
        result.xlaHloProfile_ = xlaHloProfile_;
        result.xlaDumpComputationsTo_ = xlaDumpComputationsTo_;
        result.xlaDumpExecutionsTo_ = xlaDumpExecutionsTo_;
        if (((bitField0_ & 0x00000400) == 0x00000400)) {
          xlaDisableHloPasses_ = xlaDisableHloPasses_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000400);
        }
        result.xlaDisableHloPasses_ = xlaDisableHloPasses_;
        result.xlaBackendOptimizationLevel_ = xlaBackendOptimizationLevel_;
        result.xlaEnableFastMath_ = xlaEnableFastMath_;
        result.xlaEmbedIrInExecutable_ = xlaEmbedIrInExecutable_;
        result.xlaDumpIrTo_ = xlaDumpIrTo_;
        result.xlaEliminateHloImplicitBroadcast_ = xlaEliminateHloImplicitBroadcast_;
        result.xlaCpuMultiThreadEigen_ = xlaCpuMultiThreadEigen_;
        result.xlaGpuCudaDataDir_ = xlaGpuCudaDataDir_;
        result.xlaGpuFtz_ = xlaGpuFtz_;
        result.xlaGpuDisableMultiStreaming_ = xlaGpuDisableMultiStreaming_;
        result.xlaLlvmEnableAliasScopeMetadata_ = xlaLlvmEnableAliasScopeMetadata_;
        result.xlaLlvmEnableNoaliasMetadata_ = xlaLlvmEnableNoaliasMetadata_;
        result.xlaLlvmEnableInvariantLoadMetadata_ = xlaLlvmEnableInvariantLoadMetadata_;
        result.xlaLlvmDisableExpensivePasses_ = xlaLlvmDisableExpensivePasses_;
        if (hloReducePrecisionOptionsBuilder_ == null) {
          if (((bitField0_ & 0x01000000) == 0x01000000)) {
            hloReducePrecisionOptions_ = java.util.Collections.unmodifiableList(hloReducePrecisionOptions_);
            bitField0_ = (bitField0_ & ~0x01000000);
          }
          result.hloReducePrecisionOptions_ = hloReducePrecisionOptions_;
        } else {
          result.hloReducePrecisionOptions_ = hloReducePrecisionOptionsBuilder_.build();
        }
        result.xlaTestAllOutputLayouts_ = xlaTestAllOutputLayouts_;
        result.xlaTestAllInputLayouts_ = xlaTestAllInputLayouts_;
        result.xlaHloGraphShardingColor_ = xlaHloGraphShardingColor_;
        result.xlaHloTfgraphDeviceScopes_ = xlaHloTfgraphDeviceScopes_;
        result.xlaGpuUseCudnnBatchnorm_ = xlaGpuUseCudnnBatchnorm_;
        result.xlaDumpUnoptimizedHloProtoTo_ = xlaDumpUnoptimizedHloProtoTo_;
        result.xlaDumpPerPassHloProtoTo_ = xlaDumpPerPassHloProtoTo_;
        result.xlaCpuUseMklDnn_ = xlaCpuUseMklDnn_;
        result.xlaBackendExtraOptions_ = internalGetXlaBackendExtraOptions();
        result.xlaBackendExtraOptions_.makeImmutable();
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof xla.Xla.DebugOptions) {
          return mergeFrom((xla.Xla.DebugOptions)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(xla.Xla.DebugOptions other) {
        if (other == xla.Xla.DebugOptions.getDefaultInstance()) return this;
        if (!other.getXlaGenerateHloGraph().isEmpty()) {
          xlaGenerateHloGraph_ = other.xlaGenerateHloGraph_;
          onChanged();
        }
        if (other.getXlaHloGraphAddresses() != false) {
          setXlaHloGraphAddresses(other.getXlaHloGraphAddresses());
        }
        if (!other.getXlaHloGraphPath().isEmpty()) {
          xlaHloGraphPath_ = other.xlaHloGraphPath_;
          onChanged();
        }
        if (other.getXlaHloDumpAsGraphdef() != false) {
          setXlaHloDumpAsGraphdef(other.getXlaHloDumpAsGraphdef());
        }
        if (!other.getXlaLogHloText().isEmpty()) {
          xlaLogHloText_ = other.xlaLogHloText_;
          onChanged();
        }
        if (!other.getXlaGenerateHloTextTo().isEmpty()) {
          xlaGenerateHloTextTo_ = other.xlaGenerateHloTextTo_;
          onChanged();
        }
        if (!other.getXlaDumpOptimizedHloProtoTo().isEmpty()) {
          xlaDumpOptimizedHloProtoTo_ = other.xlaDumpOptimizedHloProtoTo_;
          onChanged();
        }
        if (other.getXlaHloProfile() != false) {
          setXlaHloProfile(other.getXlaHloProfile());
        }
        if (!other.getXlaDumpComputationsTo().isEmpty()) {
          xlaDumpComputationsTo_ = other.xlaDumpComputationsTo_;
          onChanged();
        }
        if (!other.getXlaDumpExecutionsTo().isEmpty()) {
          xlaDumpExecutionsTo_ = other.xlaDumpExecutionsTo_;
          onChanged();
        }
        if (!other.xlaDisableHloPasses_.isEmpty()) {
          if (xlaDisableHloPasses_.isEmpty()) {
            xlaDisableHloPasses_ = other.xlaDisableHloPasses_;
            bitField0_ = (bitField0_ & ~0x00000400);
          } else {
            ensureXlaDisableHloPassesIsMutable();
            xlaDisableHloPasses_.addAll(other.xlaDisableHloPasses_);
          }
          onChanged();
        }
        if (other.getXlaBackendOptimizationLevel() != 0) {
          setXlaBackendOptimizationLevel(other.getXlaBackendOptimizationLevel());
        }
        if (other.getXlaEnableFastMath() != false) {
          setXlaEnableFastMath(other.getXlaEnableFastMath());
        }
        if (other.getXlaEmbedIrInExecutable() != false) {
          setXlaEmbedIrInExecutable(other.getXlaEmbedIrInExecutable());
        }
        if (!other.getXlaDumpIrTo().isEmpty()) {
          xlaDumpIrTo_ = other.xlaDumpIrTo_;
          onChanged();
        }
        if (other.getXlaEliminateHloImplicitBroadcast() != false) {
          setXlaEliminateHloImplicitBroadcast(other.getXlaEliminateHloImplicitBroadcast());
        }
        if (other.getXlaCpuMultiThreadEigen() != false) {
          setXlaCpuMultiThreadEigen(other.getXlaCpuMultiThreadEigen());
        }
        if (!other.getXlaGpuCudaDataDir().isEmpty()) {
          xlaGpuCudaDataDir_ = other.xlaGpuCudaDataDir_;
          onChanged();
        }
        if (other.getXlaGpuFtz() != false) {
          setXlaGpuFtz(other.getXlaGpuFtz());
        }
        if (other.getXlaGpuDisableMultiStreaming() != false) {
          setXlaGpuDisableMultiStreaming(other.getXlaGpuDisableMultiStreaming());
        }
        if (other.getXlaLlvmEnableAliasScopeMetadata() != false) {
          setXlaLlvmEnableAliasScopeMetadata(other.getXlaLlvmEnableAliasScopeMetadata());
        }
        if (other.getXlaLlvmEnableNoaliasMetadata() != false) {
          setXlaLlvmEnableNoaliasMetadata(other.getXlaLlvmEnableNoaliasMetadata());
        }
        if (other.getXlaLlvmEnableInvariantLoadMetadata() != false) {
          setXlaLlvmEnableInvariantLoadMetadata(other.getXlaLlvmEnableInvariantLoadMetadata());
        }
        if (other.getXlaLlvmDisableExpensivePasses() != false) {
          setXlaLlvmDisableExpensivePasses(other.getXlaLlvmDisableExpensivePasses());
        }
        if (hloReducePrecisionOptionsBuilder_ == null) {
          if (!other.hloReducePrecisionOptions_.isEmpty()) {
            if (hloReducePrecisionOptions_.isEmpty()) {
              hloReducePrecisionOptions_ = other.hloReducePrecisionOptions_;
              bitField0_ = (bitField0_ & ~0x01000000);
            } else {
              ensureHloReducePrecisionOptionsIsMutable();
              hloReducePrecisionOptions_.addAll(other.hloReducePrecisionOptions_);
            }
            onChanged();
          }
        } else {
          if (!other.hloReducePrecisionOptions_.isEmpty()) {
            if (hloReducePrecisionOptionsBuilder_.isEmpty()) {
              hloReducePrecisionOptionsBuilder_.dispose();
              hloReducePrecisionOptionsBuilder_ = null;
              hloReducePrecisionOptions_ = other.hloReducePrecisionOptions_;
              bitField0_ = (bitField0_ & ~0x01000000);
              hloReducePrecisionOptionsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getHloReducePrecisionOptionsFieldBuilder() : null;
            } else {
              hloReducePrecisionOptionsBuilder_.addAllMessages(other.hloReducePrecisionOptions_);
            }
          }
        }
        if (other.getXlaTestAllOutputLayouts() != false) {
          setXlaTestAllOutputLayouts(other.getXlaTestAllOutputLayouts());
        }
        if (other.getXlaTestAllInputLayouts() != false) {
          setXlaTestAllInputLayouts(other.getXlaTestAllInputLayouts());
        }
        if (other.getXlaHloGraphShardingColor() != false) {
          setXlaHloGraphShardingColor(other.getXlaHloGraphShardingColor());
        }
        if (other.getXlaHloTfgraphDeviceScopes() != false) {
          setXlaHloTfgraphDeviceScopes(other.getXlaHloTfgraphDeviceScopes());
        }
        if (other.getXlaGpuUseCudnnBatchnorm() != false) {
          setXlaGpuUseCudnnBatchnorm(other.getXlaGpuUseCudnnBatchnorm());
        }
        if (!other.getXlaDumpUnoptimizedHloProtoTo().isEmpty()) {
          xlaDumpUnoptimizedHloProtoTo_ = other.xlaDumpUnoptimizedHloProtoTo_;
          onChanged();
        }
        if (!other.getXlaDumpPerPassHloProtoTo().isEmpty()) {
          xlaDumpPerPassHloProtoTo_ = other.xlaDumpPerPassHloProtoTo_;
          onChanged();
        }
        if (other.getXlaCpuUseMklDnn() != false) {
          setXlaCpuUseMklDnn(other.getXlaCpuUseMklDnn());
        }
        internalGetMutableXlaBackendExtraOptions().mergeFrom(
            other.internalGetXlaBackendExtraOptions());
        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 {
        xla.Xla.DebugOptions parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (xla.Xla.DebugOptions) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;
      private int bitField1_;

      private java.lang.Object xlaGenerateHloGraph_ = "";
      /**
       * <pre>
       * HLO modules matching this regex will be dumped to a .dot file throughout
       * various stages in compilation (file names are LOG(INFO)'d). Set to ".*" to
       * dump *all* HLO modules.
       * </pre>
       *
       * <code>string xla_generate_hlo_graph = 1;</code>
       */
      public java.lang.String getXlaGenerateHloGraph() {
        java.lang.Object ref = xlaGenerateHloGraph_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          xlaGenerateHloGraph_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * HLO modules matching this regex will be dumped to a .dot file throughout
       * various stages in compilation (file names are LOG(INFO)'d). Set to ".*" to
       * dump *all* HLO modules.
       * </pre>
       *
       * <code>string xla_generate_hlo_graph = 1;</code>
       */
      public com.google.protobuf.ByteString
          getXlaGenerateHloGraphBytes() {
        java.lang.Object ref = xlaGenerateHloGraph_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          xlaGenerateHloGraph_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * HLO modules matching this regex will be dumped to a .dot file throughout
       * various stages in compilation (file names are LOG(INFO)'d). Set to ".*" to
       * dump *all* HLO modules.
       * </pre>
       *
       * <code>string xla_generate_hlo_graph = 1;</code>
       */
      public Builder setXlaGenerateHloGraph(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        xlaGenerateHloGraph_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * HLO modules matching this regex will be dumped to a .dot file throughout
       * various stages in compilation (file names are LOG(INFO)'d). Set to ".*" to
       * dump *all* HLO modules.
       * </pre>
       *
       * <code>string xla_generate_hlo_graph = 1;</code>
       */
      public Builder clearXlaGenerateHloGraph() {
        
        xlaGenerateHloGraph_ = getDefaultInstance().getXlaGenerateHloGraph();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * HLO modules matching this regex will be dumped to a .dot file throughout
       * various stages in compilation (file names are LOG(INFO)'d). Set to ".*" to
       * dump *all* HLO modules.
       * </pre>
       *
       * <code>string xla_generate_hlo_graph = 1;</code>
       */
      public Builder setXlaGenerateHloGraphBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        xlaGenerateHloGraph_ = value;
        onChanged();
        return this;
      }

      private boolean xlaHloGraphAddresses_ ;
      /**
       * <pre>
       * Show addresses of HLO ops in graph dump.
       * </pre>
       *
       * <code>bool xla_hlo_graph_addresses = 2;</code>
       */
      public boolean getXlaHloGraphAddresses() {
        return xlaHloGraphAddresses_;
      }
      /**
       * <pre>
       * Show addresses of HLO ops in graph dump.
       * </pre>
       *
       * <code>bool xla_hlo_graph_addresses = 2;</code>
       */
      public Builder setXlaHloGraphAddresses(boolean value) {
        
        xlaHloGraphAddresses_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Show addresses of HLO ops in graph dump.
       * </pre>
       *
       * <code>bool xla_hlo_graph_addresses = 2;</code>
       */
      public Builder clearXlaHloGraphAddresses() {
        
        xlaHloGraphAddresses_ = false;
        onChanged();
        return this;
      }

      private java.lang.Object xlaHloGraphPath_ = "";
      /**
       * <pre>
       * Path to dump HLO graphs to.
       * </pre>
       *
       * <code>string xla_hlo_graph_path = 4;</code>
       */
      public java.lang.String getXlaHloGraphPath() {
        java.lang.Object ref = xlaHloGraphPath_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          xlaHloGraphPath_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Path to dump HLO graphs to.
       * </pre>
       *
       * <code>string xla_hlo_graph_path = 4;</code>
       */
      public com.google.protobuf.ByteString
          getXlaHloGraphPathBytes() {
        java.lang.Object ref = xlaHloGraphPath_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          xlaHloGraphPath_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Path to dump HLO graphs to.
       * </pre>
       *
       * <code>string xla_hlo_graph_path = 4;</code>
       */
      public Builder setXlaHloGraphPath(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        xlaHloGraphPath_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Path to dump HLO graphs to.
       * </pre>
       *
       * <code>string xla_hlo_graph_path = 4;</code>
       */
      public Builder clearXlaHloGraphPath() {
        
        xlaHloGraphPath_ = getDefaultInstance().getXlaHloGraphPath();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Path to dump HLO graphs to.
       * </pre>
       *
       * <code>string xla_hlo_graph_path = 4;</code>
       */
      public Builder setXlaHloGraphPathBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        xlaHloGraphPath_ = value;
        onChanged();
        return this;
      }

      private boolean xlaHloDumpAsGraphdef_ ;
      /**
       * <pre>
       * Dump HLO graphs as TensorFlow GraphDefs.
       * </pre>
       *
       * <code>bool xla_hlo_dump_as_graphdef = 5;</code>
       */
      public boolean getXlaHloDumpAsGraphdef() {
        return xlaHloDumpAsGraphdef_;
      }
      /**
       * <pre>
       * Dump HLO graphs as TensorFlow GraphDefs.
       * </pre>
       *
       * <code>bool xla_hlo_dump_as_graphdef = 5;</code>
       */
      public Builder setXlaHloDumpAsGraphdef(boolean value) {
        
        xlaHloDumpAsGraphdef_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Dump HLO graphs as TensorFlow GraphDefs.
       * </pre>
       *
       * <code>bool xla_hlo_dump_as_graphdef = 5;</code>
       */
      public Builder clearXlaHloDumpAsGraphdef() {
        
        xlaHloDumpAsGraphdef_ = false;
        onChanged();
        return this;
      }

      private java.lang.Object xlaLogHloText_ = "";
      /**
       * <pre>
       * HLO modules matching this regex will be dumped to LOG(INFO). Set to ".*" to
       * dump *all* HLO modules.
       * </pre>
       *
       * <code>string xla_log_hlo_text = 6;</code>
       */
      public java.lang.String getXlaLogHloText() {
        java.lang.Object ref = xlaLogHloText_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          xlaLogHloText_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * HLO modules matching this regex will be dumped to LOG(INFO). Set to ".*" to
       * dump *all* HLO modules.
       * </pre>
       *
       * <code>string xla_log_hlo_text = 6;</code>
       */
      public com.google.protobuf.ByteString
          getXlaLogHloTextBytes() {
        java.lang.Object ref = xlaLogHloText_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          xlaLogHloText_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * HLO modules matching this regex will be dumped to LOG(INFO). Set to ".*" to
       * dump *all* HLO modules.
       * </pre>
       *
       * <code>string xla_log_hlo_text = 6;</code>
       */
      public Builder setXlaLogHloText(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        xlaLogHloText_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * HLO modules matching this regex will be dumped to LOG(INFO). Set to ".*" to
       * dump *all* HLO modules.
       * </pre>
       *
       * <code>string xla_log_hlo_text = 6;</code>
       */
      public Builder clearXlaLogHloText() {
        
        xlaLogHloText_ = getDefaultInstance().getXlaLogHloText();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * HLO modules matching this regex will be dumped to LOG(INFO). Set to ".*" to
       * dump *all* HLO modules.
       * </pre>
       *
       * <code>string xla_log_hlo_text = 6;</code>
       */
      public Builder setXlaLogHloTextBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        xlaLogHloText_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object xlaGenerateHloTextTo_ = "";
      /**
       * <pre>
       * Dump all HLO modules as text into the provided directory path.
       * </pre>
       *
       * <code>string xla_generate_hlo_text_to = 7;</code>
       */
      public java.lang.String getXlaGenerateHloTextTo() {
        java.lang.Object ref = xlaGenerateHloTextTo_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          xlaGenerateHloTextTo_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Dump all HLO modules as text into the provided directory path.
       * </pre>
       *
       * <code>string xla_generate_hlo_text_to = 7;</code>
       */
      public com.google.protobuf.ByteString
          getXlaGenerateHloTextToBytes() {
        java.lang.Object ref = xlaGenerateHloTextTo_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          xlaGenerateHloTextTo_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Dump all HLO modules as text into the provided directory path.
       * </pre>
       *
       * <code>string xla_generate_hlo_text_to = 7;</code>
       */
      public Builder setXlaGenerateHloTextTo(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        xlaGenerateHloTextTo_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Dump all HLO modules as text into the provided directory path.
       * </pre>
       *
       * <code>string xla_generate_hlo_text_to = 7;</code>
       */
      public Builder clearXlaGenerateHloTextTo() {
        
        xlaGenerateHloTextTo_ = getDefaultInstance().getXlaGenerateHloTextTo();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Dump all HLO modules as text into the provided directory path.
       * </pre>
       *
       * <code>string xla_generate_hlo_text_to = 7;</code>
       */
      public Builder setXlaGenerateHloTextToBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        xlaGenerateHloTextTo_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object xlaDumpOptimizedHloProtoTo_ = "";
      /**
       * <pre>
       * Dump Hlo after all hlo passes are executed as proto binary into this
       * directory.
       * </pre>
       *
       * <code>string xla_dump_optimized_hlo_proto_to = 8;</code>
       */
      public java.lang.String getXlaDumpOptimizedHloProtoTo() {
        java.lang.Object ref = xlaDumpOptimizedHloProtoTo_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          xlaDumpOptimizedHloProtoTo_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Dump Hlo after all hlo passes are executed as proto binary into this
       * directory.
       * </pre>
       *
       * <code>string xla_dump_optimized_hlo_proto_to = 8;</code>
       */
      public com.google.protobuf.ByteString
          getXlaDumpOptimizedHloProtoToBytes() {
        java.lang.Object ref = xlaDumpOptimizedHloProtoTo_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          xlaDumpOptimizedHloProtoTo_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Dump Hlo after all hlo passes are executed as proto binary into this
       * directory.
       * </pre>
       *
       * <code>string xla_dump_optimized_hlo_proto_to = 8;</code>
       */
      public Builder setXlaDumpOptimizedHloProtoTo(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        xlaDumpOptimizedHloProtoTo_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Dump Hlo after all hlo passes are executed as proto binary into this
       * directory.
       * </pre>
       *
       * <code>string xla_dump_optimized_hlo_proto_to = 8;</code>
       */
      public Builder clearXlaDumpOptimizedHloProtoTo() {
        
        xlaDumpOptimizedHloProtoTo_ = getDefaultInstance().getXlaDumpOptimizedHloProtoTo();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Dump Hlo after all hlo passes are executed as proto binary into this
       * directory.
       * </pre>
       *
       * <code>string xla_dump_optimized_hlo_proto_to = 8;</code>
       */
      public Builder setXlaDumpOptimizedHloProtoToBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        xlaDumpOptimizedHloProtoTo_ = value;
        onChanged();
        return this;
      }

      private boolean xlaHloProfile_ ;
      /**
       * <pre>
       * Instrument the computation to collect per-HLO cycle counts.
       * </pre>
       *
       * <code>bool xla_hlo_profile = 9;</code>
       */
      public boolean getXlaHloProfile() {
        return xlaHloProfile_;
      }
      /**
       * <pre>
       * Instrument the computation to collect per-HLO cycle counts.
       * </pre>
       *
       * <code>bool xla_hlo_profile = 9;</code>
       */
      public Builder setXlaHloProfile(boolean value) {
        
        xlaHloProfile_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Instrument the computation to collect per-HLO cycle counts.
       * </pre>
       *
       * <code>bool xla_hlo_profile = 9;</code>
       */
      public Builder clearXlaHloProfile() {
        
        xlaHloProfile_ = false;
        onChanged();
        return this;
      }

      private java.lang.Object xlaDumpComputationsTo_ = "";
      /**
       * <pre>
       * Dumps computations that XLA executes into the provided directory path.
       * </pre>
       *
       * <code>string xla_dump_computations_to = 10;</code>
       */
      public java.lang.String getXlaDumpComputationsTo() {
        java.lang.Object ref = xlaDumpComputationsTo_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          xlaDumpComputationsTo_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Dumps computations that XLA executes into the provided directory path.
       * </pre>
       *
       * <code>string xla_dump_computations_to = 10;</code>
       */
      public com.google.protobuf.ByteString
          getXlaDumpComputationsToBytes() {
        java.lang.Object ref = xlaDumpComputationsTo_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          xlaDumpComputationsTo_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Dumps computations that XLA executes into the provided directory path.
       * </pre>
       *
       * <code>string xla_dump_computations_to = 10;</code>
       */
      public Builder setXlaDumpComputationsTo(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        xlaDumpComputationsTo_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Dumps computations that XLA executes into the provided directory path.
       * </pre>
       *
       * <code>string xla_dump_computations_to = 10;</code>
       */
      public Builder clearXlaDumpComputationsTo() {
        
        xlaDumpComputationsTo_ = getDefaultInstance().getXlaDumpComputationsTo();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Dumps computations that XLA executes into the provided directory path.
       * </pre>
       *
       * <code>string xla_dump_computations_to = 10;</code>
       */
      public Builder setXlaDumpComputationsToBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        xlaDumpComputationsTo_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object xlaDumpExecutionsTo_ = "";
      /**
       * <pre>
       * Dumps parameters and results of computations that XLA executes into the
       * provided directory path.
       * </pre>
       *
       * <code>string xla_dump_executions_to = 11;</code>
       */
      public java.lang.String getXlaDumpExecutionsTo() {
        java.lang.Object ref = xlaDumpExecutionsTo_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          xlaDumpExecutionsTo_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Dumps parameters and results of computations that XLA executes into the
       * provided directory path.
       * </pre>
       *
       * <code>string xla_dump_executions_to = 11;</code>
       */
      public com.google.protobuf.ByteString
          getXlaDumpExecutionsToBytes() {
        java.lang.Object ref = xlaDumpExecutionsTo_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          xlaDumpExecutionsTo_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Dumps parameters and results of computations that XLA executes into the
       * provided directory path.
       * </pre>
       *
       * <code>string xla_dump_executions_to = 11;</code>
       */
      public Builder setXlaDumpExecutionsTo(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        xlaDumpExecutionsTo_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Dumps parameters and results of computations that XLA executes into the
       * provided directory path.
       * </pre>
       *
       * <code>string xla_dump_executions_to = 11;</code>
       */
      public Builder clearXlaDumpExecutionsTo() {
        
        xlaDumpExecutionsTo_ = getDefaultInstance().getXlaDumpExecutionsTo();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Dumps parameters and results of computations that XLA executes into the
       * provided directory path.
       * </pre>
       *
       * <code>string xla_dump_executions_to = 11;</code>
       */
      public Builder setXlaDumpExecutionsToBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        xlaDumpExecutionsTo_ = value;
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList xlaDisableHloPasses_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureXlaDisableHloPassesIsMutable() {
        if (!((bitField0_ & 0x00000400) == 0x00000400)) {
          xlaDisableHloPasses_ = new com.google.protobuf.LazyStringArrayList(xlaDisableHloPasses_);
          bitField0_ |= 0x00000400;
         }
      }
      /**
       * <pre>
       * List of HLO passes to disable. These names must exactly match the pass
       * names as specified by the HloPassInterface::name() method.
       * </pre>
       *
       * <code>repeated string xla_disable_hlo_passes = 30;</code>
       */
      public com.google.protobuf.ProtocolStringList
          getXlaDisableHloPassesList() {
        return xlaDisableHloPasses_.getUnmodifiableView();
      }
      /**
       * <pre>
       * List of HLO passes to disable. These names must exactly match the pass
       * names as specified by the HloPassInterface::name() method.
       * </pre>
       *
       * <code>repeated string xla_disable_hlo_passes = 30;</code>
       */
      public int getXlaDisableHloPassesCount() {
        return xlaDisableHloPasses_.size();
      }
      /**
       * <pre>
       * List of HLO passes to disable. These names must exactly match the pass
       * names as specified by the HloPassInterface::name() method.
       * </pre>
       *
       * <code>repeated string xla_disable_hlo_passes = 30;</code>
       */
      public java.lang.String getXlaDisableHloPasses(int index) {
        return xlaDisableHloPasses_.get(index);
      }
      /**
       * <pre>
       * List of HLO passes to disable. These names must exactly match the pass
       * names as specified by the HloPassInterface::name() method.
       * </pre>
       *
       * <code>repeated string xla_disable_hlo_passes = 30;</code>
       */
      public com.google.protobuf.ByteString
          getXlaDisableHloPassesBytes(int index) {
        return xlaDisableHloPasses_.getByteString(index);
      }
      /**
       * <pre>
       * List of HLO passes to disable. These names must exactly match the pass
       * names as specified by the HloPassInterface::name() method.
       * </pre>
       *
       * <code>repeated string xla_disable_hlo_passes = 30;</code>
       */
      public Builder setXlaDisableHloPasses(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureXlaDisableHloPassesIsMutable();
        xlaDisableHloPasses_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * List of HLO passes to disable. These names must exactly match the pass
       * names as specified by the HloPassInterface::name() method.
       * </pre>
       *
       * <code>repeated string xla_disable_hlo_passes = 30;</code>
       */
      public Builder addXlaDisableHloPasses(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureXlaDisableHloPassesIsMutable();
        xlaDisableHloPasses_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * List of HLO passes to disable. These names must exactly match the pass
       * names as specified by the HloPassInterface::name() method.
       * </pre>
       *
       * <code>repeated string xla_disable_hlo_passes = 30;</code>
       */
      public Builder addAllXlaDisableHloPasses(
          java.lang.Iterable<java.lang.String> values) {
        ensureXlaDisableHloPassesIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, xlaDisableHloPasses_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * List of HLO passes to disable. These names must exactly match the pass
       * names as specified by the HloPassInterface::name() method.
       * </pre>
       *
       * <code>repeated string xla_disable_hlo_passes = 30;</code>
       */
      public Builder clearXlaDisableHloPasses() {
        xlaDisableHloPasses_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000400);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * List of HLO passes to disable. These names must exactly match the pass
       * names as specified by the HloPassInterface::name() method.
       * </pre>
       *
       * <code>repeated string xla_disable_hlo_passes = 30;</code>
       */
      public Builder addXlaDisableHloPassesBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureXlaDisableHloPassesIsMutable();
        xlaDisableHloPasses_.add(value);
        onChanged();
        return this;
      }

      private int xlaBackendOptimizationLevel_ ;
      /**
       * <pre>
       * Numerical optimization level for the XLA compiler backend; the specific
       * interpretation of this value is left to the backends.
       * </pre>
       *
       * <code>int32 xla_backend_optimization_level = 31;</code>
       */
      public int getXlaBackendOptimizationLevel() {
        return xlaBackendOptimizationLevel_;
      }
      /**
       * <pre>
       * Numerical optimization level for the XLA compiler backend; the specific
       * interpretation of this value is left to the backends.
       * </pre>
       *
       * <code>int32 xla_backend_optimization_level = 31;</code>
       */
      public Builder setXlaBackendOptimizationLevel(int value) {
        
        xlaBackendOptimizationLevel_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Numerical optimization level for the XLA compiler backend; the specific
       * interpretation of this value is left to the backends.
       * </pre>
       *
       * <code>int32 xla_backend_optimization_level = 31;</code>
       */
      public Builder clearXlaBackendOptimizationLevel() {
        
        xlaBackendOptimizationLevel_ = 0;
        onChanged();
        return this;
      }

      private boolean xlaEnableFastMath_ ;
      /**
       * <pre>
       * When true, "unsafe" mathematical optimizations are enabled. These
       * transformations include but are not limited to:
       *  - Reducing the precision of operations (e.g. using an approximate sin
       *    function, or transforming x/y into x * (1/y)).
       *  - Assuming that operations never produce or consume NaN or +/- Inf.
       *  - Assuming that +0 and -0 are indistinguishable.
       * </pre>
       *
       * <code>bool xla_enable_fast_math = 32;</code>
       */
      public boolean getXlaEnableFastMath() {
        return xlaEnableFastMath_;
      }
      /**
       * <pre>
       * When true, "unsafe" mathematical optimizations are enabled. These
       * transformations include but are not limited to:
       *  - Reducing the precision of operations (e.g. using an approximate sin
       *    function, or transforming x/y into x * (1/y)).
       *  - Assuming that operations never produce or consume NaN or +/- Inf.
       *  - Assuming that +0 and -0 are indistinguishable.
       * </pre>
       *
       * <code>bool xla_enable_fast_math = 32;</code>
       */
      public Builder setXlaEnableFastMath(boolean value) {
        
        xlaEnableFastMath_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * When true, "unsafe" mathematical optimizations are enabled. These
       * transformations include but are not limited to:
       *  - Reducing the precision of operations (e.g. using an approximate sin
       *    function, or transforming x/y into x * (1/y)).
       *  - Assuming that operations never produce or consume NaN or +/- Inf.
       *  - Assuming that +0 and -0 are indistinguishable.
       * </pre>
       *
       * <code>bool xla_enable_fast_math = 32;</code>
       */
      public Builder clearXlaEnableFastMath() {
        
        xlaEnableFastMath_ = false;
        onChanged();
        return this;
      }

      private boolean xlaEmbedIrInExecutable_ ;
      /**
       * <pre>
       * Embed the compiler IR as a string in the executable.
       * </pre>
       *
       * <code>bool xla_embed_ir_in_executable = 33;</code>
       */
      public boolean getXlaEmbedIrInExecutable() {
        return xlaEmbedIrInExecutable_;
      }
      /**
       * <pre>
       * Embed the compiler IR as a string in the executable.
       * </pre>
       *
       * <code>bool xla_embed_ir_in_executable = 33;</code>
       */
      public Builder setXlaEmbedIrInExecutable(boolean value) {
        
        xlaEmbedIrInExecutable_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Embed the compiler IR as a string in the executable.
       * </pre>
       *
       * <code>bool xla_embed_ir_in_executable = 33;</code>
       */
      public Builder clearXlaEmbedIrInExecutable() {
        
        xlaEmbedIrInExecutable_ = false;
        onChanged();
        return this;
      }

      private java.lang.Object xlaDumpIrTo_ = "";
      /**
       * <pre>
       * Dump the compiler IR into this directory as individual files.
       * </pre>
       *
       * <code>string xla_dump_ir_to = 34;</code>
       */
      public java.lang.String getXlaDumpIrTo() {
        java.lang.Object ref = xlaDumpIrTo_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          xlaDumpIrTo_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Dump the compiler IR into this directory as individual files.
       * </pre>
       *
       * <code>string xla_dump_ir_to = 34;</code>
       */
      public com.google.protobuf.ByteString
          getXlaDumpIrToBytes() {
        java.lang.Object ref = xlaDumpIrTo_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          xlaDumpIrTo_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Dump the compiler IR into this directory as individual files.
       * </pre>
       *
       * <code>string xla_dump_ir_to = 34;</code>
       */
      public Builder setXlaDumpIrTo(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        xlaDumpIrTo_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Dump the compiler IR into this directory as individual files.
       * </pre>
       *
       * <code>string xla_dump_ir_to = 34;</code>
       */
      public Builder clearXlaDumpIrTo() {
        
        xlaDumpIrTo_ = getDefaultInstance().getXlaDumpIrTo();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Dump the compiler IR into this directory as individual files.
       * </pre>
       *
       * <code>string xla_dump_ir_to = 34;</code>
       */
      public Builder setXlaDumpIrToBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        xlaDumpIrTo_ = value;
        onChanged();
        return this;
      }

      private boolean xlaEliminateHloImplicitBroadcast_ ;
      /**
       * <pre>
       * Eliminate implicit broadcasts when lowering user computations to HLO
       * instructions; use explicit broadcast instead.
       * </pre>
       *
       * <code>bool xla_eliminate_hlo_implicit_broadcast = 35;</code>
       */
      public boolean getXlaEliminateHloImplicitBroadcast() {
        return xlaEliminateHloImplicitBroadcast_;
      }
      /**
       * <pre>
       * Eliminate implicit broadcasts when lowering user computations to HLO
       * instructions; use explicit broadcast instead.
       * </pre>
       *
       * <code>bool xla_eliminate_hlo_implicit_broadcast = 35;</code>
       */
      public Builder setXlaEliminateHloImplicitBroadcast(boolean value) {
        
        xlaEliminateHloImplicitBroadcast_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Eliminate implicit broadcasts when lowering user computations to HLO
       * instructions; use explicit broadcast instead.
       * </pre>
       *
       * <code>bool xla_eliminate_hlo_implicit_broadcast = 35;</code>
       */
      public Builder clearXlaEliminateHloImplicitBroadcast() {
        
        xlaEliminateHloImplicitBroadcast_ = false;
        onChanged();
        return this;
      }

      private boolean xlaCpuMultiThreadEigen_ ;
      /**
       * <pre>
       * When generating calls to Eigen in the CPU backend, use multi-threaded Eigen
       * mode.
       * </pre>
       *
       * <code>bool xla_cpu_multi_thread_eigen = 60;</code>
       */
      public boolean getXlaCpuMultiThreadEigen() {
        return xlaCpuMultiThreadEigen_;
      }
      /**
       * <pre>
       * When generating calls to Eigen in the CPU backend, use multi-threaded Eigen
       * mode.
       * </pre>
       *
       * <code>bool xla_cpu_multi_thread_eigen = 60;</code>
       */
      public Builder setXlaCpuMultiThreadEigen(boolean value) {
        
        xlaCpuMultiThreadEigen_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * When generating calls to Eigen in the CPU backend, use multi-threaded Eigen
       * mode.
       * </pre>
       *
       * <code>bool xla_cpu_multi_thread_eigen = 60;</code>
       */
      public Builder clearXlaCpuMultiThreadEigen() {
        
        xlaCpuMultiThreadEigen_ = false;
        onChanged();
        return this;
      }

      private java.lang.Object xlaGpuCudaDataDir_ = "";
      /**
       * <pre>
       * Path to directory with cuda/ptx tools and libraries.
       * </pre>
       *
       * <code>string xla_gpu_cuda_data_dir = 61;</code>
       */
      public java.lang.String getXlaGpuCudaDataDir() {
        java.lang.Object ref = xlaGpuCudaDataDir_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          xlaGpuCudaDataDir_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Path to directory with cuda/ptx tools and libraries.
       * </pre>
       *
       * <code>string xla_gpu_cuda_data_dir = 61;</code>
       */
      public com.google.protobuf.ByteString
          getXlaGpuCudaDataDirBytes() {
        java.lang.Object ref = xlaGpuCudaDataDir_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          xlaGpuCudaDataDir_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Path to directory with cuda/ptx tools and libraries.
       * </pre>
       *
       * <code>string xla_gpu_cuda_data_dir = 61;</code>
       */
      public Builder setXlaGpuCudaDataDir(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        xlaGpuCudaDataDir_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Path to directory with cuda/ptx tools and libraries.
       * </pre>
       *
       * <code>string xla_gpu_cuda_data_dir = 61;</code>
       */
      public Builder clearXlaGpuCudaDataDir() {
        
        xlaGpuCudaDataDir_ = getDefaultInstance().getXlaGpuCudaDataDir();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Path to directory with cuda/ptx tools and libraries.
       * </pre>
       *
       * <code>string xla_gpu_cuda_data_dir = 61;</code>
       */
      public Builder setXlaGpuCudaDataDirBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        xlaGpuCudaDataDir_ = value;
        onChanged();
        return this;
      }

      private boolean xlaGpuFtz_ ;
      /**
       * <pre>
       * Enable flush-to-zero semantics in the GPU backend.
       * </pre>
       *
       * <code>bool xla_gpu_ftz = 62;</code>
       */
      public boolean getXlaGpuFtz() {
        return xlaGpuFtz_;
      }
      /**
       * <pre>
       * Enable flush-to-zero semantics in the GPU backend.
       * </pre>
       *
       * <code>bool xla_gpu_ftz = 62;</code>
       */
      public Builder setXlaGpuFtz(boolean value) {
        
        xlaGpuFtz_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Enable flush-to-zero semantics in the GPU backend.
       * </pre>
       *
       * <code>bool xla_gpu_ftz = 62;</code>
       */
      public Builder clearXlaGpuFtz() {
        
        xlaGpuFtz_ = false;
        onChanged();
        return this;
      }

      private boolean xlaGpuDisableMultiStreaming_ ;
      /**
       * <pre>
       * Disable multi-streaming in the GPU backend.
       * </pre>
       *
       * <code>bool xla_gpu_disable_multi_streaming = 63;</code>
       */
      public boolean getXlaGpuDisableMultiStreaming() {
        return xlaGpuDisableMultiStreaming_;
      }
      /**
       * <pre>
       * Disable multi-streaming in the GPU backend.
       * </pre>
       *
       * <code>bool xla_gpu_disable_multi_streaming = 63;</code>
       */
      public Builder setXlaGpuDisableMultiStreaming(boolean value) {
        
        xlaGpuDisableMultiStreaming_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Disable multi-streaming in the GPU backend.
       * </pre>
       *
       * <code>bool xla_gpu_disable_multi_streaming = 63;</code>
       */
      public Builder clearXlaGpuDisableMultiStreaming() {
        
        xlaGpuDisableMultiStreaming_ = false;
        onChanged();
        return this;
      }

      private boolean xlaLlvmEnableAliasScopeMetadata_ ;
      /**
       * <pre>
       * If true, in LLVM-based backends, emit !alias.scope metadata in
       * generated IR.
       * </pre>
       *
       * <code>bool xla_llvm_enable_alias_scope_metadata = 70;</code>
       */
      public boolean getXlaLlvmEnableAliasScopeMetadata() {
        return xlaLlvmEnableAliasScopeMetadata_;
      }
      /**
       * <pre>
       * If true, in LLVM-based backends, emit !alias.scope metadata in
       * generated IR.
       * </pre>
       *
       * <code>bool xla_llvm_enable_alias_scope_metadata = 70;</code>
       */
      public Builder setXlaLlvmEnableAliasScopeMetadata(boolean value) {
        
        xlaLlvmEnableAliasScopeMetadata_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * If true, in LLVM-based backends, emit !alias.scope metadata in
       * generated IR.
       * </pre>
       *
       * <code>bool xla_llvm_enable_alias_scope_metadata = 70;</code>
       */
      public Builder clearXlaLlvmEnableAliasScopeMetadata() {
        
        xlaLlvmEnableAliasScopeMetadata_ = false;
        onChanged();
        return this;
      }

      private boolean xlaLlvmEnableNoaliasMetadata_ ;
      /**
       * <pre>
       * If true, in LLVM-based backends, emit !noalias metadata in the
       * generated IR.
       * </pre>
       *
       * <code>bool xla_llvm_enable_noalias_metadata = 71;</code>
       */
      public boolean getXlaLlvmEnableNoaliasMetadata() {
        return xlaLlvmEnableNoaliasMetadata_;
      }
      /**
       * <pre>
       * If true, in LLVM-based backends, emit !noalias metadata in the
       * generated IR.
       * </pre>
       *
       * <code>bool xla_llvm_enable_noalias_metadata = 71;</code>
       */
      public Builder setXlaLlvmEnableNoaliasMetadata(boolean value) {
        
        xlaLlvmEnableNoaliasMetadata_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * If true, in LLVM-based backends, emit !noalias metadata in the
       * generated IR.
       * </pre>
       *
       * <code>bool xla_llvm_enable_noalias_metadata = 71;</code>
       */
      public Builder clearXlaLlvmEnableNoaliasMetadata() {
        
        xlaLlvmEnableNoaliasMetadata_ = false;
        onChanged();
        return this;
      }

      private boolean xlaLlvmEnableInvariantLoadMetadata_ ;
      /**
       * <pre>
       * If true, in LLVM-based backends, emit !invariant.load metadata in
       * the generated IR.
       * </pre>
       *
       * <code>bool xla_llvm_enable_invariant_load_metadata = 72;</code>
       */
      public boolean getXlaLlvmEnableInvariantLoadMetadata() {
        return xlaLlvmEnableInvariantLoadMetadata_;
      }
      /**
       * <pre>
       * If true, in LLVM-based backends, emit !invariant.load metadata in
       * the generated IR.
       * </pre>
       *
       * <code>bool xla_llvm_enable_invariant_load_metadata = 72;</code>
       */
      public Builder setXlaLlvmEnableInvariantLoadMetadata(boolean value) {
        
        xlaLlvmEnableInvariantLoadMetadata_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * If true, in LLVM-based backends, emit !invariant.load metadata in
       * the generated IR.
       * </pre>
       *
       * <code>bool xla_llvm_enable_invariant_load_metadata = 72;</code>
       */
      public Builder clearXlaLlvmEnableInvariantLoadMetadata() {
        
        xlaLlvmEnableInvariantLoadMetadata_ = false;
        onChanged();
        return this;
      }

      private boolean xlaLlvmDisableExpensivePasses_ ;
      /**
       * <pre>
       * If true, a set of expensive LLVM optimization passes will not be run.
       * </pre>
       *
       * <code>bool xla_llvm_disable_expensive_passes = 73;</code>
       */
      public boolean getXlaLlvmDisableExpensivePasses() {
        return xlaLlvmDisableExpensivePasses_;
      }
      /**
       * <pre>
       * If true, a set of expensive LLVM optimization passes will not be run.
       * </pre>
       *
       * <code>bool xla_llvm_disable_expensive_passes = 73;</code>
       */
      public Builder setXlaLlvmDisableExpensivePasses(boolean value) {
        
        xlaLlvmDisableExpensivePasses_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * If true, a set of expensive LLVM optimization passes will not be run.
       * </pre>
       *
       * <code>bool xla_llvm_disable_expensive_passes = 73;</code>
       */
      public Builder clearXlaLlvmDisableExpensivePasses() {
        
        xlaLlvmDisableExpensivePasses_ = false;
        onChanged();
        return this;
      }

      private java.util.List<xla.Xla.HloReducePrecisionOptions> hloReducePrecisionOptions_ =
        java.util.Collections.emptyList();
      private void ensureHloReducePrecisionOptionsIsMutable() {
        if (!((bitField0_ & 0x01000000) == 0x01000000)) {
          hloReducePrecisionOptions_ = new java.util.ArrayList<xla.Xla.HloReducePrecisionOptions>(hloReducePrecisionOptions_);
          bitField0_ |= 0x01000000;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          xla.Xla.HloReducePrecisionOptions, xla.Xla.HloReducePrecisionOptions.Builder, xla.Xla.HloReducePrecisionOptionsOrBuilder> hloReducePrecisionOptionsBuilder_;

      /**
       * <pre>
       * Options for inserting reduce-precision operations for numerical
       * experimentation.  This is a repeated field, as we may want to have
       * multiple passes with different parameters.
       * </pre>
       *
       * <code>repeated .xla.HloReducePrecisionOptions hlo_reduce_precision_options = 80;</code>
       */
      public java.util.List<xla.Xla.HloReducePrecisionOptions> getHloReducePrecisionOptionsList() {
        if (hloReducePrecisionOptionsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(hloReducePrecisionOptions_);
        } else {
          return hloReducePrecisionOptionsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * Options for inserting reduce-precision operations for numerical
       * experimentation.  This is a repeated field, as we may want to have
       * multiple passes with different parameters.
       * </pre>
       *
       * <code>repeated .xla.HloReducePrecisionOptions hlo_reduce_precision_options = 80;</code>
       */
      public int getHloReducePrecisionOptionsCount() {
        if (hloReducePrecisionOptionsBuilder_ == null) {
          return hloReducePrecisionOptions_.size();
        } else {
          return hloReducePrecisionOptionsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * Options for inserting reduce-precision operations for numerical
       * experimentation.  This is a repeated field, as we may want to have
       * multiple passes with different parameters.
       * </pre>
       *
       * <code>repeated .xla.HloReducePrecisionOptions hlo_reduce_precision_options = 80;</code>
       */
      public xla.Xla.HloReducePrecisionOptions getHloReducePrecisionOptions(int index) {
        if (hloReducePrecisionOptionsBuilder_ == null) {
          return hloReducePrecisionOptions_.get(index);
        } else {
          return hloReducePrecisionOptionsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * Options for inserting reduce-precision operations for numerical
       * experimentation.  This is a repeated field, as we may want to have
       * multiple passes with different parameters.
       * </pre>
       *
       * <code>repeated .xla.HloReducePrecisionOptions hlo_reduce_precision_options = 80;</code>
       */
      public Builder setHloReducePrecisionOptions(
          int index, xla.Xla.HloReducePrecisionOptions value) {
        if (hloReducePrecisionOptionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureHloReducePrecisionOptionsIsMutable();
          hloReducePrecisionOptions_.set(index, value);
          onChanged();
        } else {
          hloReducePrecisionOptionsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Options for inserting reduce-precision operations for numerical
       * experimentation.  This is a repeated field, as we may want to have
       * multiple passes with different parameters.
       * </pre>
       *
       * <code>repeated .xla.HloReducePrecisionOptions hlo_reduce_precision_options = 80;</code>
       */
      public Builder setHloReducePrecisionOptions(
          int index, xla.Xla.HloReducePrecisionOptions.Builder builderForValue) {
        if (hloReducePrecisionOptionsBuilder_ == null) {
          ensureHloReducePrecisionOptionsIsMutable();
          hloReducePrecisionOptions_.set(index, builderForValue.build());
          onChanged();
        } else {
          hloReducePrecisionOptionsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Options for inserting reduce-precision operations for numerical
       * experimentation.  This is a repeated field, as we may want to have
       * multiple passes with different parameters.
       * </pre>
       *
       * <code>repeated .xla.HloReducePrecisionOptions hlo_reduce_precision_options = 80;</code>
       */
      public Builder addHloReducePrecisionOptions(xla.Xla.HloReducePrecisionOptions value) {
        if (hloReducePrecisionOptionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureHloReducePrecisionOptionsIsMutable();
          hloReducePrecisionOptions_.add(value);
          onChanged();
        } else {
          hloReducePrecisionOptionsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * Options for inserting reduce-precision operations for numerical
       * experimentation.  This is a repeated field, as we may want to have
       * multiple passes with different parameters.
       * </pre>
       *
       * <code>repeated .xla.HloReducePrecisionOptions hlo_reduce_precision_options = 80;</code>
       */
      public Builder addHloReducePrecisionOptions(
          int index, xla.Xla.HloReducePrecisionOptions value) {
        if (hloReducePrecisionOptionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureHloReducePrecisionOptionsIsMutable();
          hloReducePrecisionOptions_.add(index, value);
          onChanged();
        } else {
          hloReducePrecisionOptionsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Options for inserting reduce-precision operations for numerical
       * experimentation.  This is a repeated field, as we may want to have
       * multiple passes with different parameters.
       * </pre>
       *
       * <code>repeated .xla.HloReducePrecisionOptions hlo_reduce_precision_options = 80;</code>
       */
      public Builder addHloReducePrecisionOptions(
          xla.Xla.HloReducePrecisionOptions.Builder builderForValue) {
        if (hloReducePrecisionOptionsBuilder_ == null) {
          ensureHloReducePrecisionOptionsIsMutable();
          hloReducePrecisionOptions_.add(builderForValue.build());
          onChanged();
        } else {
          hloReducePrecisionOptionsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Options for inserting reduce-precision operations for numerical
       * experimentation.  This is a repeated field, as we may want to have
       * multiple passes with different parameters.
       * </pre>
       *
       * <code>repeated .xla.HloReducePrecisionOptions hlo_reduce_precision_options = 80;</code>
       */
      public Builder addHloReducePrecisionOptions(
          int index, xla.Xla.HloReducePrecisionOptions.Builder builderForValue) {
        if (hloReducePrecisionOptionsBuilder_ == null) {
          ensureHloReducePrecisionOptionsIsMutable();
          hloReducePrecisionOptions_.add(index, builderForValue.build());
          onChanged();
        } else {
          hloReducePrecisionOptionsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Options for inserting reduce-precision operations for numerical
       * experimentation.  This is a repeated field, as we may want to have
       * multiple passes with different parameters.
       * </pre>
       *
       * <code>repeated .xla.HloReducePrecisionOptions hlo_reduce_precision_options = 80;</code>
       */
      public Builder addAllHloReducePrecisionOptions(
          java.lang.Iterable<? extends xla.Xla.HloReducePrecisionOptions> values) {
        if (hloReducePrecisionOptionsBuilder_ == null) {
          ensureHloReducePrecisionOptionsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, hloReducePrecisionOptions_);
          onChanged();
        } else {
          hloReducePrecisionOptionsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * Options for inserting reduce-precision operations for numerical
       * experimentation.  This is a repeated field, as we may want to have
       * multiple passes with different parameters.
       * </pre>
       *
       * <code>repeated .xla.HloReducePrecisionOptions hlo_reduce_precision_options = 80;</code>
       */
      public Builder clearHloReducePrecisionOptions() {
        if (hloReducePrecisionOptionsBuilder_ == null) {
          hloReducePrecisionOptions_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x01000000);
          onChanged();
        } else {
          hloReducePrecisionOptionsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Options for inserting reduce-precision operations for numerical
       * experimentation.  This is a repeated field, as we may want to have
       * multiple passes with different parameters.
       * </pre>
       *
       * <code>repeated .xla.HloReducePrecisionOptions hlo_reduce_precision_options = 80;</code>
       */
      public Builder removeHloReducePrecisionOptions(int index) {
        if (hloReducePrecisionOptionsBuilder_ == null) {
          ensureHloReducePrecisionOptionsIsMutable();
          hloReducePrecisionOptions_.remove(index);
          onChanged();
        } else {
          hloReducePrecisionOptionsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * Options for inserting reduce-precision operations for numerical
       * experimentation.  This is a repeated field, as we may want to have
       * multiple passes with different parameters.
       * </pre>
       *
       * <code>repeated .xla.HloReducePrecisionOptions hlo_reduce_precision_options = 80;</code>
       */
      public xla.Xla.HloReducePrecisionOptions.Builder getHloReducePrecisionOptionsBuilder(
          int index) {
        return getHloReducePrecisionOptionsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * Options for inserting reduce-precision operations for numerical
       * experimentation.  This is a repeated field, as we may want to have
       * multiple passes with different parameters.
       * </pre>
       *
       * <code>repeated .xla.HloReducePrecisionOptions hlo_reduce_precision_options = 80;</code>
       */
      public xla.Xla.HloReducePrecisionOptionsOrBuilder getHloReducePrecisionOptionsOrBuilder(
          int index) {
        if (hloReducePrecisionOptionsBuilder_ == null) {
          return hloReducePrecisionOptions_.get(index);  } else {
          return hloReducePrecisionOptionsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * Options for inserting reduce-precision operations for numerical
       * experimentation.  This is a repeated field, as we may want to have
       * multiple passes with different parameters.
       * </pre>
       *
       * <code>repeated .xla.HloReducePrecisionOptions hlo_reduce_precision_options = 80;</code>
       */
      public java.util.List<? extends xla.Xla.HloReducePrecisionOptionsOrBuilder> 
           getHloReducePrecisionOptionsOrBuilderList() {
        if (hloReducePrecisionOptionsBuilder_ != null) {
          return hloReducePrecisionOptionsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(hloReducePrecisionOptions_);
        }
      }
      /**
       * <pre>
       * Options for inserting reduce-precision operations for numerical
       * experimentation.  This is a repeated field, as we may want to have
       * multiple passes with different parameters.
       * </pre>
       *
       * <code>repeated .xla.HloReducePrecisionOptions hlo_reduce_precision_options = 80;</code>
       */
      public xla.Xla.HloReducePrecisionOptions.Builder addHloReducePrecisionOptionsBuilder() {
        return getHloReducePrecisionOptionsFieldBuilder().addBuilder(
            xla.Xla.HloReducePrecisionOptions.getDefaultInstance());
      }
      /**
       * <pre>
       * Options for inserting reduce-precision operations for numerical
       * experimentation.  This is a repeated field, as we may want to have
       * multiple passes with different parameters.
       * </pre>
       *
       * <code>repeated .xla.HloReducePrecisionOptions hlo_reduce_precision_options = 80;</code>
       */
      public xla.Xla.HloReducePrecisionOptions.Builder addHloReducePrecisionOptionsBuilder(
          int index) {
        return getHloReducePrecisionOptionsFieldBuilder().addBuilder(
            index, xla.Xla.HloReducePrecisionOptions.getDefaultInstance());
      }
      /**
       * <pre>
       * Options for inserting reduce-precision operations for numerical
       * experimentation.  This is a repeated field, as we may want to have
       * multiple passes with different parameters.
       * </pre>
       *
       * <code>repeated .xla.HloReducePrecisionOptions hlo_reduce_precision_options = 80;</code>
       */
      public java.util.List<xla.Xla.HloReducePrecisionOptions.Builder> 
           getHloReducePrecisionOptionsBuilderList() {
        return getHloReducePrecisionOptionsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          xla.Xla.HloReducePrecisionOptions, xla.Xla.HloReducePrecisionOptions.Builder, xla.Xla.HloReducePrecisionOptionsOrBuilder> 
          getHloReducePrecisionOptionsFieldBuilder() {
        if (hloReducePrecisionOptionsBuilder_ == null) {
          hloReducePrecisionOptionsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              xla.Xla.HloReducePrecisionOptions, xla.Xla.HloReducePrecisionOptions.Builder, xla.Xla.HloReducePrecisionOptionsOrBuilder>(
                  hloReducePrecisionOptions_,
                  ((bitField0_ & 0x01000000) == 0x01000000),
                  getParentForChildren(),
                  isClean());
          hloReducePrecisionOptions_ = null;
        }
        return hloReducePrecisionOptionsBuilder_;
      }

      private boolean xlaTestAllOutputLayouts_ ;
      /**
       * <pre>
       * This is used by ClientLibraryTestBase::ComputeAndCompare*. If true, the
       * computation will run n! times with all permunations of layouts for the
       * output shape in rank n. For example, with a 3D shape, all permutations of
       * the set {0, 1, 2} are tried.
       * </pre>
       *
       * <code>bool xla_test_all_output_layouts = 90;</code>
       */
      public boolean getXlaTestAllOutputLayouts() {
        return xlaTestAllOutputLayouts_;
      }
      /**
       * <pre>
       * This is used by ClientLibraryTestBase::ComputeAndCompare*. If true, the
       * computation will run n! times with all permunations of layouts for the
       * output shape in rank n. For example, with a 3D shape, all permutations of
       * the set {0, 1, 2} are tried.
       * </pre>
       *
       * <code>bool xla_test_all_output_layouts = 90;</code>
       */
      public Builder setXlaTestAllOutputLayouts(boolean value) {
        
        xlaTestAllOutputLayouts_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * This is used by ClientLibraryTestBase::ComputeAndCompare*. If true, the
       * computation will run n! times with all permunations of layouts for the
       * output shape in rank n. For example, with a 3D shape, all permutations of
       * the set {0, 1, 2} are tried.
       * </pre>
       *
       * <code>bool xla_test_all_output_layouts = 90;</code>
       */
      public Builder clearXlaTestAllOutputLayouts() {
        
        xlaTestAllOutputLayouts_ = false;
        onChanged();
        return this;
      }

      private boolean xlaTestAllInputLayouts_ ;
      /**
       * <pre>
       * This is used by ClientLibraryTestBase::ComputeAndCompare*. If true, the
       * computation will run for all permunations of layouts of all input
       * arguments. For example, with 2 input arguments in 2D and 4D shapes, the
       * computation will run 2! * 4! times.
       * </pre>
       *
       * <code>bool xla_test_all_input_layouts = 91;</code>
       */
      public boolean getXlaTestAllInputLayouts() {
        return xlaTestAllInputLayouts_;
      }
      /**
       * <pre>
       * This is used by ClientLibraryTestBase::ComputeAndCompare*. If true, the
       * computation will run for all permunations of layouts of all input
       * arguments. For example, with 2 input arguments in 2D and 4D shapes, the
       * computation will run 2! * 4! times.
       * </pre>
       *
       * <code>bool xla_test_all_input_layouts = 91;</code>
       */
      public Builder setXlaTestAllInputLayouts(boolean value) {
        
        xlaTestAllInputLayouts_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * This is used by ClientLibraryTestBase::ComputeAndCompare*. If true, the
       * computation will run for all permunations of layouts of all input
       * arguments. For example, with 2 input arguments in 2D and 4D shapes, the
       * computation will run 2! * 4! times.
       * </pre>
       *
       * <code>bool xla_test_all_input_layouts = 91;</code>
       */
      public Builder clearXlaTestAllInputLayouts() {
        
        xlaTestAllInputLayouts_ = false;
        onChanged();
        return this;
      }

      private boolean xlaHloGraphShardingColor_ ;
      /**
       * <pre>
       * Assign colors based on sharding information when generating the Graphviz
       * HLO graph.
       * </pre>
       *
       * <code>bool xla_hlo_graph_sharding_color = 92;</code>
       */
      public boolean getXlaHloGraphShardingColor() {
        return xlaHloGraphShardingColor_;
      }
      /**
       * <pre>
       * Assign colors based on sharding information when generating the Graphviz
       * HLO graph.
       * </pre>
       *
       * <code>bool xla_hlo_graph_sharding_color = 92;</code>
       */
      public Builder setXlaHloGraphShardingColor(boolean value) {
        
        xlaHloGraphShardingColor_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Assign colors based on sharding information when generating the Graphviz
       * HLO graph.
       * </pre>
       *
       * <code>bool xla_hlo_graph_sharding_color = 92;</code>
       */
      public Builder clearXlaHloGraphShardingColor() {
        
        xlaHloGraphShardingColor_ = false;
        onChanged();
        return this;
      }

      private boolean xlaHloTfgraphDeviceScopes_ ;
      /**
       * <pre>
       * Prefix the name scopes of the TF graph exports with "devX" device
       * assignments, if available.
       * </pre>
       *
       * <code>bool xla_hlo_tfgraph_device_scopes = 93;</code>
       */
      public boolean getXlaHloTfgraphDeviceScopes() {
        return xlaHloTfgraphDeviceScopes_;
      }
      /**
       * <pre>
       * Prefix the name scopes of the TF graph exports with "devX" device
       * assignments, if available.
       * </pre>
       *
       * <code>bool xla_hlo_tfgraph_device_scopes = 93;</code>
       */
      public Builder setXlaHloTfgraphDeviceScopes(boolean value) {
        
        xlaHloTfgraphDeviceScopes_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Prefix the name scopes of the TF graph exports with "devX" device
       * assignments, if available.
       * </pre>
       *
       * <code>bool xla_hlo_tfgraph_device_scopes = 93;</code>
       */
      public Builder clearXlaHloTfgraphDeviceScopes() {
        
        xlaHloTfgraphDeviceScopes_ = false;
        onChanged();
        return this;
      }

      private boolean xlaGpuUseCudnnBatchnorm_ ;
      /**
       * <pre>
       * If true, the GPU backend is free to use cudnn for HLO batch normalization
       * ops.
       * </pre>
       *
       * <code>bool xla_gpu_use_cudnn_batchnorm = 94;</code>
       */
      public boolean getXlaGpuUseCudnnBatchnorm() {
        return xlaGpuUseCudnnBatchnorm_;
      }
      /**
       * <pre>
       * If true, the GPU backend is free to use cudnn for HLO batch normalization
       * ops.
       * </pre>
       *
       * <code>bool xla_gpu_use_cudnn_batchnorm = 94;</code>
       */
      public Builder setXlaGpuUseCudnnBatchnorm(boolean value) {
        
        xlaGpuUseCudnnBatchnorm_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * If true, the GPU backend is free to use cudnn for HLO batch normalization
       * ops.
       * </pre>
       *
       * <code>bool xla_gpu_use_cudnn_batchnorm = 94;</code>
       */
      public Builder clearXlaGpuUseCudnnBatchnorm() {
        
        xlaGpuUseCudnnBatchnorm_ = false;
        onChanged();
        return this;
      }

      private java.lang.Object xlaDumpUnoptimizedHloProtoTo_ = "";
      /**
       * <pre>
       * Dump HLO before any hlo passes are executed as proto binary into this
       * directory.
       * </pre>
       *
       * <code>string xla_dump_unoptimized_hlo_proto_to = 95;</code>
       */
      public java.lang.String getXlaDumpUnoptimizedHloProtoTo() {
        java.lang.Object ref = xlaDumpUnoptimizedHloProtoTo_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          xlaDumpUnoptimizedHloProtoTo_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Dump HLO before any hlo passes are executed as proto binary into this
       * directory.
       * </pre>
       *
       * <code>string xla_dump_unoptimized_hlo_proto_to = 95;</code>
       */
      public com.google.protobuf.ByteString
          getXlaDumpUnoptimizedHloProtoToBytes() {
        java.lang.Object ref = xlaDumpUnoptimizedHloProtoTo_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          xlaDumpUnoptimizedHloProtoTo_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Dump HLO before any hlo passes are executed as proto binary into this
       * directory.
       * </pre>
       *
       * <code>string xla_dump_unoptimized_hlo_proto_to = 95;</code>
       */
      public Builder setXlaDumpUnoptimizedHloProtoTo(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        xlaDumpUnoptimizedHloProtoTo_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Dump HLO before any hlo passes are executed as proto binary into this
       * directory.
       * </pre>
       *
       * <code>string xla_dump_unoptimized_hlo_proto_to = 95;</code>
       */
      public Builder clearXlaDumpUnoptimizedHloProtoTo() {
        
        xlaDumpUnoptimizedHloProtoTo_ = getDefaultInstance().getXlaDumpUnoptimizedHloProtoTo();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Dump HLO before any hlo passes are executed as proto binary into this
       * directory.
       * </pre>
       *
       * <code>string xla_dump_unoptimized_hlo_proto_to = 95;</code>
       */
      public Builder setXlaDumpUnoptimizedHloProtoToBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        xlaDumpUnoptimizedHloProtoTo_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object xlaDumpPerPassHloProtoTo_ = "";
      /**
       * <pre>
       * Dump HLO after each pass as an HloProto in binary file format into this
       * directory.
       * </pre>
       *
       * <code>string xla_dump_per_pass_hlo_proto_to = 96;</code>
       */
      public java.lang.String getXlaDumpPerPassHloProtoTo() {
        java.lang.Object ref = xlaDumpPerPassHloProtoTo_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          xlaDumpPerPassHloProtoTo_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Dump HLO after each pass as an HloProto in binary file format into this
       * directory.
       * </pre>
       *
       * <code>string xla_dump_per_pass_hlo_proto_to = 96;</code>
       */
      public com.google.protobuf.ByteString
          getXlaDumpPerPassHloProtoToBytes() {
        java.lang.Object ref = xlaDumpPerPassHloProtoTo_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          xlaDumpPerPassHloProtoTo_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Dump HLO after each pass as an HloProto in binary file format into this
       * directory.
       * </pre>
       *
       * <code>string xla_dump_per_pass_hlo_proto_to = 96;</code>
       */
      public Builder setXlaDumpPerPassHloProtoTo(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        xlaDumpPerPassHloProtoTo_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Dump HLO after each pass as an HloProto in binary file format into this
       * directory.
       * </pre>
       *
       * <code>string xla_dump_per_pass_hlo_proto_to = 96;</code>
       */
      public Builder clearXlaDumpPerPassHloProtoTo() {
        
        xlaDumpPerPassHloProtoTo_ = getDefaultInstance().getXlaDumpPerPassHloProtoTo();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Dump HLO after each pass as an HloProto in binary file format into this
       * directory.
       * </pre>
       *
       * <code>string xla_dump_per_pass_hlo_proto_to = 96;</code>
       */
      public Builder setXlaDumpPerPassHloProtoToBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        xlaDumpPerPassHloProtoTo_ = value;
        onChanged();
        return this;
      }

      private boolean xlaCpuUseMklDnn_ ;
      /**
       * <pre>
       * Generate calls to MKL-DNN in the CPU backend.
       * </pre>
       *
       * <code>bool xla_cpu_use_mkl_dnn = 97;</code>
       */
      public boolean getXlaCpuUseMklDnn() {
        return xlaCpuUseMklDnn_;
      }
      /**
       * <pre>
       * Generate calls to MKL-DNN in the CPU backend.
       * </pre>
       *
       * <code>bool xla_cpu_use_mkl_dnn = 97;</code>
       */
      public Builder setXlaCpuUseMklDnn(boolean value) {
        
        xlaCpuUseMklDnn_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Generate calls to MKL-DNN in the CPU backend.
       * </pre>
       *
       * <code>bool xla_cpu_use_mkl_dnn = 97;</code>
       */
      public Builder clearXlaCpuUseMklDnn() {
        
        xlaCpuUseMklDnn_ = false;
        onChanged();
        return this;
      }

      private com.google.protobuf.MapField<
          java.lang.String, java.lang.String> xlaBackendExtraOptions_;
      private com.google.protobuf.MapField<java.lang.String, java.lang.String>
      internalGetXlaBackendExtraOptions() {
        if (xlaBackendExtraOptions_ == null) {
          return com.google.protobuf.MapField.emptyMapField(
              XlaBackendExtraOptionsDefaultEntryHolder.defaultEntry);
        }
        return xlaBackendExtraOptions_;
      }
      private com.google.protobuf.MapField<java.lang.String, java.lang.String>
      internalGetMutableXlaBackendExtraOptions() {
        onChanged();;
        if (xlaBackendExtraOptions_ == null) {
          xlaBackendExtraOptions_ = com.google.protobuf.MapField.newMapField(
              XlaBackendExtraOptionsDefaultEntryHolder.defaultEntry);
        }
        if (!xlaBackendExtraOptions_.isMutable()) {
          xlaBackendExtraOptions_ = xlaBackendExtraOptions_.copy();
        }
        return xlaBackendExtraOptions_;
      }

      public int getXlaBackendExtraOptionsCount() {
        return internalGetXlaBackendExtraOptions().getMap().size();
      }
      /**
       * <pre>
       * Extra options to pass to the compilation backend; specific interpretation
       * of these values is left to the backend.
       * </pre>
       *
       * <code>map&lt;string, string&gt; xla_backend_extra_options = 500;</code>
       */

      public boolean containsXlaBackendExtraOptions(
          java.lang.String key) {
        if (key == null) { throw new java.lang.NullPointerException(); }
        return internalGetXlaBackendExtraOptions().getMap().containsKey(key);
      }
      /**
       * Use {@link #getXlaBackendExtraOptionsMap()} instead.
       */
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, java.lang.String> getXlaBackendExtraOptions() {
        return getXlaBackendExtraOptionsMap();
      }
      /**
       * <pre>
       * Extra options to pass to the compilation backend; specific interpretation
       * of these values is left to the backend.
       * </pre>
       *
       * <code>map&lt;string, string&gt; xla_backend_extra_options = 500;</code>
       */

      public java.util.Map<java.lang.String, java.lang.String> getXlaBackendExtraOptionsMap() {
        return internalGetXlaBackendExtraOptions().getMap();
      }
      /**
       * <pre>
       * Extra options to pass to the compilation backend; specific interpretation
       * of these values is left to the backend.
       * </pre>
       *
       * <code>map&lt;string, string&gt; xla_backend_extra_options = 500;</code>
       */

      public java.lang.String getXlaBackendExtraOptionsOrDefault(
          java.lang.String key,
          java.lang.String defaultValue) {
        if (key == null) { throw new java.lang.NullPointerException(); }
        java.util.Map<java.lang.String, java.lang.String> map =
            internalGetXlaBackendExtraOptions().getMap();
        return map.containsKey(key) ? map.get(key) : defaultValue;
      }
      /**
       * <pre>
       * Extra options to pass to the compilation backend; specific interpretation
       * of these values is left to the backend.
       * </pre>
       *
       * <code>map&lt;string, string&gt; xla_backend_extra_options = 500;</code>
       */

      public java.lang.String getXlaBackendExtraOptionsOrThrow(
          java.lang.String key) {
        if (key == null) { throw new java.lang.NullPointerException(); }
        java.util.Map<java.lang.String, java.lang.String> map =
            internalGetXlaBackendExtraOptions().getMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return map.get(key);
      }

      public Builder clearXlaBackendExtraOptions() {
        internalGetMutableXlaBackendExtraOptions().getMutableMap()
            .clear();
        return this;
      }
      /**
       * <pre>
       * Extra options to pass to the compilation backend; specific interpretation
       * of these values is left to the backend.
       * </pre>
       *
       * <code>map&lt;string, string&gt; xla_backend_extra_options = 500;</code>
       */

      public Builder removeXlaBackendExtraOptions(
          java.lang.String key) {
        if (key == null) { throw new java.lang.NullPointerException(); }
        internalGetMutableXlaBackendExtraOptions().getMutableMap()
            .remove(key);
        return this;
      }
      /**
       * Use alternate mutation accessors instead.
       */
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, java.lang.String>
      getMutableXlaBackendExtraOptions() {
        return internalGetMutableXlaBackendExtraOptions().getMutableMap();
      }
      /**
       * <pre>
       * Extra options to pass to the compilation backend; specific interpretation
       * of these values is left to the backend.
       * </pre>
       *
       * <code>map&lt;string, string&gt; xla_backend_extra_options = 500;</code>
       */
      public Builder putXlaBackendExtraOptions(
          java.lang.String key,
          java.lang.String value) {
        if (key == null) { throw new java.lang.NullPointerException(); }
        if (value == null) { throw new java.lang.NullPointerException(); }
        internalGetMutableXlaBackendExtraOptions().getMutableMap()
            .put(key, value);
        return this;
      }
      /**
       * <pre>
       * Extra options to pass to the compilation backend; specific interpretation
       * of these values is left to the backend.
       * </pre>
       *
       * <code>map&lt;string, string&gt; xla_backend_extra_options = 500;</code>
       */

      public Builder putAllXlaBackendExtraOptions(
          java.util.Map<java.lang.String, java.lang.String> values) {
        internalGetMutableXlaBackendExtraOptions().getMutableMap()
            .putAll(values);
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

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


      // @@protoc_insertion_point(builder_scope:xla.DebugOptions)
    }

    // @@protoc_insertion_point(class_scope:xla.DebugOptions)
    private static final xla.Xla.DebugOptions DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new xla.Xla.DebugOptions();
    }

    public static xla.Xla.DebugOptions getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public xla.Xla.DebugOptions getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ExecutionOptionsOrBuilder extends
      // @@protoc_insertion_point(interface_extends:xla.ExecutionOptions)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * This optional field's layout is used as a hint when storing the output of
     * this computation.  Subsequent transfers of this output array to the client
     * may be faster when using this layout.
     * We use a Shape here to accommodate computations that return a tuple.
     * </pre>
     *
     * <code>.xla.Shape shape_with_output_layout = 2;</code>
     */
    boolean hasShapeWithOutputLayout();
    /**
     * <pre>
     * This optional field's layout is used as a hint when storing the output of
     * this computation.  Subsequent transfers of this output array to the client
     * may be faster when using this layout.
     * We use a Shape here to accommodate computations that return a tuple.
     * </pre>
     *
     * <code>.xla.Shape shape_with_output_layout = 2;</code>
     */
    xla.XlaData.Shape getShapeWithOutputLayout();
    /**
     * <pre>
     * This optional field's layout is used as a hint when storing the output of
     * this computation.  Subsequent transfers of this output array to the client
     * may be faster when using this layout.
     * We use a Shape here to accommodate computations that return a tuple.
     * </pre>
     *
     * <code>.xla.Shape shape_with_output_layout = 2;</code>
     */
    xla.XlaData.ShapeOrBuilder getShapeWithOutputLayoutOrBuilder();

    /**
     * <pre>
     * Used to seed random-number generators used in this computation.  If this is
     * 0, we generate a seed ourselves.
     * TODO(b/32083678): Changing the seed unnecessarily forces a recompilation.
     * </pre>
     *
     * <code>uint64 seed = 3;</code>
     */
    long getSeed();

    /**
     * <code>.xla.DebugOptions debug_options = 4;</code>
     */
    boolean hasDebugOptions();
    /**
     * <code>.xla.DebugOptions debug_options = 4;</code>
     */
    xla.Xla.DebugOptions getDebugOptions();
    /**
     * <code>.xla.DebugOptions debug_options = 4;</code>
     */
    xla.Xla.DebugOptionsOrBuilder getDebugOptionsOrBuilder();

    /**
     * <pre>
     * This optional field specifies a particular set of devices to run the
     * computation on. The computation will be partitioned across these devices.
     * If not provided, the default device will be chosen.
     * </pre>
     *
     * <code>repeated .xla.DeviceHandle device_handles = 5;</code>
     */
    java.util.List<xla.XlaData.DeviceHandle> 
        getDeviceHandlesList();
    /**
     * <pre>
     * This optional field specifies a particular set of devices to run the
     * computation on. The computation will be partitioned across these devices.
     * If not provided, the default device will be chosen.
     * </pre>
     *
     * <code>repeated .xla.DeviceHandle device_handles = 5;</code>
     */
    xla.XlaData.DeviceHandle getDeviceHandles(int index);
    /**
     * <pre>
     * This optional field specifies a particular set of devices to run the
     * computation on. The computation will be partitioned across these devices.
     * If not provided, the default device will be chosen.
     * </pre>
     *
     * <code>repeated .xla.DeviceHandle device_handles = 5;</code>
     */
    int getDeviceHandlesCount();
    /**
     * <pre>
     * This optional field specifies a particular set of devices to run the
     * computation on. The computation will be partitioned across these devices.
     * If not provided, the default device will be chosen.
     * </pre>
     *
     * <code>repeated .xla.DeviceHandle device_handles = 5;</code>
     */
    java.util.List<? extends xla.XlaData.DeviceHandleOrBuilder> 
        getDeviceHandlesOrBuilderList();
    /**
     * <pre>
     * This optional field specifies a particular set of devices to run the
     * computation on. The computation will be partitioned across these devices.
     * If not provided, the default device will be chosen.
     * </pre>
     *
     * <code>repeated .xla.DeviceHandle device_handles = 5;</code>
     */
    xla.XlaData.DeviceHandleOrBuilder getDeviceHandlesOrBuilder(
        int index);
  }
  /**
   * <pre>
   * These settings control how XLA compiles and/or runs code.  Not all settings
   * will have an effect on every platform.
   * When adding new fields, keep in mind that boolean fields default to false.
   * </pre>
   *
   * Protobuf type {@code xla.ExecutionOptions}
   */
  public  static final class ExecutionOptions extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:xla.ExecutionOptions)
      ExecutionOptionsOrBuilder {
    // Use ExecutionOptions.newBuilder() to construct.
    private ExecutionOptions(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ExecutionOptions() {
      seed_ = 0L;
      deviceHandles_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private ExecutionOptions(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 18: {
              xla.XlaData.Shape.Builder subBuilder = null;
              if (shapeWithOutputLayout_ != null) {
                subBuilder = shapeWithOutputLayout_.toBuilder();
              }
              shapeWithOutputLayout_ = input.readMessage(xla.XlaData.Shape.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(shapeWithOutputLayout_);
                shapeWithOutputLayout_ = subBuilder.buildPartial();
              }

              break;
            }
            case 24: {

              seed_ = input.readUInt64();
              break;
            }
            case 34: {
              xla.Xla.DebugOptions.Builder subBuilder = null;
              if (debugOptions_ != null) {
                subBuilder = debugOptions_.toBuilder();
              }
              debugOptions_ = input.readMessage(xla.Xla.DebugOptions.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(debugOptions_);
                debugOptions_ = subBuilder.buildPartial();
              }

              break;
            }
            case 42: {
              if (!((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
                deviceHandles_ = new java.util.ArrayList<xla.XlaData.DeviceHandle>();
                mutable_bitField0_ |= 0x00000008;
              }
              deviceHandles_.add(
                  input.readMessage(xla.XlaData.DeviceHandle.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_ & 0x00000008) == 0x00000008)) {
          deviceHandles_ = java.util.Collections.unmodifiableList(deviceHandles_);
        }
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return xla.Xla.internal_static_xla_ExecutionOptions_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return xla.Xla.internal_static_xla_ExecutionOptions_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              xla.Xla.ExecutionOptions.class, xla.Xla.ExecutionOptions.Builder.class);
    }

    private int bitField0_;
    public static final int SHAPE_WITH_OUTPUT_LAYOUT_FIELD_NUMBER = 2;
    private xla.XlaData.Shape shapeWithOutputLayout_;
    /**
     * <pre>
     * This optional field's layout is used as a hint when storing the output of
     * this computation.  Subsequent transfers of this output array to the client
     * may be faster when using this layout.
     * We use a Shape here to accommodate computations that return a tuple.
     * </pre>
     *
     * <code>.xla.Shape shape_with_output_layout = 2;</code>
     */
    public boolean hasShapeWithOutputLayout() {
      return shapeWithOutputLayout_ != null;
    }
    /**
     * <pre>
     * This optional field's layout is used as a hint when storing the output of
     * this computation.  Subsequent transfers of this output array to the client
     * may be faster when using this layout.
     * We use a Shape here to accommodate computations that return a tuple.
     * </pre>
     *
     * <code>.xla.Shape shape_with_output_layout = 2;</code>
     */
    public xla.XlaData.Shape getShapeWithOutputLayout() {
      return shapeWithOutputLayout_ == null ? xla.XlaData.Shape.getDefaultInstance() : shapeWithOutputLayout_;
    }
    /**
     * <pre>
     * This optional field's layout is used as a hint when storing the output of
     * this computation.  Subsequent transfers of this output array to the client
     * may be faster when using this layout.
     * We use a Shape here to accommodate computations that return a tuple.
     * </pre>
     *
     * <code>.xla.Shape shape_with_output_layout = 2;</code>
     */
    public xla.XlaData.ShapeOrBuilder getShapeWithOutputLayoutOrBuilder() {
      return getShapeWithOutputLayout();
    }

    public static final int SEED_FIELD_NUMBER = 3;
    private long seed_;
    /**
     * <pre>
     * Used to seed random-number generators used in this computation.  If this is
     * 0, we generate a seed ourselves.
     * TODO(b/32083678): Changing the seed unnecessarily forces a recompilation.
     * </pre>
     *
     * <code>uint64 seed = 3;</code>
     */
    public long getSeed() {
      return seed_;
    }

    public static final int DEBUG_OPTIONS_FIELD_NUMBER = 4;
    private xla.Xla.DebugOptions debugOptions_;
    /**
     * <code>.xla.DebugOptions debug_options = 4;</code>
     */
    public boolean hasDebugOptions() {
      return debugOptions_ != null;
    }
    /**
     * <code>.xla.DebugOptions debug_options = 4;</code>
     */
    public xla.Xla.DebugOptions getDebugOptions() {
      return debugOptions_ == null ? xla.Xla.DebugOptions.getDefaultInstance() : debugOptions_;
    }
    /**
     * <code>.xla.DebugOptions debug_options = 4;</code>
     */
    public xla.Xla.DebugOptionsOrBuilder getDebugOptionsOrBuilder() {
      return getDebugOptions();
    }

    public static final int DEVICE_HANDLES_FIELD_NUMBER = 5;
    private java.util.List<xla.XlaData.DeviceHandle> deviceHandles_;
    /**
     * <pre>
     * This optional field specifies a particular set of devices to run the
     * computation on. The computation will be partitioned across these devices.
     * If not provided, the default device will be chosen.
     * </pre>
     *
     * <code>repeated .xla.DeviceHandle device_handles = 5;</code>
     */
    public java.util.List<xla.XlaData.DeviceHandle> getDeviceHandlesList() {
      return deviceHandles_;
    }
    /**
     * <pre>
     * This optional field specifies a particular set of devices to run the
     * computation on. The computation will be partitioned across these devices.
     * If not provided, the default device will be chosen.
     * </pre>
     *
     * <code>repeated .xla.DeviceHandle device_handles = 5;</code>
     */
    public java.util.List<? extends xla.XlaData.DeviceHandleOrBuilder> 
        getDeviceHandlesOrBuilderList() {
      return deviceHandles_;
    }
    /**
     * <pre>
     * This optional field specifies a particular set of devices to run the
     * computation on. The computation will be partitioned across these devices.
     * If not provided, the default device will be chosen.
     * </pre>
     *
     * <code>repeated .xla.DeviceHandle device_handles = 5;</code>
     */
    public int getDeviceHandlesCount() {
      return deviceHandles_.size();
    }
    /**
     * <pre>
     * This optional field specifies a particular set of devices to run the
     * computation on. The computation will be partitioned across these devices.
     * If not provided, the default device will be chosen.
     * </pre>
     *
     * <code>repeated .xla.DeviceHandle device_handles = 5;</code>
     */
    public xla.XlaData.DeviceHandle getDeviceHandles(int index) {
      return deviceHandles_.get(index);
    }
    /**
     * <pre>
     * This optional field specifies a particular set of devices to run the
     * computation on. The computation will be partitioned across these devices.
     * If not provided, the default device will be chosen.
     * </pre>
     *
     * <code>repeated .xla.DeviceHandle device_handles = 5;</code>
     */
    public xla.XlaData.DeviceHandleOrBuilder getDeviceHandlesOrBuilder(
        int index) {
      return deviceHandles_.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 (shapeWithOutputLayout_ != null) {
        output.writeMessage(2, getShapeWithOutputLayout());
      }
      if (seed_ != 0L) {
        output.writeUInt64(3, seed_);
      }
      if (debugOptions_ != null) {
        output.writeMessage(4, getDebugOptions());
      }
      for (int i = 0; i < deviceHandles_.size(); i++) {
        output.writeMessage(5, deviceHandles_.get(i));
      }
    }

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

      size = 0;
      if (shapeWithOutputLayout_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getShapeWithOutputLayout());
      }
      if (seed_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(3, seed_);
      }
      if (debugOptions_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, getDebugOptions());
      }
      for (int i = 0; i < deviceHandles_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, deviceHandles_.get(i));
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof xla.Xla.ExecutionOptions)) {
        return super.equals(obj);
      }
      xla.Xla.ExecutionOptions other = (xla.Xla.ExecutionOptions) obj;

      boolean result = true;
      result = result && (hasShapeWithOutputLayout() == other.hasShapeWithOutputLayout());
      if (hasShapeWithOutputLayout()) {
        result = result && getShapeWithOutputLayout()
            .equals(other.getShapeWithOutputLayout());
      }
      result = result && (getSeed()
          == other.getSeed());
      result = result && (hasDebugOptions() == other.hasDebugOptions());
      if (hasDebugOptions()) {
        result = result && getDebugOptions()
            .equals(other.getDebugOptions());
      }
      result = result && getDeviceHandlesList()
          .equals(other.getDeviceHandlesList());
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasShapeWithOutputLayout()) {
        hash = (37 * hash) + SHAPE_WITH_OUTPUT_LAYOUT_FIELD_NUMBER;
        hash = (53 * hash) + getShapeWithOutputLayout().hashCode();
      }
      hash = (37 * hash) + SEED_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getSeed());
      if (hasDebugOptions()) {
        hash = (37 * hash) + DEBUG_OPTIONS_FIELD_NUMBER;
        hash = (53 * hash) + getDebugOptions().hashCode();
      }
      if (getDeviceHandlesCount() > 0) {
        hash = (37 * hash) + DEVICE_HANDLES_FIELD_NUMBER;
        hash = (53 * hash) + getDeviceHandlesList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static xla.Xla.ExecutionOptions parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.ExecutionOptions parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.ExecutionOptions parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.ExecutionOptions parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.ExecutionOptions parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.ExecutionOptions 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 xla.Xla.ExecutionOptions parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static xla.Xla.ExecutionOptions 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 xla.Xla.ExecutionOptions parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.ExecutionOptions 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(xla.Xla.ExecutionOptions 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;
    }
    /**
     * <pre>
     * These settings control how XLA compiles and/or runs code.  Not all settings
     * will have an effect on every platform.
     * When adding new fields, keep in mind that boolean fields default to false.
     * </pre>
     *
     * Protobuf type {@code xla.ExecutionOptions}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:xla.ExecutionOptions)
        xla.Xla.ExecutionOptionsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return xla.Xla.internal_static_xla_ExecutionOptions_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return xla.Xla.internal_static_xla_ExecutionOptions_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                xla.Xla.ExecutionOptions.class, xla.Xla.ExecutionOptions.Builder.class);
      }

      // Construct using xla.Xla.ExecutionOptions.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getDeviceHandlesFieldBuilder();
        }
      }
      public Builder clear() {
        super.clear();
        if (shapeWithOutputLayoutBuilder_ == null) {
          shapeWithOutputLayout_ = null;
        } else {
          shapeWithOutputLayout_ = null;
          shapeWithOutputLayoutBuilder_ = null;
        }
        seed_ = 0L;

        if (debugOptionsBuilder_ == null) {
          debugOptions_ = null;
        } else {
          debugOptions_ = null;
          debugOptionsBuilder_ = null;
        }
        if (deviceHandlesBuilder_ == null) {
          deviceHandles_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000008);
        } else {
          deviceHandlesBuilder_.clear();
        }
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return xla.Xla.internal_static_xla_ExecutionOptions_descriptor;
      }

      public xla.Xla.ExecutionOptions getDefaultInstanceForType() {
        return xla.Xla.ExecutionOptions.getDefaultInstance();
      }

      public xla.Xla.ExecutionOptions build() {
        xla.Xla.ExecutionOptions result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public xla.Xla.ExecutionOptions buildPartial() {
        xla.Xla.ExecutionOptions result = new xla.Xla.ExecutionOptions(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (shapeWithOutputLayoutBuilder_ == null) {
          result.shapeWithOutputLayout_ = shapeWithOutputLayout_;
        } else {
          result.shapeWithOutputLayout_ = shapeWithOutputLayoutBuilder_.build();
        }
        result.seed_ = seed_;
        if (debugOptionsBuilder_ == null) {
          result.debugOptions_ = debugOptions_;
        } else {
          result.debugOptions_ = debugOptionsBuilder_.build();
        }
        if (deviceHandlesBuilder_ == null) {
          if (((bitField0_ & 0x00000008) == 0x00000008)) {
            deviceHandles_ = java.util.Collections.unmodifiableList(deviceHandles_);
            bitField0_ = (bitField0_ & ~0x00000008);
          }
          result.deviceHandles_ = deviceHandles_;
        } else {
          result.deviceHandles_ = deviceHandlesBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof xla.Xla.ExecutionOptions) {
          return mergeFrom((xla.Xla.ExecutionOptions)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(xla.Xla.ExecutionOptions other) {
        if (other == xla.Xla.ExecutionOptions.getDefaultInstance()) return this;
        if (other.hasShapeWithOutputLayout()) {
          mergeShapeWithOutputLayout(other.getShapeWithOutputLayout());
        }
        if (other.getSeed() != 0L) {
          setSeed(other.getSeed());
        }
        if (other.hasDebugOptions()) {
          mergeDebugOptions(other.getDebugOptions());
        }
        if (deviceHandlesBuilder_ == null) {
          if (!other.deviceHandles_.isEmpty()) {
            if (deviceHandles_.isEmpty()) {
              deviceHandles_ = other.deviceHandles_;
              bitField0_ = (bitField0_ & ~0x00000008);
            } else {
              ensureDeviceHandlesIsMutable();
              deviceHandles_.addAll(other.deviceHandles_);
            }
            onChanged();
          }
        } else {
          if (!other.deviceHandles_.isEmpty()) {
            if (deviceHandlesBuilder_.isEmpty()) {
              deviceHandlesBuilder_.dispose();
              deviceHandlesBuilder_ = null;
              deviceHandles_ = other.deviceHandles_;
              bitField0_ = (bitField0_ & ~0x00000008);
              deviceHandlesBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getDeviceHandlesFieldBuilder() : null;
            } else {
              deviceHandlesBuilder_.addAllMessages(other.deviceHandles_);
            }
          }
        }
        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 {
        xla.Xla.ExecutionOptions parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (xla.Xla.ExecutionOptions) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private xla.XlaData.Shape shapeWithOutputLayout_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.XlaData.Shape, xla.XlaData.Shape.Builder, xla.XlaData.ShapeOrBuilder> shapeWithOutputLayoutBuilder_;
      /**
       * <pre>
       * This optional field's layout is used as a hint when storing the output of
       * this computation.  Subsequent transfers of this output array to the client
       * may be faster when using this layout.
       * We use a Shape here to accommodate computations that return a tuple.
       * </pre>
       *
       * <code>.xla.Shape shape_with_output_layout = 2;</code>
       */
      public boolean hasShapeWithOutputLayout() {
        return shapeWithOutputLayoutBuilder_ != null || shapeWithOutputLayout_ != null;
      }
      /**
       * <pre>
       * This optional field's layout is used as a hint when storing the output of
       * this computation.  Subsequent transfers of this output array to the client
       * may be faster when using this layout.
       * We use a Shape here to accommodate computations that return a tuple.
       * </pre>
       *
       * <code>.xla.Shape shape_with_output_layout = 2;</code>
       */
      public xla.XlaData.Shape getShapeWithOutputLayout() {
        if (shapeWithOutputLayoutBuilder_ == null) {
          return shapeWithOutputLayout_ == null ? xla.XlaData.Shape.getDefaultInstance() : shapeWithOutputLayout_;
        } else {
          return shapeWithOutputLayoutBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * This optional field's layout is used as a hint when storing the output of
       * this computation.  Subsequent transfers of this output array to the client
       * may be faster when using this layout.
       * We use a Shape here to accommodate computations that return a tuple.
       * </pre>
       *
       * <code>.xla.Shape shape_with_output_layout = 2;</code>
       */
      public Builder setShapeWithOutputLayout(xla.XlaData.Shape value) {
        if (shapeWithOutputLayoutBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          shapeWithOutputLayout_ = value;
          onChanged();
        } else {
          shapeWithOutputLayoutBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       * This optional field's layout is used as a hint when storing the output of
       * this computation.  Subsequent transfers of this output array to the client
       * may be faster when using this layout.
       * We use a Shape here to accommodate computations that return a tuple.
       * </pre>
       *
       * <code>.xla.Shape shape_with_output_layout = 2;</code>
       */
      public Builder setShapeWithOutputLayout(
          xla.XlaData.Shape.Builder builderForValue) {
        if (shapeWithOutputLayoutBuilder_ == null) {
          shapeWithOutputLayout_ = builderForValue.build();
          onChanged();
        } else {
          shapeWithOutputLayoutBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       * This optional field's layout is used as a hint when storing the output of
       * this computation.  Subsequent transfers of this output array to the client
       * may be faster when using this layout.
       * We use a Shape here to accommodate computations that return a tuple.
       * </pre>
       *
       * <code>.xla.Shape shape_with_output_layout = 2;</code>
       */
      public Builder mergeShapeWithOutputLayout(xla.XlaData.Shape value) {
        if (shapeWithOutputLayoutBuilder_ == null) {
          if (shapeWithOutputLayout_ != null) {
            shapeWithOutputLayout_ =
              xla.XlaData.Shape.newBuilder(shapeWithOutputLayout_).mergeFrom(value).buildPartial();
          } else {
            shapeWithOutputLayout_ = value;
          }
          onChanged();
        } else {
          shapeWithOutputLayoutBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       * This optional field's layout is used as a hint when storing the output of
       * this computation.  Subsequent transfers of this output array to the client
       * may be faster when using this layout.
       * We use a Shape here to accommodate computations that return a tuple.
       * </pre>
       *
       * <code>.xla.Shape shape_with_output_layout = 2;</code>
       */
      public Builder clearShapeWithOutputLayout() {
        if (shapeWithOutputLayoutBuilder_ == null) {
          shapeWithOutputLayout_ = null;
          onChanged();
        } else {
          shapeWithOutputLayout_ = null;
          shapeWithOutputLayoutBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       * This optional field's layout is used as a hint when storing the output of
       * this computation.  Subsequent transfers of this output array to the client
       * may be faster when using this layout.
       * We use a Shape here to accommodate computations that return a tuple.
       * </pre>
       *
       * <code>.xla.Shape shape_with_output_layout = 2;</code>
       */
      public xla.XlaData.Shape.Builder getShapeWithOutputLayoutBuilder() {
        
        onChanged();
        return getShapeWithOutputLayoutFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * This optional field's layout is used as a hint when storing the output of
       * this computation.  Subsequent transfers of this output array to the client
       * may be faster when using this layout.
       * We use a Shape here to accommodate computations that return a tuple.
       * </pre>
       *
       * <code>.xla.Shape shape_with_output_layout = 2;</code>
       */
      public xla.XlaData.ShapeOrBuilder getShapeWithOutputLayoutOrBuilder() {
        if (shapeWithOutputLayoutBuilder_ != null) {
          return shapeWithOutputLayoutBuilder_.getMessageOrBuilder();
        } else {
          return shapeWithOutputLayout_ == null ?
              xla.XlaData.Shape.getDefaultInstance() : shapeWithOutputLayout_;
        }
      }
      /**
       * <pre>
       * This optional field's layout is used as a hint when storing the output of
       * this computation.  Subsequent transfers of this output array to the client
       * may be faster when using this layout.
       * We use a Shape here to accommodate computations that return a tuple.
       * </pre>
       *
       * <code>.xla.Shape shape_with_output_layout = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.XlaData.Shape, xla.XlaData.Shape.Builder, xla.XlaData.ShapeOrBuilder> 
          getShapeWithOutputLayoutFieldBuilder() {
        if (shapeWithOutputLayoutBuilder_ == null) {
          shapeWithOutputLayoutBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              xla.XlaData.Shape, xla.XlaData.Shape.Builder, xla.XlaData.ShapeOrBuilder>(
                  getShapeWithOutputLayout(),
                  getParentForChildren(),
                  isClean());
          shapeWithOutputLayout_ = null;
        }
        return shapeWithOutputLayoutBuilder_;
      }

      private long seed_ ;
      /**
       * <pre>
       * Used to seed random-number generators used in this computation.  If this is
       * 0, we generate a seed ourselves.
       * TODO(b/32083678): Changing the seed unnecessarily forces a recompilation.
       * </pre>
       *
       * <code>uint64 seed = 3;</code>
       */
      public long getSeed() {
        return seed_;
      }
      /**
       * <pre>
       * Used to seed random-number generators used in this computation.  If this is
       * 0, we generate a seed ourselves.
       * TODO(b/32083678): Changing the seed unnecessarily forces a recompilation.
       * </pre>
       *
       * <code>uint64 seed = 3;</code>
       */
      public Builder setSeed(long value) {
        
        seed_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Used to seed random-number generators used in this computation.  If this is
       * 0, we generate a seed ourselves.
       * TODO(b/32083678): Changing the seed unnecessarily forces a recompilation.
       * </pre>
       *
       * <code>uint64 seed = 3;</code>
       */
      public Builder clearSeed() {
        
        seed_ = 0L;
        onChanged();
        return this;
      }

      private xla.Xla.DebugOptions debugOptions_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.Xla.DebugOptions, xla.Xla.DebugOptions.Builder, xla.Xla.DebugOptionsOrBuilder> debugOptionsBuilder_;
      /**
       * <code>.xla.DebugOptions debug_options = 4;</code>
       */
      public boolean hasDebugOptions() {
        return debugOptionsBuilder_ != null || debugOptions_ != null;
      }
      /**
       * <code>.xla.DebugOptions debug_options = 4;</code>
       */
      public xla.Xla.DebugOptions getDebugOptions() {
        if (debugOptionsBuilder_ == null) {
          return debugOptions_ == null ? xla.Xla.DebugOptions.getDefaultInstance() : debugOptions_;
        } else {
          return debugOptionsBuilder_.getMessage();
        }
      }
      /**
       * <code>.xla.DebugOptions debug_options = 4;</code>
       */
      public Builder setDebugOptions(xla.Xla.DebugOptions value) {
        if (debugOptionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          debugOptions_ = value;
          onChanged();
        } else {
          debugOptionsBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.xla.DebugOptions debug_options = 4;</code>
       */
      public Builder setDebugOptions(
          xla.Xla.DebugOptions.Builder builderForValue) {
        if (debugOptionsBuilder_ == null) {
          debugOptions_ = builderForValue.build();
          onChanged();
        } else {
          debugOptionsBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.xla.DebugOptions debug_options = 4;</code>
       */
      public Builder mergeDebugOptions(xla.Xla.DebugOptions value) {
        if (debugOptionsBuilder_ == null) {
          if (debugOptions_ != null) {
            debugOptions_ =
              xla.Xla.DebugOptions.newBuilder(debugOptions_).mergeFrom(value).buildPartial();
          } else {
            debugOptions_ = value;
          }
          onChanged();
        } else {
          debugOptionsBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.xla.DebugOptions debug_options = 4;</code>
       */
      public Builder clearDebugOptions() {
        if (debugOptionsBuilder_ == null) {
          debugOptions_ = null;
          onChanged();
        } else {
          debugOptions_ = null;
          debugOptionsBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.xla.DebugOptions debug_options = 4;</code>
       */
      public xla.Xla.DebugOptions.Builder getDebugOptionsBuilder() {
        
        onChanged();
        return getDebugOptionsFieldBuilder().getBuilder();
      }
      /**
       * <code>.xla.DebugOptions debug_options = 4;</code>
       */
      public xla.Xla.DebugOptionsOrBuilder getDebugOptionsOrBuilder() {
        if (debugOptionsBuilder_ != null) {
          return debugOptionsBuilder_.getMessageOrBuilder();
        } else {
          return debugOptions_ == null ?
              xla.Xla.DebugOptions.getDefaultInstance() : debugOptions_;
        }
      }
      /**
       * <code>.xla.DebugOptions debug_options = 4;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.Xla.DebugOptions, xla.Xla.DebugOptions.Builder, xla.Xla.DebugOptionsOrBuilder> 
          getDebugOptionsFieldBuilder() {
        if (debugOptionsBuilder_ == null) {
          debugOptionsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              xla.Xla.DebugOptions, xla.Xla.DebugOptions.Builder, xla.Xla.DebugOptionsOrBuilder>(
                  getDebugOptions(),
                  getParentForChildren(),
                  isClean());
          debugOptions_ = null;
        }
        return debugOptionsBuilder_;
      }

      private java.util.List<xla.XlaData.DeviceHandle> deviceHandles_ =
        java.util.Collections.emptyList();
      private void ensureDeviceHandlesIsMutable() {
        if (!((bitField0_ & 0x00000008) == 0x00000008)) {
          deviceHandles_ = new java.util.ArrayList<xla.XlaData.DeviceHandle>(deviceHandles_);
          bitField0_ |= 0x00000008;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          xla.XlaData.DeviceHandle, xla.XlaData.DeviceHandle.Builder, xla.XlaData.DeviceHandleOrBuilder> deviceHandlesBuilder_;

      /**
       * <pre>
       * This optional field specifies a particular set of devices to run the
       * computation on. The computation will be partitioned across these devices.
       * If not provided, the default device will be chosen.
       * </pre>
       *
       * <code>repeated .xla.DeviceHandle device_handles = 5;</code>
       */
      public java.util.List<xla.XlaData.DeviceHandle> getDeviceHandlesList() {
        if (deviceHandlesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(deviceHandles_);
        } else {
          return deviceHandlesBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * This optional field specifies a particular set of devices to run the
       * computation on. The computation will be partitioned across these devices.
       * If not provided, the default device will be chosen.
       * </pre>
       *
       * <code>repeated .xla.DeviceHandle device_handles = 5;</code>
       */
      public int getDeviceHandlesCount() {
        if (deviceHandlesBuilder_ == null) {
          return deviceHandles_.size();
        } else {
          return deviceHandlesBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * This optional field specifies a particular set of devices to run the
       * computation on. The computation will be partitioned across these devices.
       * If not provided, the default device will be chosen.
       * </pre>
       *
       * <code>repeated .xla.DeviceHandle device_handles = 5;</code>
       */
      public xla.XlaData.DeviceHandle getDeviceHandles(int index) {
        if (deviceHandlesBuilder_ == null) {
          return deviceHandles_.get(index);
        } else {
          return deviceHandlesBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * This optional field specifies a particular set of devices to run the
       * computation on. The computation will be partitioned across these devices.
       * If not provided, the default device will be chosen.
       * </pre>
       *
       * <code>repeated .xla.DeviceHandle device_handles = 5;</code>
       */
      public Builder setDeviceHandles(
          int index, xla.XlaData.DeviceHandle value) {
        if (deviceHandlesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureDeviceHandlesIsMutable();
          deviceHandles_.set(index, value);
          onChanged();
        } else {
          deviceHandlesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * This optional field specifies a particular set of devices to run the
       * computation on. The computation will be partitioned across these devices.
       * If not provided, the default device will be chosen.
       * </pre>
       *
       * <code>repeated .xla.DeviceHandle device_handles = 5;</code>
       */
      public Builder setDeviceHandles(
          int index, xla.XlaData.DeviceHandle.Builder builderForValue) {
        if (deviceHandlesBuilder_ == null) {
          ensureDeviceHandlesIsMutable();
          deviceHandles_.set(index, builderForValue.build());
          onChanged();
        } else {
          deviceHandlesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * This optional field specifies a particular set of devices to run the
       * computation on. The computation will be partitioned across these devices.
       * If not provided, the default device will be chosen.
       * </pre>
       *
       * <code>repeated .xla.DeviceHandle device_handles = 5;</code>
       */
      public Builder addDeviceHandles(xla.XlaData.DeviceHandle value) {
        if (deviceHandlesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureDeviceHandlesIsMutable();
          deviceHandles_.add(value);
          onChanged();
        } else {
          deviceHandlesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * This optional field specifies a particular set of devices to run the
       * computation on. The computation will be partitioned across these devices.
       * If not provided, the default device will be chosen.
       * </pre>
       *
       * <code>repeated .xla.DeviceHandle device_handles = 5;</code>
       */
      public Builder addDeviceHandles(
          int index, xla.XlaData.DeviceHandle value) {
        if (deviceHandlesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureDeviceHandlesIsMutable();
          deviceHandles_.add(index, value);
          onChanged();
        } else {
          deviceHandlesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * This optional field specifies a particular set of devices to run the
       * computation on. The computation will be partitioned across these devices.
       * If not provided, the default device will be chosen.
       * </pre>
       *
       * <code>repeated .xla.DeviceHandle device_handles = 5;</code>
       */
      public Builder addDeviceHandles(
          xla.XlaData.DeviceHandle.Builder builderForValue) {
        if (deviceHandlesBuilder_ == null) {
          ensureDeviceHandlesIsMutable();
          deviceHandles_.add(builderForValue.build());
          onChanged();
        } else {
          deviceHandlesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * This optional field specifies a particular set of devices to run the
       * computation on. The computation will be partitioned across these devices.
       * If not provided, the default device will be chosen.
       * </pre>
       *
       * <code>repeated .xla.DeviceHandle device_handles = 5;</code>
       */
      public Builder addDeviceHandles(
          int index, xla.XlaData.DeviceHandle.Builder builderForValue) {
        if (deviceHandlesBuilder_ == null) {
          ensureDeviceHandlesIsMutable();
          deviceHandles_.add(index, builderForValue.build());
          onChanged();
        } else {
          deviceHandlesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * This optional field specifies a particular set of devices to run the
       * computation on. The computation will be partitioned across these devices.
       * If not provided, the default device will be chosen.
       * </pre>
       *
       * <code>repeated .xla.DeviceHandle device_handles = 5;</code>
       */
      public Builder addAllDeviceHandles(
          java.lang.Iterable<? extends xla.XlaData.DeviceHandle> values) {
        if (deviceHandlesBuilder_ == null) {
          ensureDeviceHandlesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, deviceHandles_);
          onChanged();
        } else {
          deviceHandlesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * This optional field specifies a particular set of devices to run the
       * computation on. The computation will be partitioned across these devices.
       * If not provided, the default device will be chosen.
       * </pre>
       *
       * <code>repeated .xla.DeviceHandle device_handles = 5;</code>
       */
      public Builder clearDeviceHandles() {
        if (deviceHandlesBuilder_ == null) {
          deviceHandles_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000008);
          onChanged();
        } else {
          deviceHandlesBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * This optional field specifies a particular set of devices to run the
       * computation on. The computation will be partitioned across these devices.
       * If not provided, the default device will be chosen.
       * </pre>
       *
       * <code>repeated .xla.DeviceHandle device_handles = 5;</code>
       */
      public Builder removeDeviceHandles(int index) {
        if (deviceHandlesBuilder_ == null) {
          ensureDeviceHandlesIsMutable();
          deviceHandles_.remove(index);
          onChanged();
        } else {
          deviceHandlesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * This optional field specifies a particular set of devices to run the
       * computation on. The computation will be partitioned across these devices.
       * If not provided, the default device will be chosen.
       * </pre>
       *
       * <code>repeated .xla.DeviceHandle device_handles = 5;</code>
       */
      public xla.XlaData.DeviceHandle.Builder getDeviceHandlesBuilder(
          int index) {
        return getDeviceHandlesFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * This optional field specifies a particular set of devices to run the
       * computation on. The computation will be partitioned across these devices.
       * If not provided, the default device will be chosen.
       * </pre>
       *
       * <code>repeated .xla.DeviceHandle device_handles = 5;</code>
       */
      public xla.XlaData.DeviceHandleOrBuilder getDeviceHandlesOrBuilder(
          int index) {
        if (deviceHandlesBuilder_ == null) {
          return deviceHandles_.get(index);  } else {
          return deviceHandlesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * This optional field specifies a particular set of devices to run the
       * computation on. The computation will be partitioned across these devices.
       * If not provided, the default device will be chosen.
       * </pre>
       *
       * <code>repeated .xla.DeviceHandle device_handles = 5;</code>
       */
      public java.util.List<? extends xla.XlaData.DeviceHandleOrBuilder> 
           getDeviceHandlesOrBuilderList() {
        if (deviceHandlesBuilder_ != null) {
          return deviceHandlesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(deviceHandles_);
        }
      }
      /**
       * <pre>
       * This optional field specifies a particular set of devices to run the
       * computation on. The computation will be partitioned across these devices.
       * If not provided, the default device will be chosen.
       * </pre>
       *
       * <code>repeated .xla.DeviceHandle device_handles = 5;</code>
       */
      public xla.XlaData.DeviceHandle.Builder addDeviceHandlesBuilder() {
        return getDeviceHandlesFieldBuilder().addBuilder(
            xla.XlaData.DeviceHandle.getDefaultInstance());
      }
      /**
       * <pre>
       * This optional field specifies a particular set of devices to run the
       * computation on. The computation will be partitioned across these devices.
       * If not provided, the default device will be chosen.
       * </pre>
       *
       * <code>repeated .xla.DeviceHandle device_handles = 5;</code>
       */
      public xla.XlaData.DeviceHandle.Builder addDeviceHandlesBuilder(
          int index) {
        return getDeviceHandlesFieldBuilder().addBuilder(
            index, xla.XlaData.DeviceHandle.getDefaultInstance());
      }
      /**
       * <pre>
       * This optional field specifies a particular set of devices to run the
       * computation on. The computation will be partitioned across these devices.
       * If not provided, the default device will be chosen.
       * </pre>
       *
       * <code>repeated .xla.DeviceHandle device_handles = 5;</code>
       */
      public java.util.List<xla.XlaData.DeviceHandle.Builder> 
           getDeviceHandlesBuilderList() {
        return getDeviceHandlesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          xla.XlaData.DeviceHandle, xla.XlaData.DeviceHandle.Builder, xla.XlaData.DeviceHandleOrBuilder> 
          getDeviceHandlesFieldBuilder() {
        if (deviceHandlesBuilder_ == null) {
          deviceHandlesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              xla.XlaData.DeviceHandle, xla.XlaData.DeviceHandle.Builder, xla.XlaData.DeviceHandleOrBuilder>(
                  deviceHandles_,
                  ((bitField0_ & 0x00000008) == 0x00000008),
                  getParentForChildren(),
                  isClean());
          deviceHandles_ = null;
        }
        return deviceHandlesBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

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


      // @@protoc_insertion_point(builder_scope:xla.ExecutionOptions)
    }

    // @@protoc_insertion_point(class_scope:xla.ExecutionOptions)
    private static final xla.Xla.ExecutionOptions DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new xla.Xla.ExecutionOptions();
    }

    public static xla.Xla.ExecutionOptions getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public xla.Xla.ExecutionOptions getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SnapshotComputationRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:xla.SnapshotComputationRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.xla.ComputationHandle computation = 1;</code>
     */
    boolean hasComputation();
    /**
     * <code>.xla.ComputationHandle computation = 1;</code>
     */
    xla.XlaData.ComputationHandle getComputation();
    /**
     * <code>.xla.ComputationHandle computation = 1;</code>
     */
    xla.XlaData.ComputationHandleOrBuilder getComputationOrBuilder();
  }
  /**
   * Protobuf type {@code xla.SnapshotComputationRequest}
   */
  public  static final class SnapshotComputationRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:xla.SnapshotComputationRequest)
      SnapshotComputationRequestOrBuilder {
    // Use SnapshotComputationRequest.newBuilder() to construct.
    private SnapshotComputationRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private SnapshotComputationRequest() {
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private SnapshotComputationRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              xla.XlaData.ComputationHandle.Builder subBuilder = null;
              if (computation_ != null) {
                subBuilder = computation_.toBuilder();
              }
              computation_ = input.readMessage(xla.XlaData.ComputationHandle.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(computation_);
                computation_ = 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 {
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return xla.Xla.internal_static_xla_SnapshotComputationRequest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return xla.Xla.internal_static_xla_SnapshotComputationRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              xla.Xla.SnapshotComputationRequest.class, xla.Xla.SnapshotComputationRequest.Builder.class);
    }

    public static final int COMPUTATION_FIELD_NUMBER = 1;
    private xla.XlaData.ComputationHandle computation_;
    /**
     * <code>.xla.ComputationHandle computation = 1;</code>
     */
    public boolean hasComputation() {
      return computation_ != null;
    }
    /**
     * <code>.xla.ComputationHandle computation = 1;</code>
     */
    public xla.XlaData.ComputationHandle getComputation() {
      return computation_ == null ? xla.XlaData.ComputationHandle.getDefaultInstance() : computation_;
    }
    /**
     * <code>.xla.ComputationHandle computation = 1;</code>
     */
    public xla.XlaData.ComputationHandleOrBuilder getComputationOrBuilder() {
      return getComputation();
    }

    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 (computation_ != null) {
        output.writeMessage(1, getComputation());
      }
    }

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

      size = 0;
      if (computation_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getComputation());
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof xla.Xla.SnapshotComputationRequest)) {
        return super.equals(obj);
      }
      xla.Xla.SnapshotComputationRequest other = (xla.Xla.SnapshotComputationRequest) obj;

      boolean result = true;
      result = result && (hasComputation() == other.hasComputation());
      if (hasComputation()) {
        result = result && getComputation()
            .equals(other.getComputation());
      }
      return result;
    }

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

    public static xla.Xla.SnapshotComputationRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.SnapshotComputationRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.SnapshotComputationRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.SnapshotComputationRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.SnapshotComputationRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.SnapshotComputationRequest 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 xla.Xla.SnapshotComputationRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static xla.Xla.SnapshotComputationRequest 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 xla.Xla.SnapshotComputationRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.SnapshotComputationRequest 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(xla.Xla.SnapshotComputationRequest 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 xla.SnapshotComputationRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:xla.SnapshotComputationRequest)
        xla.Xla.SnapshotComputationRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return xla.Xla.internal_static_xla_SnapshotComputationRequest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return xla.Xla.internal_static_xla_SnapshotComputationRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                xla.Xla.SnapshotComputationRequest.class, xla.Xla.SnapshotComputationRequest.Builder.class);
      }

      // Construct using xla.Xla.SnapshotComputationRequest.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 (computationBuilder_ == null) {
          computation_ = null;
        } else {
          computation_ = null;
          computationBuilder_ = null;
        }
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return xla.Xla.internal_static_xla_SnapshotComputationRequest_descriptor;
      }

      public xla.Xla.SnapshotComputationRequest getDefaultInstanceForType() {
        return xla.Xla.SnapshotComputationRequest.getDefaultInstance();
      }

      public xla.Xla.SnapshotComputationRequest build() {
        xla.Xla.SnapshotComputationRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public xla.Xla.SnapshotComputationRequest buildPartial() {
        xla.Xla.SnapshotComputationRequest result = new xla.Xla.SnapshotComputationRequest(this);
        if (computationBuilder_ == null) {
          result.computation_ = computation_;
        } else {
          result.computation_ = computationBuilder_.build();
        }
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof xla.Xla.SnapshotComputationRequest) {
          return mergeFrom((xla.Xla.SnapshotComputationRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(xla.Xla.SnapshotComputationRequest other) {
        if (other == xla.Xla.SnapshotComputationRequest.getDefaultInstance()) return this;
        if (other.hasComputation()) {
          mergeComputation(other.getComputation());
        }
        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 {
        xla.Xla.SnapshotComputationRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (xla.Xla.SnapshotComputationRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private xla.XlaData.ComputationHandle computation_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.XlaData.ComputationHandle, xla.XlaData.ComputationHandle.Builder, xla.XlaData.ComputationHandleOrBuilder> computationBuilder_;
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      public boolean hasComputation() {
        return computationBuilder_ != null || computation_ != null;
      }
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      public xla.XlaData.ComputationHandle getComputation() {
        if (computationBuilder_ == null) {
          return computation_ == null ? xla.XlaData.ComputationHandle.getDefaultInstance() : computation_;
        } else {
          return computationBuilder_.getMessage();
        }
      }
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      public Builder setComputation(xla.XlaData.ComputationHandle value) {
        if (computationBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          computation_ = value;
          onChanged();
        } else {
          computationBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      public Builder setComputation(
          xla.XlaData.ComputationHandle.Builder builderForValue) {
        if (computationBuilder_ == null) {
          computation_ = builderForValue.build();
          onChanged();
        } else {
          computationBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      public Builder mergeComputation(xla.XlaData.ComputationHandle value) {
        if (computationBuilder_ == null) {
          if (computation_ != null) {
            computation_ =
              xla.XlaData.ComputationHandle.newBuilder(computation_).mergeFrom(value).buildPartial();
          } else {
            computation_ = value;
          }
          onChanged();
        } else {
          computationBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      public Builder clearComputation() {
        if (computationBuilder_ == null) {
          computation_ = null;
          onChanged();
        } else {
          computation_ = null;
          computationBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      public xla.XlaData.ComputationHandle.Builder getComputationBuilder() {
        
        onChanged();
        return getComputationFieldBuilder().getBuilder();
      }
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      public xla.XlaData.ComputationHandleOrBuilder getComputationOrBuilder() {
        if (computationBuilder_ != null) {
          return computationBuilder_.getMessageOrBuilder();
        } else {
          return computation_ == null ?
              xla.XlaData.ComputationHandle.getDefaultInstance() : computation_;
        }
      }
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.XlaData.ComputationHandle, xla.XlaData.ComputationHandle.Builder, xla.XlaData.ComputationHandleOrBuilder> 
          getComputationFieldBuilder() {
        if (computationBuilder_ == null) {
          computationBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              xla.XlaData.ComputationHandle, xla.XlaData.ComputationHandle.Builder, xla.XlaData.ComputationHandleOrBuilder>(
                  getComputation(),
                  getParentForChildren(),
                  isClean());
          computation_ = null;
        }
        return computationBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

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


      // @@protoc_insertion_point(builder_scope:xla.SnapshotComputationRequest)
    }

    // @@protoc_insertion_point(class_scope:xla.SnapshotComputationRequest)
    private static final xla.Xla.SnapshotComputationRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new xla.Xla.SnapshotComputationRequest();
    }

    public static xla.Xla.SnapshotComputationRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public xla.Xla.SnapshotComputationRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SnapshotComputationResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:xla.SnapshotComputationResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.xla.SessionModule module = 1;</code>
     */
    boolean hasModule();
    /**
     * <code>.xla.SessionModule module = 1;</code>
     */
    xla.Session.SessionModule getModule();
    /**
     * <code>.xla.SessionModule module = 1;</code>
     */
    xla.Session.SessionModuleOrBuilder getModuleOrBuilder();
  }
  /**
   * Protobuf type {@code xla.SnapshotComputationResponse}
   */
  public  static final class SnapshotComputationResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:xla.SnapshotComputationResponse)
      SnapshotComputationResponseOrBuilder {
    // Use SnapshotComputationResponse.newBuilder() to construct.
    private SnapshotComputationResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private SnapshotComputationResponse() {
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private SnapshotComputationResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              xla.Session.SessionModule.Builder subBuilder = null;
              if (module_ != null) {
                subBuilder = module_.toBuilder();
              }
              module_ = input.readMessage(xla.Session.SessionModule.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(module_);
                module_ = 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 {
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return xla.Xla.internal_static_xla_SnapshotComputationResponse_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return xla.Xla.internal_static_xla_SnapshotComputationResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              xla.Xla.SnapshotComputationResponse.class, xla.Xla.SnapshotComputationResponse.Builder.class);
    }

    public static final int MODULE_FIELD_NUMBER = 1;
    private xla.Session.SessionModule module_;
    /**
     * <code>.xla.SessionModule module = 1;</code>
     */
    public boolean hasModule() {
      return module_ != null;
    }
    /**
     * <code>.xla.SessionModule module = 1;</code>
     */
    public xla.Session.SessionModule getModule() {
      return module_ == null ? xla.Session.SessionModule.getDefaultInstance() : module_;
    }
    /**
     * <code>.xla.SessionModule module = 1;</code>
     */
    public xla.Session.SessionModuleOrBuilder getModuleOrBuilder() {
      return getModule();
    }

    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 (module_ != null) {
        output.writeMessage(1, getModule());
      }
    }

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

      size = 0;
      if (module_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getModule());
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof xla.Xla.SnapshotComputationResponse)) {
        return super.equals(obj);
      }
      xla.Xla.SnapshotComputationResponse other = (xla.Xla.SnapshotComputationResponse) obj;

      boolean result = true;
      result = result && (hasModule() == other.hasModule());
      if (hasModule()) {
        result = result && getModule()
            .equals(other.getModule());
      }
      return result;
    }

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

    public static xla.Xla.SnapshotComputationResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.SnapshotComputationResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.SnapshotComputationResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.SnapshotComputationResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.SnapshotComputationResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.SnapshotComputationResponse 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 xla.Xla.SnapshotComputationResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static xla.Xla.SnapshotComputationResponse 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 xla.Xla.SnapshotComputationResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.SnapshotComputationResponse 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(xla.Xla.SnapshotComputationResponse 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 xla.SnapshotComputationResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:xla.SnapshotComputationResponse)
        xla.Xla.SnapshotComputationResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return xla.Xla.internal_static_xla_SnapshotComputationResponse_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return xla.Xla.internal_static_xla_SnapshotComputationResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                xla.Xla.SnapshotComputationResponse.class, xla.Xla.SnapshotComputationResponse.Builder.class);
      }

      // Construct using xla.Xla.SnapshotComputationResponse.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 (moduleBuilder_ == null) {
          module_ = null;
        } else {
          module_ = null;
          moduleBuilder_ = null;
        }
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return xla.Xla.internal_static_xla_SnapshotComputationResponse_descriptor;
      }

      public xla.Xla.SnapshotComputationResponse getDefaultInstanceForType() {
        return xla.Xla.SnapshotComputationResponse.getDefaultInstance();
      }

      public xla.Xla.SnapshotComputationResponse build() {
        xla.Xla.SnapshotComputationResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public xla.Xla.SnapshotComputationResponse buildPartial() {
        xla.Xla.SnapshotComputationResponse result = new xla.Xla.SnapshotComputationResponse(this);
        if (moduleBuilder_ == null) {
          result.module_ = module_;
        } else {
          result.module_ = moduleBuilder_.build();
        }
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof xla.Xla.SnapshotComputationResponse) {
          return mergeFrom((xla.Xla.SnapshotComputationResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(xla.Xla.SnapshotComputationResponse other) {
        if (other == xla.Xla.SnapshotComputationResponse.getDefaultInstance()) return this;
        if (other.hasModule()) {
          mergeModule(other.getModule());
        }
        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 {
        xla.Xla.SnapshotComputationResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (xla.Xla.SnapshotComputationResponse) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private xla.Session.SessionModule module_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.Session.SessionModule, xla.Session.SessionModule.Builder, xla.Session.SessionModuleOrBuilder> moduleBuilder_;
      /**
       * <code>.xla.SessionModule module = 1;</code>
       */
      public boolean hasModule() {
        return moduleBuilder_ != null || module_ != null;
      }
      /**
       * <code>.xla.SessionModule module = 1;</code>
       */
      public xla.Session.SessionModule getModule() {
        if (moduleBuilder_ == null) {
          return module_ == null ? xla.Session.SessionModule.getDefaultInstance() : module_;
        } else {
          return moduleBuilder_.getMessage();
        }
      }
      /**
       * <code>.xla.SessionModule module = 1;</code>
       */
      public Builder setModule(xla.Session.SessionModule value) {
        if (moduleBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          module_ = value;
          onChanged();
        } else {
          moduleBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.xla.SessionModule module = 1;</code>
       */
      public Builder setModule(
          xla.Session.SessionModule.Builder builderForValue) {
        if (moduleBuilder_ == null) {
          module_ = builderForValue.build();
          onChanged();
        } else {
          moduleBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.xla.SessionModule module = 1;</code>
       */
      public Builder mergeModule(xla.Session.SessionModule value) {
        if (moduleBuilder_ == null) {
          if (module_ != null) {
            module_ =
              xla.Session.SessionModule.newBuilder(module_).mergeFrom(value).buildPartial();
          } else {
            module_ = value;
          }
          onChanged();
        } else {
          moduleBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.xla.SessionModule module = 1;</code>
       */
      public Builder clearModule() {
        if (moduleBuilder_ == null) {
          module_ = null;
          onChanged();
        } else {
          module_ = null;
          moduleBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.xla.SessionModule module = 1;</code>
       */
      public xla.Session.SessionModule.Builder getModuleBuilder() {
        
        onChanged();
        return getModuleFieldBuilder().getBuilder();
      }
      /**
       * <code>.xla.SessionModule module = 1;</code>
       */
      public xla.Session.SessionModuleOrBuilder getModuleOrBuilder() {
        if (moduleBuilder_ != null) {
          return moduleBuilder_.getMessageOrBuilder();
        } else {
          return module_ == null ?
              xla.Session.SessionModule.getDefaultInstance() : module_;
        }
      }
      /**
       * <code>.xla.SessionModule module = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.Session.SessionModule, xla.Session.SessionModule.Builder, xla.Session.SessionModuleOrBuilder> 
          getModuleFieldBuilder() {
        if (moduleBuilder_ == null) {
          moduleBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              xla.Session.SessionModule, xla.Session.SessionModule.Builder, xla.Session.SessionModuleOrBuilder>(
                  getModule(),
                  getParentForChildren(),
                  isClean());
          module_ = null;
        }
        return moduleBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

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


      // @@protoc_insertion_point(builder_scope:xla.SnapshotComputationResponse)
    }

    // @@protoc_insertion_point(class_scope:xla.SnapshotComputationResponse)
    private static final xla.Xla.SnapshotComputationResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new xla.Xla.SnapshotComputationResponse();
    }

    public static xla.Xla.SnapshotComputationResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public xla.Xla.SnapshotComputationResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface LoadComputationSnapshotRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:xla.LoadComputationSnapshotRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.xla.SessionModule module = 1;</code>
     */
    boolean hasModule();
    /**
     * <code>.xla.SessionModule module = 1;</code>
     */
    xla.Session.SessionModule getModule();
    /**
     * <code>.xla.SessionModule module = 1;</code>
     */
    xla.Session.SessionModuleOrBuilder getModuleOrBuilder();
  }
  /**
   * Protobuf type {@code xla.LoadComputationSnapshotRequest}
   */
  public  static final class LoadComputationSnapshotRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:xla.LoadComputationSnapshotRequest)
      LoadComputationSnapshotRequestOrBuilder {
    // Use LoadComputationSnapshotRequest.newBuilder() to construct.
    private LoadComputationSnapshotRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private LoadComputationSnapshotRequest() {
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private LoadComputationSnapshotRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              xla.Session.SessionModule.Builder subBuilder = null;
              if (module_ != null) {
                subBuilder = module_.toBuilder();
              }
              module_ = input.readMessage(xla.Session.SessionModule.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(module_);
                module_ = 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 {
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return xla.Xla.internal_static_xla_LoadComputationSnapshotRequest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return xla.Xla.internal_static_xla_LoadComputationSnapshotRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              xla.Xla.LoadComputationSnapshotRequest.class, xla.Xla.LoadComputationSnapshotRequest.Builder.class);
    }

    public static final int MODULE_FIELD_NUMBER = 1;
    private xla.Session.SessionModule module_;
    /**
     * <code>.xla.SessionModule module = 1;</code>
     */
    public boolean hasModule() {
      return module_ != null;
    }
    /**
     * <code>.xla.SessionModule module = 1;</code>
     */
    public xla.Session.SessionModule getModule() {
      return module_ == null ? xla.Session.SessionModule.getDefaultInstance() : module_;
    }
    /**
     * <code>.xla.SessionModule module = 1;</code>
     */
    public xla.Session.SessionModuleOrBuilder getModuleOrBuilder() {
      return getModule();
    }

    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 (module_ != null) {
        output.writeMessage(1, getModule());
      }
    }

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

      size = 0;
      if (module_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getModule());
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof xla.Xla.LoadComputationSnapshotRequest)) {
        return super.equals(obj);
      }
      xla.Xla.LoadComputationSnapshotRequest other = (xla.Xla.LoadComputationSnapshotRequest) obj;

      boolean result = true;
      result = result && (hasModule() == other.hasModule());
      if (hasModule()) {
        result = result && getModule()
            .equals(other.getModule());
      }
      return result;
    }

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

    public static xla.Xla.LoadComputationSnapshotRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.LoadComputationSnapshotRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.LoadComputationSnapshotRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.LoadComputationSnapshotRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.LoadComputationSnapshotRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.LoadComputationSnapshotRequest 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 xla.Xla.LoadComputationSnapshotRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static xla.Xla.LoadComputationSnapshotRequest 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 xla.Xla.LoadComputationSnapshotRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.LoadComputationSnapshotRequest 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(xla.Xla.LoadComputationSnapshotRequest 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 xla.LoadComputationSnapshotRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:xla.LoadComputationSnapshotRequest)
        xla.Xla.LoadComputationSnapshotRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return xla.Xla.internal_static_xla_LoadComputationSnapshotRequest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return xla.Xla.internal_static_xla_LoadComputationSnapshotRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                xla.Xla.LoadComputationSnapshotRequest.class, xla.Xla.LoadComputationSnapshotRequest.Builder.class);
      }

      // Construct using xla.Xla.LoadComputationSnapshotRequest.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 (moduleBuilder_ == null) {
          module_ = null;
        } else {
          module_ = null;
          moduleBuilder_ = null;
        }
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return xla.Xla.internal_static_xla_LoadComputationSnapshotRequest_descriptor;
      }

      public xla.Xla.LoadComputationSnapshotRequest getDefaultInstanceForType() {
        return xla.Xla.LoadComputationSnapshotRequest.getDefaultInstance();
      }

      public xla.Xla.LoadComputationSnapshotRequest build() {
        xla.Xla.LoadComputationSnapshotRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public xla.Xla.LoadComputationSnapshotRequest buildPartial() {
        xla.Xla.LoadComputationSnapshotRequest result = new xla.Xla.LoadComputationSnapshotRequest(this);
        if (moduleBuilder_ == null) {
          result.module_ = module_;
        } else {
          result.module_ = moduleBuilder_.build();
        }
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof xla.Xla.LoadComputationSnapshotRequest) {
          return mergeFrom((xla.Xla.LoadComputationSnapshotRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(xla.Xla.LoadComputationSnapshotRequest other) {
        if (other == xla.Xla.LoadComputationSnapshotRequest.getDefaultInstance()) return this;
        if (other.hasModule()) {
          mergeModule(other.getModule());
        }
        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 {
        xla.Xla.LoadComputationSnapshotRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (xla.Xla.LoadComputationSnapshotRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private xla.Session.SessionModule module_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.Session.SessionModule, xla.Session.SessionModule.Builder, xla.Session.SessionModuleOrBuilder> moduleBuilder_;
      /**
       * <code>.xla.SessionModule module = 1;</code>
       */
      public boolean hasModule() {
        return moduleBuilder_ != null || module_ != null;
      }
      /**
       * <code>.xla.SessionModule module = 1;</code>
       */
      public xla.Session.SessionModule getModule() {
        if (moduleBuilder_ == null) {
          return module_ == null ? xla.Session.SessionModule.getDefaultInstance() : module_;
        } else {
          return moduleBuilder_.getMessage();
        }
      }
      /**
       * <code>.xla.SessionModule module = 1;</code>
       */
      public Builder setModule(xla.Session.SessionModule value) {
        if (moduleBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          module_ = value;
          onChanged();
        } else {
          moduleBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.xla.SessionModule module = 1;</code>
       */
      public Builder setModule(
          xla.Session.SessionModule.Builder builderForValue) {
        if (moduleBuilder_ == null) {
          module_ = builderForValue.build();
          onChanged();
        } else {
          moduleBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.xla.SessionModule module = 1;</code>
       */
      public Builder mergeModule(xla.Session.SessionModule value) {
        if (moduleBuilder_ == null) {
          if (module_ != null) {
            module_ =
              xla.Session.SessionModule.newBuilder(module_).mergeFrom(value).buildPartial();
          } else {
            module_ = value;
          }
          onChanged();
        } else {
          moduleBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.xla.SessionModule module = 1;</code>
       */
      public Builder clearModule() {
        if (moduleBuilder_ == null) {
          module_ = null;
          onChanged();
        } else {
          module_ = null;
          moduleBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.xla.SessionModule module = 1;</code>
       */
      public xla.Session.SessionModule.Builder getModuleBuilder() {
        
        onChanged();
        return getModuleFieldBuilder().getBuilder();
      }
      /**
       * <code>.xla.SessionModule module = 1;</code>
       */
      public xla.Session.SessionModuleOrBuilder getModuleOrBuilder() {
        if (moduleBuilder_ != null) {
          return moduleBuilder_.getMessageOrBuilder();
        } else {
          return module_ == null ?
              xla.Session.SessionModule.getDefaultInstance() : module_;
        }
      }
      /**
       * <code>.xla.SessionModule module = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.Session.SessionModule, xla.Session.SessionModule.Builder, xla.Session.SessionModuleOrBuilder> 
          getModuleFieldBuilder() {
        if (moduleBuilder_ == null) {
          moduleBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              xla.Session.SessionModule, xla.Session.SessionModule.Builder, xla.Session.SessionModuleOrBuilder>(
                  getModule(),
                  getParentForChildren(),
                  isClean());
          module_ = null;
        }
        return moduleBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

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


      // @@protoc_insertion_point(builder_scope:xla.LoadComputationSnapshotRequest)
    }

    // @@protoc_insertion_point(class_scope:xla.LoadComputationSnapshotRequest)
    private static final xla.Xla.LoadComputationSnapshotRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new xla.Xla.LoadComputationSnapshotRequest();
    }

    public static xla.Xla.LoadComputationSnapshotRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public xla.Xla.LoadComputationSnapshotRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface LoadComputationSnapshotResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:xla.LoadComputationSnapshotResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.xla.ComputationHandle computation = 1;</code>
     */
    boolean hasComputation();
    /**
     * <code>.xla.ComputationHandle computation = 1;</code>
     */
    xla.XlaData.ComputationHandle getComputation();
    /**
     * <code>.xla.ComputationHandle computation = 1;</code>
     */
    xla.XlaData.ComputationHandleOrBuilder getComputationOrBuilder();
  }
  /**
   * Protobuf type {@code xla.LoadComputationSnapshotResponse}
   */
  public  static final class LoadComputationSnapshotResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:xla.LoadComputationSnapshotResponse)
      LoadComputationSnapshotResponseOrBuilder {
    // Use LoadComputationSnapshotResponse.newBuilder() to construct.
    private LoadComputationSnapshotResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private LoadComputationSnapshotResponse() {
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private LoadComputationSnapshotResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              xla.XlaData.ComputationHandle.Builder subBuilder = null;
              if (computation_ != null) {
                subBuilder = computation_.toBuilder();
              }
              computation_ = input.readMessage(xla.XlaData.ComputationHandle.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(computation_);
                computation_ = 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 {
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return xla.Xla.internal_static_xla_LoadComputationSnapshotResponse_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return xla.Xla.internal_static_xla_LoadComputationSnapshotResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              xla.Xla.LoadComputationSnapshotResponse.class, xla.Xla.LoadComputationSnapshotResponse.Builder.class);
    }

    public static final int COMPUTATION_FIELD_NUMBER = 1;
    private xla.XlaData.ComputationHandle computation_;
    /**
     * <code>.xla.ComputationHandle computation = 1;</code>
     */
    public boolean hasComputation() {
      return computation_ != null;
    }
    /**
     * <code>.xla.ComputationHandle computation = 1;</code>
     */
    public xla.XlaData.ComputationHandle getComputation() {
      return computation_ == null ? xla.XlaData.ComputationHandle.getDefaultInstance() : computation_;
    }
    /**
     * <code>.xla.ComputationHandle computation = 1;</code>
     */
    public xla.XlaData.ComputationHandleOrBuilder getComputationOrBuilder() {
      return getComputation();
    }

    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 (computation_ != null) {
        output.writeMessage(1, getComputation());
      }
    }

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

      size = 0;
      if (computation_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getComputation());
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof xla.Xla.LoadComputationSnapshotResponse)) {
        return super.equals(obj);
      }
      xla.Xla.LoadComputationSnapshotResponse other = (xla.Xla.LoadComputationSnapshotResponse) obj;

      boolean result = true;
      result = result && (hasComputation() == other.hasComputation());
      if (hasComputation()) {
        result = result && getComputation()
            .equals(other.getComputation());
      }
      return result;
    }

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

    public static xla.Xla.LoadComputationSnapshotResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.LoadComputationSnapshotResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.LoadComputationSnapshotResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.LoadComputationSnapshotResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.LoadComputationSnapshotResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.LoadComputationSnapshotResponse 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 xla.Xla.LoadComputationSnapshotResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static xla.Xla.LoadComputationSnapshotResponse 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 xla.Xla.LoadComputationSnapshotResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.LoadComputationSnapshotResponse 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(xla.Xla.LoadComputationSnapshotResponse 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 xla.LoadComputationSnapshotResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:xla.LoadComputationSnapshotResponse)
        xla.Xla.LoadComputationSnapshotResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return xla.Xla.internal_static_xla_LoadComputationSnapshotResponse_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return xla.Xla.internal_static_xla_LoadComputationSnapshotResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                xla.Xla.LoadComputationSnapshotResponse.class, xla.Xla.LoadComputationSnapshotResponse.Builder.class);
      }

      // Construct using xla.Xla.LoadComputationSnapshotResponse.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 (computationBuilder_ == null) {
          computation_ = null;
        } else {
          computation_ = null;
          computationBuilder_ = null;
        }
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return xla.Xla.internal_static_xla_LoadComputationSnapshotResponse_descriptor;
      }

      public xla.Xla.LoadComputationSnapshotResponse getDefaultInstanceForType() {
        return xla.Xla.LoadComputationSnapshotResponse.getDefaultInstance();
      }

      public xla.Xla.LoadComputationSnapshotResponse build() {
        xla.Xla.LoadComputationSnapshotResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public xla.Xla.LoadComputationSnapshotResponse buildPartial() {
        xla.Xla.LoadComputationSnapshotResponse result = new xla.Xla.LoadComputationSnapshotResponse(this);
        if (computationBuilder_ == null) {
          result.computation_ = computation_;
        } else {
          result.computation_ = computationBuilder_.build();
        }
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof xla.Xla.LoadComputationSnapshotResponse) {
          return mergeFrom((xla.Xla.LoadComputationSnapshotResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(xla.Xla.LoadComputationSnapshotResponse other) {
        if (other == xla.Xla.LoadComputationSnapshotResponse.getDefaultInstance()) return this;
        if (other.hasComputation()) {
          mergeComputation(other.getComputation());
        }
        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 {
        xla.Xla.LoadComputationSnapshotResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (xla.Xla.LoadComputationSnapshotResponse) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private xla.XlaData.ComputationHandle computation_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.XlaData.ComputationHandle, xla.XlaData.ComputationHandle.Builder, xla.XlaData.ComputationHandleOrBuilder> computationBuilder_;
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      public boolean hasComputation() {
        return computationBuilder_ != null || computation_ != null;
      }
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      public xla.XlaData.ComputationHandle getComputation() {
        if (computationBuilder_ == null) {
          return computation_ == null ? xla.XlaData.ComputationHandle.getDefaultInstance() : computation_;
        } else {
          return computationBuilder_.getMessage();
        }
      }
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      public Builder setComputation(xla.XlaData.ComputationHandle value) {
        if (computationBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          computation_ = value;
          onChanged();
        } else {
          computationBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      public Builder setComputation(
          xla.XlaData.ComputationHandle.Builder builderForValue) {
        if (computationBuilder_ == null) {
          computation_ = builderForValue.build();
          onChanged();
        } else {
          computationBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      public Builder mergeComputation(xla.XlaData.ComputationHandle value) {
        if (computationBuilder_ == null) {
          if (computation_ != null) {
            computation_ =
              xla.XlaData.ComputationHandle.newBuilder(computation_).mergeFrom(value).buildPartial();
          } else {
            computation_ = value;
          }
          onChanged();
        } else {
          computationBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      public Builder clearComputation() {
        if (computationBuilder_ == null) {
          computation_ = null;
          onChanged();
        } else {
          computation_ = null;
          computationBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      public xla.XlaData.ComputationHandle.Builder getComputationBuilder() {
        
        onChanged();
        return getComputationFieldBuilder().getBuilder();
      }
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      public xla.XlaData.ComputationHandleOrBuilder getComputationOrBuilder() {
        if (computationBuilder_ != null) {
          return computationBuilder_.getMessageOrBuilder();
        } else {
          return computation_ == null ?
              xla.XlaData.ComputationHandle.getDefaultInstance() : computation_;
        }
      }
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.XlaData.ComputationHandle, xla.XlaData.ComputationHandle.Builder, xla.XlaData.ComputationHandleOrBuilder> 
          getComputationFieldBuilder() {
        if (computationBuilder_ == null) {
          computationBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              xla.XlaData.ComputationHandle, xla.XlaData.ComputationHandle.Builder, xla.XlaData.ComputationHandleOrBuilder>(
                  getComputation(),
                  getParentForChildren(),
                  isClean());
          computation_ = null;
        }
        return computationBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

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


      // @@protoc_insertion_point(builder_scope:xla.LoadComputationSnapshotResponse)
    }

    // @@protoc_insertion_point(class_scope:xla.LoadComputationSnapshotResponse)
    private static final xla.Xla.LoadComputationSnapshotResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new xla.Xla.LoadComputationSnapshotResponse();
    }

    public static xla.Xla.LoadComputationSnapshotResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public xla.Xla.LoadComputationSnapshotResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface GetDeviceHandlesRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:xla.GetDeviceHandlesRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>int64 device_count = 1;</code>
     */
    long getDeviceCount();
  }
  /**
   * Protobuf type {@code xla.GetDeviceHandlesRequest}
   */
  public  static final class GetDeviceHandlesRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:xla.GetDeviceHandlesRequest)
      GetDeviceHandlesRequestOrBuilder {
    // Use GetDeviceHandlesRequest.newBuilder() to construct.
    private GetDeviceHandlesRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private GetDeviceHandlesRequest() {
      deviceCount_ = 0L;
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private GetDeviceHandlesRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 8: {

              deviceCount_ = input.readInt64();
              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 {
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return xla.Xla.internal_static_xla_GetDeviceHandlesRequest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return xla.Xla.internal_static_xla_GetDeviceHandlesRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              xla.Xla.GetDeviceHandlesRequest.class, xla.Xla.GetDeviceHandlesRequest.Builder.class);
    }

    public static final int DEVICE_COUNT_FIELD_NUMBER = 1;
    private long deviceCount_;
    /**
     * <code>int64 device_count = 1;</code>
     */
    public long getDeviceCount() {
      return deviceCount_;
    }

    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 (deviceCount_ != 0L) {
        output.writeInt64(1, deviceCount_);
      }
    }

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

      size = 0;
      if (deviceCount_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(1, deviceCount_);
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof xla.Xla.GetDeviceHandlesRequest)) {
        return super.equals(obj);
      }
      xla.Xla.GetDeviceHandlesRequest other = (xla.Xla.GetDeviceHandlesRequest) obj;

      boolean result = true;
      result = result && (getDeviceCount()
          == other.getDeviceCount());
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + DEVICE_COUNT_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getDeviceCount());
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static xla.Xla.GetDeviceHandlesRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.GetDeviceHandlesRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.GetDeviceHandlesRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.GetDeviceHandlesRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.GetDeviceHandlesRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.GetDeviceHandlesRequest 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 xla.Xla.GetDeviceHandlesRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static xla.Xla.GetDeviceHandlesRequest 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 xla.Xla.GetDeviceHandlesRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.GetDeviceHandlesRequest 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(xla.Xla.GetDeviceHandlesRequest 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 xla.GetDeviceHandlesRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:xla.GetDeviceHandlesRequest)
        xla.Xla.GetDeviceHandlesRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return xla.Xla.internal_static_xla_GetDeviceHandlesRequest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return xla.Xla.internal_static_xla_GetDeviceHandlesRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                xla.Xla.GetDeviceHandlesRequest.class, xla.Xla.GetDeviceHandlesRequest.Builder.class);
      }

      // Construct using xla.Xla.GetDeviceHandlesRequest.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();
        deviceCount_ = 0L;

        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return xla.Xla.internal_static_xla_GetDeviceHandlesRequest_descriptor;
      }

      public xla.Xla.GetDeviceHandlesRequest getDefaultInstanceForType() {
        return xla.Xla.GetDeviceHandlesRequest.getDefaultInstance();
      }

      public xla.Xla.GetDeviceHandlesRequest build() {
        xla.Xla.GetDeviceHandlesRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public xla.Xla.GetDeviceHandlesRequest buildPartial() {
        xla.Xla.GetDeviceHandlesRequest result = new xla.Xla.GetDeviceHandlesRequest(this);
        result.deviceCount_ = deviceCount_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof xla.Xla.GetDeviceHandlesRequest) {
          return mergeFrom((xla.Xla.GetDeviceHandlesRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(xla.Xla.GetDeviceHandlesRequest other) {
        if (other == xla.Xla.GetDeviceHandlesRequest.getDefaultInstance()) return this;
        if (other.getDeviceCount() != 0L) {
          setDeviceCount(other.getDeviceCount());
        }
        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 {
        xla.Xla.GetDeviceHandlesRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (xla.Xla.GetDeviceHandlesRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private long deviceCount_ ;
      /**
       * <code>int64 device_count = 1;</code>
       */
      public long getDeviceCount() {
        return deviceCount_;
      }
      /**
       * <code>int64 device_count = 1;</code>
       */
      public Builder setDeviceCount(long value) {
        
        deviceCount_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>int64 device_count = 1;</code>
       */
      public Builder clearDeviceCount() {
        
        deviceCount_ = 0L;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

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


      // @@protoc_insertion_point(builder_scope:xla.GetDeviceHandlesRequest)
    }

    // @@protoc_insertion_point(class_scope:xla.GetDeviceHandlesRequest)
    private static final xla.Xla.GetDeviceHandlesRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new xla.Xla.GetDeviceHandlesRequest();
    }

    public static xla.Xla.GetDeviceHandlesRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public xla.Xla.GetDeviceHandlesRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface GetDeviceHandlesResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:xla.GetDeviceHandlesResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated .xla.DeviceHandle device_handles = 1;</code>
     */
    java.util.List<xla.XlaData.DeviceHandle> 
        getDeviceHandlesList();
    /**
     * <code>repeated .xla.DeviceHandle device_handles = 1;</code>
     */
    xla.XlaData.DeviceHandle getDeviceHandles(int index);
    /**
     * <code>repeated .xla.DeviceHandle device_handles = 1;</code>
     */
    int getDeviceHandlesCount();
    /**
     * <code>repeated .xla.DeviceHandle device_handles = 1;</code>
     */
    java.util.List<? extends xla.XlaData.DeviceHandleOrBuilder> 
        getDeviceHandlesOrBuilderList();
    /**
     * <code>repeated .xla.DeviceHandle device_handles = 1;</code>
     */
    xla.XlaData.DeviceHandleOrBuilder getDeviceHandlesOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code xla.GetDeviceHandlesResponse}
   */
  public  static final class GetDeviceHandlesResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:xla.GetDeviceHandlesResponse)
      GetDeviceHandlesResponseOrBuilder {
    // Use GetDeviceHandlesResponse.newBuilder() to construct.
    private GetDeviceHandlesResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private GetDeviceHandlesResponse() {
      deviceHandles_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private GetDeviceHandlesResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                deviceHandles_ = new java.util.ArrayList<xla.XlaData.DeviceHandle>();
                mutable_bitField0_ |= 0x00000001;
              }
              deviceHandles_.add(
                  input.readMessage(xla.XlaData.DeviceHandle.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)) {
          deviceHandles_ = java.util.Collections.unmodifiableList(deviceHandles_);
        }
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return xla.Xla.internal_static_xla_GetDeviceHandlesResponse_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return xla.Xla.internal_static_xla_GetDeviceHandlesResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              xla.Xla.GetDeviceHandlesResponse.class, xla.Xla.GetDeviceHandlesResponse.Builder.class);
    }

    public static final int DEVICE_HANDLES_FIELD_NUMBER = 1;
    private java.util.List<xla.XlaData.DeviceHandle> deviceHandles_;
    /**
     * <code>repeated .xla.DeviceHandle device_handles = 1;</code>
     */
    public java.util.List<xla.XlaData.DeviceHandle> getDeviceHandlesList() {
      return deviceHandles_;
    }
    /**
     * <code>repeated .xla.DeviceHandle device_handles = 1;</code>
     */
    public java.util.List<? extends xla.XlaData.DeviceHandleOrBuilder> 
        getDeviceHandlesOrBuilderList() {
      return deviceHandles_;
    }
    /**
     * <code>repeated .xla.DeviceHandle device_handles = 1;</code>
     */
    public int getDeviceHandlesCount() {
      return deviceHandles_.size();
    }
    /**
     * <code>repeated .xla.DeviceHandle device_handles = 1;</code>
     */
    public xla.XlaData.DeviceHandle getDeviceHandles(int index) {
      return deviceHandles_.get(index);
    }
    /**
     * <code>repeated .xla.DeviceHandle device_handles = 1;</code>
     */
    public xla.XlaData.DeviceHandleOrBuilder getDeviceHandlesOrBuilder(
        int index) {
      return deviceHandles_.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 < deviceHandles_.size(); i++) {
        output.writeMessage(1, deviceHandles_.get(i));
      }
    }

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

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

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof xla.Xla.GetDeviceHandlesResponse)) {
        return super.equals(obj);
      }
      xla.Xla.GetDeviceHandlesResponse other = (xla.Xla.GetDeviceHandlesResponse) obj;

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

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

    public static xla.Xla.GetDeviceHandlesResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.GetDeviceHandlesResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.GetDeviceHandlesResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.GetDeviceHandlesResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.GetDeviceHandlesResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.GetDeviceHandlesResponse 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 xla.Xla.GetDeviceHandlesResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static xla.Xla.GetDeviceHandlesResponse 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 xla.Xla.GetDeviceHandlesResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.GetDeviceHandlesResponse 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(xla.Xla.GetDeviceHandlesResponse 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 xla.GetDeviceHandlesResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:xla.GetDeviceHandlesResponse)
        xla.Xla.GetDeviceHandlesResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return xla.Xla.internal_static_xla_GetDeviceHandlesResponse_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return xla.Xla.internal_static_xla_GetDeviceHandlesResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                xla.Xla.GetDeviceHandlesResponse.class, xla.Xla.GetDeviceHandlesResponse.Builder.class);
      }

      // Construct using xla.Xla.GetDeviceHandlesResponse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return xla.Xla.internal_static_xla_GetDeviceHandlesResponse_descriptor;
      }

      public xla.Xla.GetDeviceHandlesResponse getDefaultInstanceForType() {
        return xla.Xla.GetDeviceHandlesResponse.getDefaultInstance();
      }

      public xla.Xla.GetDeviceHandlesResponse build() {
        xla.Xla.GetDeviceHandlesResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public xla.Xla.GetDeviceHandlesResponse buildPartial() {
        xla.Xla.GetDeviceHandlesResponse result = new xla.Xla.GetDeviceHandlesResponse(this);
        int from_bitField0_ = bitField0_;
        if (deviceHandlesBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            deviceHandles_ = java.util.Collections.unmodifiableList(deviceHandles_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.deviceHandles_ = deviceHandles_;
        } else {
          result.deviceHandles_ = deviceHandlesBuilder_.build();
        }
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof xla.Xla.GetDeviceHandlesResponse) {
          return mergeFrom((xla.Xla.GetDeviceHandlesResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(xla.Xla.GetDeviceHandlesResponse other) {
        if (other == xla.Xla.GetDeviceHandlesResponse.getDefaultInstance()) return this;
        if (deviceHandlesBuilder_ == null) {
          if (!other.deviceHandles_.isEmpty()) {
            if (deviceHandles_.isEmpty()) {
              deviceHandles_ = other.deviceHandles_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureDeviceHandlesIsMutable();
              deviceHandles_.addAll(other.deviceHandles_);
            }
            onChanged();
          }
        } else {
          if (!other.deviceHandles_.isEmpty()) {
            if (deviceHandlesBuilder_.isEmpty()) {
              deviceHandlesBuilder_.dispose();
              deviceHandlesBuilder_ = null;
              deviceHandles_ = other.deviceHandles_;
              bitField0_ = (bitField0_ & ~0x00000001);
              deviceHandlesBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getDeviceHandlesFieldBuilder() : null;
            } else {
              deviceHandlesBuilder_.addAllMessages(other.deviceHandles_);
            }
          }
        }
        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 {
        xla.Xla.GetDeviceHandlesResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (xla.Xla.GetDeviceHandlesResponse) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.util.List<xla.XlaData.DeviceHandle> deviceHandles_ =
        java.util.Collections.emptyList();
      private void ensureDeviceHandlesIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          deviceHandles_ = new java.util.ArrayList<xla.XlaData.DeviceHandle>(deviceHandles_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          xla.XlaData.DeviceHandle, xla.XlaData.DeviceHandle.Builder, xla.XlaData.DeviceHandleOrBuilder> deviceHandlesBuilder_;

      /**
       * <code>repeated .xla.DeviceHandle device_handles = 1;</code>
       */
      public java.util.List<xla.XlaData.DeviceHandle> getDeviceHandlesList() {
        if (deviceHandlesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(deviceHandles_);
        } else {
          return deviceHandlesBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .xla.DeviceHandle device_handles = 1;</code>
       */
      public int getDeviceHandlesCount() {
        if (deviceHandlesBuilder_ == null) {
          return deviceHandles_.size();
        } else {
          return deviceHandlesBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .xla.DeviceHandle device_handles = 1;</code>
       */
      public xla.XlaData.DeviceHandle getDeviceHandles(int index) {
        if (deviceHandlesBuilder_ == null) {
          return deviceHandles_.get(index);
        } else {
          return deviceHandlesBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .xla.DeviceHandle device_handles = 1;</code>
       */
      public Builder setDeviceHandles(
          int index, xla.XlaData.DeviceHandle value) {
        if (deviceHandlesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureDeviceHandlesIsMutable();
          deviceHandles_.set(index, value);
          onChanged();
        } else {
          deviceHandlesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .xla.DeviceHandle device_handles = 1;</code>
       */
      public Builder setDeviceHandles(
          int index, xla.XlaData.DeviceHandle.Builder builderForValue) {
        if (deviceHandlesBuilder_ == null) {
          ensureDeviceHandlesIsMutable();
          deviceHandles_.set(index, builderForValue.build());
          onChanged();
        } else {
          deviceHandlesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .xla.DeviceHandle device_handles = 1;</code>
       */
      public Builder addDeviceHandles(xla.XlaData.DeviceHandle value) {
        if (deviceHandlesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureDeviceHandlesIsMutable();
          deviceHandles_.add(value);
          onChanged();
        } else {
          deviceHandlesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .xla.DeviceHandle device_handles = 1;</code>
       */
      public Builder addDeviceHandles(
          int index, xla.XlaData.DeviceHandle value) {
        if (deviceHandlesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureDeviceHandlesIsMutable();
          deviceHandles_.add(index, value);
          onChanged();
        } else {
          deviceHandlesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .xla.DeviceHandle device_handles = 1;</code>
       */
      public Builder addDeviceHandles(
          xla.XlaData.DeviceHandle.Builder builderForValue) {
        if (deviceHandlesBuilder_ == null) {
          ensureDeviceHandlesIsMutable();
          deviceHandles_.add(builderForValue.build());
          onChanged();
        } else {
          deviceHandlesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .xla.DeviceHandle device_handles = 1;</code>
       */
      public Builder addDeviceHandles(
          int index, xla.XlaData.DeviceHandle.Builder builderForValue) {
        if (deviceHandlesBuilder_ == null) {
          ensureDeviceHandlesIsMutable();
          deviceHandles_.add(index, builderForValue.build());
          onChanged();
        } else {
          deviceHandlesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .xla.DeviceHandle device_handles = 1;</code>
       */
      public Builder addAllDeviceHandles(
          java.lang.Iterable<? extends xla.XlaData.DeviceHandle> values) {
        if (deviceHandlesBuilder_ == null) {
          ensureDeviceHandlesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, deviceHandles_);
          onChanged();
        } else {
          deviceHandlesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .xla.DeviceHandle device_handles = 1;</code>
       */
      public Builder clearDeviceHandles() {
        if (deviceHandlesBuilder_ == null) {
          deviceHandles_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          deviceHandlesBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .xla.DeviceHandle device_handles = 1;</code>
       */
      public Builder removeDeviceHandles(int index) {
        if (deviceHandlesBuilder_ == null) {
          ensureDeviceHandlesIsMutable();
          deviceHandles_.remove(index);
          onChanged();
        } else {
          deviceHandlesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .xla.DeviceHandle device_handles = 1;</code>
       */
      public xla.XlaData.DeviceHandle.Builder getDeviceHandlesBuilder(
          int index) {
        return getDeviceHandlesFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .xla.DeviceHandle device_handles = 1;</code>
       */
      public xla.XlaData.DeviceHandleOrBuilder getDeviceHandlesOrBuilder(
          int index) {
        if (deviceHandlesBuilder_ == null) {
          return deviceHandles_.get(index);  } else {
          return deviceHandlesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .xla.DeviceHandle device_handles = 1;</code>
       */
      public java.util.List<? extends xla.XlaData.DeviceHandleOrBuilder> 
           getDeviceHandlesOrBuilderList() {
        if (deviceHandlesBuilder_ != null) {
          return deviceHandlesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(deviceHandles_);
        }
      }
      /**
       * <code>repeated .xla.DeviceHandle device_handles = 1;</code>
       */
      public xla.XlaData.DeviceHandle.Builder addDeviceHandlesBuilder() {
        return getDeviceHandlesFieldBuilder().addBuilder(
            xla.XlaData.DeviceHandle.getDefaultInstance());
      }
      /**
       * <code>repeated .xla.DeviceHandle device_handles = 1;</code>
       */
      public xla.XlaData.DeviceHandle.Builder addDeviceHandlesBuilder(
          int index) {
        return getDeviceHandlesFieldBuilder().addBuilder(
            index, xla.XlaData.DeviceHandle.getDefaultInstance());
      }
      /**
       * <code>repeated .xla.DeviceHandle device_handles = 1;</code>
       */
      public java.util.List<xla.XlaData.DeviceHandle.Builder> 
           getDeviceHandlesBuilderList() {
        return getDeviceHandlesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          xla.XlaData.DeviceHandle, xla.XlaData.DeviceHandle.Builder, xla.XlaData.DeviceHandleOrBuilder> 
          getDeviceHandlesFieldBuilder() {
        if (deviceHandlesBuilder_ == null) {
          deviceHandlesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              xla.XlaData.DeviceHandle, xla.XlaData.DeviceHandle.Builder, xla.XlaData.DeviceHandleOrBuilder>(
                  deviceHandles_,
                  ((bitField0_ & 0x00000001) == 0x00000001),
                  getParentForChildren(),
                  isClean());
          deviceHandles_ = null;
        }
        return deviceHandlesBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

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


      // @@protoc_insertion_point(builder_scope:xla.GetDeviceHandlesResponse)
    }

    // @@protoc_insertion_point(class_scope:xla.GetDeviceHandlesResponse)
    private static final xla.Xla.GetDeviceHandlesResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new xla.Xla.GetDeviceHandlesResponse();
    }

    public static xla.Xla.GetDeviceHandlesResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public xla.Xla.GetDeviceHandlesResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TransferToClientRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:xla.TransferToClientRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.xla.GlobalDataHandle data = 1;</code>
     */
    boolean hasData();
    /**
     * <code>.xla.GlobalDataHandle data = 1;</code>
     */
    xla.XlaData.GlobalDataHandle getData();
    /**
     * <code>.xla.GlobalDataHandle data = 1;</code>
     */
    xla.XlaData.GlobalDataHandleOrBuilder getDataOrBuilder();

    /**
     * <pre>
     * This optional field directs the service to return the literal in this
     * layout. A shape is used to hold the layout to accommodate tuples.
     * </pre>
     *
     * <code>.xla.Shape shape_with_layout = 2;</code>
     */
    boolean hasShapeWithLayout();
    /**
     * <pre>
     * This optional field directs the service to return the literal in this
     * layout. A shape is used to hold the layout to accommodate tuples.
     * </pre>
     *
     * <code>.xla.Shape shape_with_layout = 2;</code>
     */
    xla.XlaData.Shape getShapeWithLayout();
    /**
     * <pre>
     * This optional field directs the service to return the literal in this
     * layout. A shape is used to hold the layout to accommodate tuples.
     * </pre>
     *
     * <code>.xla.Shape shape_with_layout = 2;</code>
     */
    xla.XlaData.ShapeOrBuilder getShapeWithLayoutOrBuilder();
  }
  /**
   * Protobuf type {@code xla.TransferToClientRequest}
   */
  public  static final class TransferToClientRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:xla.TransferToClientRequest)
      TransferToClientRequestOrBuilder {
    // Use TransferToClientRequest.newBuilder() to construct.
    private TransferToClientRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private TransferToClientRequest() {
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private TransferToClientRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              xla.XlaData.GlobalDataHandle.Builder subBuilder = null;
              if (data_ != null) {
                subBuilder = data_.toBuilder();
              }
              data_ = input.readMessage(xla.XlaData.GlobalDataHandle.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(data_);
                data_ = subBuilder.buildPartial();
              }

              break;
            }
            case 18: {
              xla.XlaData.Shape.Builder subBuilder = null;
              if (shapeWithLayout_ != null) {
                subBuilder = shapeWithLayout_.toBuilder();
              }
              shapeWithLayout_ = input.readMessage(xla.XlaData.Shape.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(shapeWithLayout_);
                shapeWithLayout_ = 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 {
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return xla.Xla.internal_static_xla_TransferToClientRequest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return xla.Xla.internal_static_xla_TransferToClientRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              xla.Xla.TransferToClientRequest.class, xla.Xla.TransferToClientRequest.Builder.class);
    }

    public static final int DATA_FIELD_NUMBER = 1;
    private xla.XlaData.GlobalDataHandle data_;
    /**
     * <code>.xla.GlobalDataHandle data = 1;</code>
     */
    public boolean hasData() {
      return data_ != null;
    }
    /**
     * <code>.xla.GlobalDataHandle data = 1;</code>
     */
    public xla.XlaData.GlobalDataHandle getData() {
      return data_ == null ? xla.XlaData.GlobalDataHandle.getDefaultInstance() : data_;
    }
    /**
     * <code>.xla.GlobalDataHandle data = 1;</code>
     */
    public xla.XlaData.GlobalDataHandleOrBuilder getDataOrBuilder() {
      return getData();
    }

    public static final int SHAPE_WITH_LAYOUT_FIELD_NUMBER = 2;
    private xla.XlaData.Shape shapeWithLayout_;
    /**
     * <pre>
     * This optional field directs the service to return the literal in this
     * layout. A shape is used to hold the layout to accommodate tuples.
     * </pre>
     *
     * <code>.xla.Shape shape_with_layout = 2;</code>
     */
    public boolean hasShapeWithLayout() {
      return shapeWithLayout_ != null;
    }
    /**
     * <pre>
     * This optional field directs the service to return the literal in this
     * layout. A shape is used to hold the layout to accommodate tuples.
     * </pre>
     *
     * <code>.xla.Shape shape_with_layout = 2;</code>
     */
    public xla.XlaData.Shape getShapeWithLayout() {
      return shapeWithLayout_ == null ? xla.XlaData.Shape.getDefaultInstance() : shapeWithLayout_;
    }
    /**
     * <pre>
     * This optional field directs the service to return the literal in this
     * layout. A shape is used to hold the layout to accommodate tuples.
     * </pre>
     *
     * <code>.xla.Shape shape_with_layout = 2;</code>
     */
    public xla.XlaData.ShapeOrBuilder getShapeWithLayoutOrBuilder() {
      return getShapeWithLayout();
    }

    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 (data_ != null) {
        output.writeMessage(1, getData());
      }
      if (shapeWithLayout_ != null) {
        output.writeMessage(2, getShapeWithLayout());
      }
    }

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

      size = 0;
      if (data_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getData());
      }
      if (shapeWithLayout_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getShapeWithLayout());
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof xla.Xla.TransferToClientRequest)) {
        return super.equals(obj);
      }
      xla.Xla.TransferToClientRequest other = (xla.Xla.TransferToClientRequest) obj;

      boolean result = true;
      result = result && (hasData() == other.hasData());
      if (hasData()) {
        result = result && getData()
            .equals(other.getData());
      }
      result = result && (hasShapeWithLayout() == other.hasShapeWithLayout());
      if (hasShapeWithLayout()) {
        result = result && getShapeWithLayout()
            .equals(other.getShapeWithLayout());
      }
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasData()) {
        hash = (37 * hash) + DATA_FIELD_NUMBER;
        hash = (53 * hash) + getData().hashCode();
      }
      if (hasShapeWithLayout()) {
        hash = (37 * hash) + SHAPE_WITH_LAYOUT_FIELD_NUMBER;
        hash = (53 * hash) + getShapeWithLayout().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static xla.Xla.TransferToClientRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.TransferToClientRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.TransferToClientRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.TransferToClientRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.TransferToClientRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.TransferToClientRequest 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 xla.Xla.TransferToClientRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static xla.Xla.TransferToClientRequest 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 xla.Xla.TransferToClientRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.TransferToClientRequest 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(xla.Xla.TransferToClientRequest 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 xla.TransferToClientRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:xla.TransferToClientRequest)
        xla.Xla.TransferToClientRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return xla.Xla.internal_static_xla_TransferToClientRequest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return xla.Xla.internal_static_xla_TransferToClientRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                xla.Xla.TransferToClientRequest.class, xla.Xla.TransferToClientRequest.Builder.class);
      }

      // Construct using xla.Xla.TransferToClientRequest.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 (dataBuilder_ == null) {
          data_ = null;
        } else {
          data_ = null;
          dataBuilder_ = null;
        }
        if (shapeWithLayoutBuilder_ == null) {
          shapeWithLayout_ = null;
        } else {
          shapeWithLayout_ = null;
          shapeWithLayoutBuilder_ = null;
        }
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return xla.Xla.internal_static_xla_TransferToClientRequest_descriptor;
      }

      public xla.Xla.TransferToClientRequest getDefaultInstanceForType() {
        return xla.Xla.TransferToClientRequest.getDefaultInstance();
      }

      public xla.Xla.TransferToClientRequest build() {
        xla.Xla.TransferToClientRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public xla.Xla.TransferToClientRequest buildPartial() {
        xla.Xla.TransferToClientRequest result = new xla.Xla.TransferToClientRequest(this);
        if (dataBuilder_ == null) {
          result.data_ = data_;
        } else {
          result.data_ = dataBuilder_.build();
        }
        if (shapeWithLayoutBuilder_ == null) {
          result.shapeWithLayout_ = shapeWithLayout_;
        } else {
          result.shapeWithLayout_ = shapeWithLayoutBuilder_.build();
        }
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof xla.Xla.TransferToClientRequest) {
          return mergeFrom((xla.Xla.TransferToClientRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(xla.Xla.TransferToClientRequest other) {
        if (other == xla.Xla.TransferToClientRequest.getDefaultInstance()) return this;
        if (other.hasData()) {
          mergeData(other.getData());
        }
        if (other.hasShapeWithLayout()) {
          mergeShapeWithLayout(other.getShapeWithLayout());
        }
        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 {
        xla.Xla.TransferToClientRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (xla.Xla.TransferToClientRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private xla.XlaData.GlobalDataHandle data_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.XlaData.GlobalDataHandle, xla.XlaData.GlobalDataHandle.Builder, xla.XlaData.GlobalDataHandleOrBuilder> dataBuilder_;
      /**
       * <code>.xla.GlobalDataHandle data = 1;</code>
       */
      public boolean hasData() {
        return dataBuilder_ != null || data_ != null;
      }
      /**
       * <code>.xla.GlobalDataHandle data = 1;</code>
       */
      public xla.XlaData.GlobalDataHandle getData() {
        if (dataBuilder_ == null) {
          return data_ == null ? xla.XlaData.GlobalDataHandle.getDefaultInstance() : data_;
        } else {
          return dataBuilder_.getMessage();
        }
      }
      /**
       * <code>.xla.GlobalDataHandle data = 1;</code>
       */
      public Builder setData(xla.XlaData.GlobalDataHandle value) {
        if (dataBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          data_ = value;
          onChanged();
        } else {
          dataBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.xla.GlobalDataHandle data = 1;</code>
       */
      public Builder setData(
          xla.XlaData.GlobalDataHandle.Builder builderForValue) {
        if (dataBuilder_ == null) {
          data_ = builderForValue.build();
          onChanged();
        } else {
          dataBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.xla.GlobalDataHandle data = 1;</code>
       */
      public Builder mergeData(xla.XlaData.GlobalDataHandle value) {
        if (dataBuilder_ == null) {
          if (data_ != null) {
            data_ =
              xla.XlaData.GlobalDataHandle.newBuilder(data_).mergeFrom(value).buildPartial();
          } else {
            data_ = value;
          }
          onChanged();
        } else {
          dataBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.xla.GlobalDataHandle data = 1;</code>
       */
      public Builder clearData() {
        if (dataBuilder_ == null) {
          data_ = null;
          onChanged();
        } else {
          data_ = null;
          dataBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.xla.GlobalDataHandle data = 1;</code>
       */
      public xla.XlaData.GlobalDataHandle.Builder getDataBuilder() {
        
        onChanged();
        return getDataFieldBuilder().getBuilder();
      }
      /**
       * <code>.xla.GlobalDataHandle data = 1;</code>
       */
      public xla.XlaData.GlobalDataHandleOrBuilder getDataOrBuilder() {
        if (dataBuilder_ != null) {
          return dataBuilder_.getMessageOrBuilder();
        } else {
          return data_ == null ?
              xla.XlaData.GlobalDataHandle.getDefaultInstance() : data_;
        }
      }
      /**
       * <code>.xla.GlobalDataHandle data = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.XlaData.GlobalDataHandle, xla.XlaData.GlobalDataHandle.Builder, xla.XlaData.GlobalDataHandleOrBuilder> 
          getDataFieldBuilder() {
        if (dataBuilder_ == null) {
          dataBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              xla.XlaData.GlobalDataHandle, xla.XlaData.GlobalDataHandle.Builder, xla.XlaData.GlobalDataHandleOrBuilder>(
                  getData(),
                  getParentForChildren(),
                  isClean());
          data_ = null;
        }
        return dataBuilder_;
      }

      private xla.XlaData.Shape shapeWithLayout_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.XlaData.Shape, xla.XlaData.Shape.Builder, xla.XlaData.ShapeOrBuilder> shapeWithLayoutBuilder_;
      /**
       * <pre>
       * This optional field directs the service to return the literal in this
       * layout. A shape is used to hold the layout to accommodate tuples.
       * </pre>
       *
       * <code>.xla.Shape shape_with_layout = 2;</code>
       */
      public boolean hasShapeWithLayout() {
        return shapeWithLayoutBuilder_ != null || shapeWithLayout_ != null;
      }
      /**
       * <pre>
       * This optional field directs the service to return the literal in this
       * layout. A shape is used to hold the layout to accommodate tuples.
       * </pre>
       *
       * <code>.xla.Shape shape_with_layout = 2;</code>
       */
      public xla.XlaData.Shape getShapeWithLayout() {
        if (shapeWithLayoutBuilder_ == null) {
          return shapeWithLayout_ == null ? xla.XlaData.Shape.getDefaultInstance() : shapeWithLayout_;
        } else {
          return shapeWithLayoutBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * This optional field directs the service to return the literal in this
       * layout. A shape is used to hold the layout to accommodate tuples.
       * </pre>
       *
       * <code>.xla.Shape shape_with_layout = 2;</code>
       */
      public Builder setShapeWithLayout(xla.XlaData.Shape value) {
        if (shapeWithLayoutBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          shapeWithLayout_ = value;
          onChanged();
        } else {
          shapeWithLayoutBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       * This optional field directs the service to return the literal in this
       * layout. A shape is used to hold the layout to accommodate tuples.
       * </pre>
       *
       * <code>.xla.Shape shape_with_layout = 2;</code>
       */
      public Builder setShapeWithLayout(
          xla.XlaData.Shape.Builder builderForValue) {
        if (shapeWithLayoutBuilder_ == null) {
          shapeWithLayout_ = builderForValue.build();
          onChanged();
        } else {
          shapeWithLayoutBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       * This optional field directs the service to return the literal in this
       * layout. A shape is used to hold the layout to accommodate tuples.
       * </pre>
       *
       * <code>.xla.Shape shape_with_layout = 2;</code>
       */
      public Builder mergeShapeWithLayout(xla.XlaData.Shape value) {
        if (shapeWithLayoutBuilder_ == null) {
          if (shapeWithLayout_ != null) {
            shapeWithLayout_ =
              xla.XlaData.Shape.newBuilder(shapeWithLayout_).mergeFrom(value).buildPartial();
          } else {
            shapeWithLayout_ = value;
          }
          onChanged();
        } else {
          shapeWithLayoutBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       * This optional field directs the service to return the literal in this
       * layout. A shape is used to hold the layout to accommodate tuples.
       * </pre>
       *
       * <code>.xla.Shape shape_with_layout = 2;</code>
       */
      public Builder clearShapeWithLayout() {
        if (shapeWithLayoutBuilder_ == null) {
          shapeWithLayout_ = null;
          onChanged();
        } else {
          shapeWithLayout_ = null;
          shapeWithLayoutBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       * This optional field directs the service to return the literal in this
       * layout. A shape is used to hold the layout to accommodate tuples.
       * </pre>
       *
       * <code>.xla.Shape shape_with_layout = 2;</code>
       */
      public xla.XlaData.Shape.Builder getShapeWithLayoutBuilder() {
        
        onChanged();
        return getShapeWithLayoutFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * This optional field directs the service to return the literal in this
       * layout. A shape is used to hold the layout to accommodate tuples.
       * </pre>
       *
       * <code>.xla.Shape shape_with_layout = 2;</code>
       */
      public xla.XlaData.ShapeOrBuilder getShapeWithLayoutOrBuilder() {
        if (shapeWithLayoutBuilder_ != null) {
          return shapeWithLayoutBuilder_.getMessageOrBuilder();
        } else {
          return shapeWithLayout_ == null ?
              xla.XlaData.Shape.getDefaultInstance() : shapeWithLayout_;
        }
      }
      /**
       * <pre>
       * This optional field directs the service to return the literal in this
       * layout. A shape is used to hold the layout to accommodate tuples.
       * </pre>
       *
       * <code>.xla.Shape shape_with_layout = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.XlaData.Shape, xla.XlaData.Shape.Builder, xla.XlaData.ShapeOrBuilder> 
          getShapeWithLayoutFieldBuilder() {
        if (shapeWithLayoutBuilder_ == null) {
          shapeWithLayoutBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              xla.XlaData.Shape, xla.XlaData.Shape.Builder, xla.XlaData.ShapeOrBuilder>(
                  getShapeWithLayout(),
                  getParentForChildren(),
                  isClean());
          shapeWithLayout_ = null;
        }
        return shapeWithLayoutBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

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


      // @@protoc_insertion_point(builder_scope:xla.TransferToClientRequest)
    }

    // @@protoc_insertion_point(class_scope:xla.TransferToClientRequest)
    private static final xla.Xla.TransferToClientRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new xla.Xla.TransferToClientRequest();
    }

    public static xla.Xla.TransferToClientRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public xla.Xla.TransferToClientRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TransferToClientResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:xla.TransferToClientResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.xla.LiteralProto literal = 1;</code>
     */
    boolean hasLiteral();
    /**
     * <code>.xla.LiteralProto literal = 1;</code>
     */
    xla.XlaData.LiteralProto getLiteral();
    /**
     * <code>.xla.LiteralProto literal = 1;</code>
     */
    xla.XlaData.LiteralProtoOrBuilder getLiteralOrBuilder();
  }
  /**
   * Protobuf type {@code xla.TransferToClientResponse}
   */
  public  static final class TransferToClientResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:xla.TransferToClientResponse)
      TransferToClientResponseOrBuilder {
    // Use TransferToClientResponse.newBuilder() to construct.
    private TransferToClientResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private TransferToClientResponse() {
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private TransferToClientResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              xla.XlaData.LiteralProto.Builder subBuilder = null;
              if (literal_ != null) {
                subBuilder = literal_.toBuilder();
              }
              literal_ = input.readMessage(xla.XlaData.LiteralProto.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(literal_);
                literal_ = 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 {
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return xla.Xla.internal_static_xla_TransferToClientResponse_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return xla.Xla.internal_static_xla_TransferToClientResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              xla.Xla.TransferToClientResponse.class, xla.Xla.TransferToClientResponse.Builder.class);
    }

    public static final int LITERAL_FIELD_NUMBER = 1;
    private xla.XlaData.LiteralProto literal_;
    /**
     * <code>.xla.LiteralProto literal = 1;</code>
     */
    public boolean hasLiteral() {
      return literal_ != null;
    }
    /**
     * <code>.xla.LiteralProto literal = 1;</code>
     */
    public xla.XlaData.LiteralProto getLiteral() {
      return literal_ == null ? xla.XlaData.LiteralProto.getDefaultInstance() : literal_;
    }
    /**
     * <code>.xla.LiteralProto literal = 1;</code>
     */
    public xla.XlaData.LiteralProtoOrBuilder getLiteralOrBuilder() {
      return getLiteral();
    }

    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 (literal_ != null) {
        output.writeMessage(1, getLiteral());
      }
    }

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

      size = 0;
      if (literal_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getLiteral());
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof xla.Xla.TransferToClientResponse)) {
        return super.equals(obj);
      }
      xla.Xla.TransferToClientResponse other = (xla.Xla.TransferToClientResponse) obj;

      boolean result = true;
      result = result && (hasLiteral() == other.hasLiteral());
      if (hasLiteral()) {
        result = result && getLiteral()
            .equals(other.getLiteral());
      }
      return result;
    }

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

    public static xla.Xla.TransferToClientResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.TransferToClientResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.TransferToClientResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.TransferToClientResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.TransferToClientResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.TransferToClientResponse 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 xla.Xla.TransferToClientResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static xla.Xla.TransferToClientResponse 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 xla.Xla.TransferToClientResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.TransferToClientResponse 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(xla.Xla.TransferToClientResponse 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 xla.TransferToClientResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:xla.TransferToClientResponse)
        xla.Xla.TransferToClientResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return xla.Xla.internal_static_xla_TransferToClientResponse_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return xla.Xla.internal_static_xla_TransferToClientResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                xla.Xla.TransferToClientResponse.class, xla.Xla.TransferToClientResponse.Builder.class);
      }

      // Construct using xla.Xla.TransferToClientResponse.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 (literalBuilder_ == null) {
          literal_ = null;
        } else {
          literal_ = null;
          literalBuilder_ = null;
        }
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return xla.Xla.internal_static_xla_TransferToClientResponse_descriptor;
      }

      public xla.Xla.TransferToClientResponse getDefaultInstanceForType() {
        return xla.Xla.TransferToClientResponse.getDefaultInstance();
      }

      public xla.Xla.TransferToClientResponse build() {
        xla.Xla.TransferToClientResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public xla.Xla.TransferToClientResponse buildPartial() {
        xla.Xla.TransferToClientResponse result = new xla.Xla.TransferToClientResponse(this);
        if (literalBuilder_ == null) {
          result.literal_ = literal_;
        } else {
          result.literal_ = literalBuilder_.build();
        }
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof xla.Xla.TransferToClientResponse) {
          return mergeFrom((xla.Xla.TransferToClientResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(xla.Xla.TransferToClientResponse other) {
        if (other == xla.Xla.TransferToClientResponse.getDefaultInstance()) return this;
        if (other.hasLiteral()) {
          mergeLiteral(other.getLiteral());
        }
        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 {
        xla.Xla.TransferToClientResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (xla.Xla.TransferToClientResponse) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private xla.XlaData.LiteralProto literal_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.XlaData.LiteralProto, xla.XlaData.LiteralProto.Builder, xla.XlaData.LiteralProtoOrBuilder> literalBuilder_;
      /**
       * <code>.xla.LiteralProto literal = 1;</code>
       */
      public boolean hasLiteral() {
        return literalBuilder_ != null || literal_ != null;
      }
      /**
       * <code>.xla.LiteralProto literal = 1;</code>
       */
      public xla.XlaData.LiteralProto getLiteral() {
        if (literalBuilder_ == null) {
          return literal_ == null ? xla.XlaData.LiteralProto.getDefaultInstance() : literal_;
        } else {
          return literalBuilder_.getMessage();
        }
      }
      /**
       * <code>.xla.LiteralProto literal = 1;</code>
       */
      public Builder setLiteral(xla.XlaData.LiteralProto value) {
        if (literalBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          literal_ = value;
          onChanged();
        } else {
          literalBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.xla.LiteralProto literal = 1;</code>
       */
      public Builder setLiteral(
          xla.XlaData.LiteralProto.Builder builderForValue) {
        if (literalBuilder_ == null) {
          literal_ = builderForValue.build();
          onChanged();
        } else {
          literalBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.xla.LiteralProto literal = 1;</code>
       */
      public Builder mergeLiteral(xla.XlaData.LiteralProto value) {
        if (literalBuilder_ == null) {
          if (literal_ != null) {
            literal_ =
              xla.XlaData.LiteralProto.newBuilder(literal_).mergeFrom(value).buildPartial();
          } else {
            literal_ = value;
          }
          onChanged();
        } else {
          literalBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.xla.LiteralProto literal = 1;</code>
       */
      public Builder clearLiteral() {
        if (literalBuilder_ == null) {
          literal_ = null;
          onChanged();
        } else {
          literal_ = null;
          literalBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.xla.LiteralProto literal = 1;</code>
       */
      public xla.XlaData.LiteralProto.Builder getLiteralBuilder() {
        
        onChanged();
        return getLiteralFieldBuilder().getBuilder();
      }
      /**
       * <code>.xla.LiteralProto literal = 1;</code>
       */
      public xla.XlaData.LiteralProtoOrBuilder getLiteralOrBuilder() {
        if (literalBuilder_ != null) {
          return literalBuilder_.getMessageOrBuilder();
        } else {
          return literal_ == null ?
              xla.XlaData.LiteralProto.getDefaultInstance() : literal_;
        }
      }
      /**
       * <code>.xla.LiteralProto literal = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.XlaData.LiteralProto, xla.XlaData.LiteralProto.Builder, xla.XlaData.LiteralProtoOrBuilder> 
          getLiteralFieldBuilder() {
        if (literalBuilder_ == null) {
          literalBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              xla.XlaData.LiteralProto, xla.XlaData.LiteralProto.Builder, xla.XlaData.LiteralProtoOrBuilder>(
                  getLiteral(),
                  getParentForChildren(),
                  isClean());
          literal_ = null;
        }
        return literalBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

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


      // @@protoc_insertion_point(builder_scope:xla.TransferToClientResponse)
    }

    // @@protoc_insertion_point(class_scope:xla.TransferToClientResponse)
    private static final xla.Xla.TransferToClientResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new xla.Xla.TransferToClientResponse();
    }

    public static xla.Xla.TransferToClientResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public xla.Xla.TransferToClientResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TransferToServerRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:xla.TransferToServerRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.xla.LiteralProto literal = 1;</code>
     */
    boolean hasLiteral();
    /**
     * <code>.xla.LiteralProto literal = 1;</code>
     */
    xla.XlaData.LiteralProto getLiteral();
    /**
     * <code>.xla.LiteralProto literal = 1;</code>
     */
    xla.XlaData.LiteralProtoOrBuilder getLiteralOrBuilder();

    /**
     * <code>.xla.DeviceHandle device_handle = 2;</code>
     */
    boolean hasDeviceHandle();
    /**
     * <code>.xla.DeviceHandle device_handle = 2;</code>
     */
    xla.XlaData.DeviceHandle getDeviceHandle();
    /**
     * <code>.xla.DeviceHandle device_handle = 2;</code>
     */
    xla.XlaData.DeviceHandleOrBuilder getDeviceHandleOrBuilder();
  }
  /**
   * Protobuf type {@code xla.TransferToServerRequest}
   */
  public  static final class TransferToServerRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:xla.TransferToServerRequest)
      TransferToServerRequestOrBuilder {
    // Use TransferToServerRequest.newBuilder() to construct.
    private TransferToServerRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private TransferToServerRequest() {
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private TransferToServerRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              xla.XlaData.LiteralProto.Builder subBuilder = null;
              if (literal_ != null) {
                subBuilder = literal_.toBuilder();
              }
              literal_ = input.readMessage(xla.XlaData.LiteralProto.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(literal_);
                literal_ = subBuilder.buildPartial();
              }

              break;
            }
            case 18: {
              xla.XlaData.DeviceHandle.Builder subBuilder = null;
              if (deviceHandle_ != null) {
                subBuilder = deviceHandle_.toBuilder();
              }
              deviceHandle_ = input.readMessage(xla.XlaData.DeviceHandle.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(deviceHandle_);
                deviceHandle_ = 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 {
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return xla.Xla.internal_static_xla_TransferToServerRequest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return xla.Xla.internal_static_xla_TransferToServerRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              xla.Xla.TransferToServerRequest.class, xla.Xla.TransferToServerRequest.Builder.class);
    }

    public static final int LITERAL_FIELD_NUMBER = 1;
    private xla.XlaData.LiteralProto literal_;
    /**
     * <code>.xla.LiteralProto literal = 1;</code>
     */
    public boolean hasLiteral() {
      return literal_ != null;
    }
    /**
     * <code>.xla.LiteralProto literal = 1;</code>
     */
    public xla.XlaData.LiteralProto getLiteral() {
      return literal_ == null ? xla.XlaData.LiteralProto.getDefaultInstance() : literal_;
    }
    /**
     * <code>.xla.LiteralProto literal = 1;</code>
     */
    public xla.XlaData.LiteralProtoOrBuilder getLiteralOrBuilder() {
      return getLiteral();
    }

    public static final int DEVICE_HANDLE_FIELD_NUMBER = 2;
    private xla.XlaData.DeviceHandle deviceHandle_;
    /**
     * <code>.xla.DeviceHandle device_handle = 2;</code>
     */
    public boolean hasDeviceHandle() {
      return deviceHandle_ != null;
    }
    /**
     * <code>.xla.DeviceHandle device_handle = 2;</code>
     */
    public xla.XlaData.DeviceHandle getDeviceHandle() {
      return deviceHandle_ == null ? xla.XlaData.DeviceHandle.getDefaultInstance() : deviceHandle_;
    }
    /**
     * <code>.xla.DeviceHandle device_handle = 2;</code>
     */
    public xla.XlaData.DeviceHandleOrBuilder getDeviceHandleOrBuilder() {
      return getDeviceHandle();
    }

    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 (literal_ != null) {
        output.writeMessage(1, getLiteral());
      }
      if (deviceHandle_ != null) {
        output.writeMessage(2, getDeviceHandle());
      }
    }

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

      size = 0;
      if (literal_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getLiteral());
      }
      if (deviceHandle_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getDeviceHandle());
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof xla.Xla.TransferToServerRequest)) {
        return super.equals(obj);
      }
      xla.Xla.TransferToServerRequest other = (xla.Xla.TransferToServerRequest) obj;

      boolean result = true;
      result = result && (hasLiteral() == other.hasLiteral());
      if (hasLiteral()) {
        result = result && getLiteral()
            .equals(other.getLiteral());
      }
      result = result && (hasDeviceHandle() == other.hasDeviceHandle());
      if (hasDeviceHandle()) {
        result = result && getDeviceHandle()
            .equals(other.getDeviceHandle());
      }
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasLiteral()) {
        hash = (37 * hash) + LITERAL_FIELD_NUMBER;
        hash = (53 * hash) + getLiteral().hashCode();
      }
      if (hasDeviceHandle()) {
        hash = (37 * hash) + DEVICE_HANDLE_FIELD_NUMBER;
        hash = (53 * hash) + getDeviceHandle().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static xla.Xla.TransferToServerRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.TransferToServerRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.TransferToServerRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.TransferToServerRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.TransferToServerRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.TransferToServerRequest 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 xla.Xla.TransferToServerRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static xla.Xla.TransferToServerRequest 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 xla.Xla.TransferToServerRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.TransferToServerRequest 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(xla.Xla.TransferToServerRequest 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 xla.TransferToServerRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:xla.TransferToServerRequest)
        xla.Xla.TransferToServerRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return xla.Xla.internal_static_xla_TransferToServerRequest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return xla.Xla.internal_static_xla_TransferToServerRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                xla.Xla.TransferToServerRequest.class, xla.Xla.TransferToServerRequest.Builder.class);
      }

      // Construct using xla.Xla.TransferToServerRequest.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 (literalBuilder_ == null) {
          literal_ = null;
        } else {
          literal_ = null;
          literalBuilder_ = null;
        }
        if (deviceHandleBuilder_ == null) {
          deviceHandle_ = null;
        } else {
          deviceHandle_ = null;
          deviceHandleBuilder_ = null;
        }
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return xla.Xla.internal_static_xla_TransferToServerRequest_descriptor;
      }

      public xla.Xla.TransferToServerRequest getDefaultInstanceForType() {
        return xla.Xla.TransferToServerRequest.getDefaultInstance();
      }

      public xla.Xla.TransferToServerRequest build() {
        xla.Xla.TransferToServerRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public xla.Xla.TransferToServerRequest buildPartial() {
        xla.Xla.TransferToServerRequest result = new xla.Xla.TransferToServerRequest(this);
        if (literalBuilder_ == null) {
          result.literal_ = literal_;
        } else {
          result.literal_ = literalBuilder_.build();
        }
        if (deviceHandleBuilder_ == null) {
          result.deviceHandle_ = deviceHandle_;
        } else {
          result.deviceHandle_ = deviceHandleBuilder_.build();
        }
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof xla.Xla.TransferToServerRequest) {
          return mergeFrom((xla.Xla.TransferToServerRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(xla.Xla.TransferToServerRequest other) {
        if (other == xla.Xla.TransferToServerRequest.getDefaultInstance()) return this;
        if (other.hasLiteral()) {
          mergeLiteral(other.getLiteral());
        }
        if (other.hasDeviceHandle()) {
          mergeDeviceHandle(other.getDeviceHandle());
        }
        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 {
        xla.Xla.TransferToServerRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (xla.Xla.TransferToServerRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private xla.XlaData.LiteralProto literal_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.XlaData.LiteralProto, xla.XlaData.LiteralProto.Builder, xla.XlaData.LiteralProtoOrBuilder> literalBuilder_;
      /**
       * <code>.xla.LiteralProto literal = 1;</code>
       */
      public boolean hasLiteral() {
        return literalBuilder_ != null || literal_ != null;
      }
      /**
       * <code>.xla.LiteralProto literal = 1;</code>
       */
      public xla.XlaData.LiteralProto getLiteral() {
        if (literalBuilder_ == null) {
          return literal_ == null ? xla.XlaData.LiteralProto.getDefaultInstance() : literal_;
        } else {
          return literalBuilder_.getMessage();
        }
      }
      /**
       * <code>.xla.LiteralProto literal = 1;</code>
       */
      public Builder setLiteral(xla.XlaData.LiteralProto value) {
        if (literalBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          literal_ = value;
          onChanged();
        } else {
          literalBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.xla.LiteralProto literal = 1;</code>
       */
      public Builder setLiteral(
          xla.XlaData.LiteralProto.Builder builderForValue) {
        if (literalBuilder_ == null) {
          literal_ = builderForValue.build();
          onChanged();
        } else {
          literalBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.xla.LiteralProto literal = 1;</code>
       */
      public Builder mergeLiteral(xla.XlaData.LiteralProto value) {
        if (literalBuilder_ == null) {
          if (literal_ != null) {
            literal_ =
              xla.XlaData.LiteralProto.newBuilder(literal_).mergeFrom(value).buildPartial();
          } else {
            literal_ = value;
          }
          onChanged();
        } else {
          literalBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.xla.LiteralProto literal = 1;</code>
       */
      public Builder clearLiteral() {
        if (literalBuilder_ == null) {
          literal_ = null;
          onChanged();
        } else {
          literal_ = null;
          literalBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.xla.LiteralProto literal = 1;</code>
       */
      public xla.XlaData.LiteralProto.Builder getLiteralBuilder() {
        
        onChanged();
        return getLiteralFieldBuilder().getBuilder();
      }
      /**
       * <code>.xla.LiteralProto literal = 1;</code>
       */
      public xla.XlaData.LiteralProtoOrBuilder getLiteralOrBuilder() {
        if (literalBuilder_ != null) {
          return literalBuilder_.getMessageOrBuilder();
        } else {
          return literal_ == null ?
              xla.XlaData.LiteralProto.getDefaultInstance() : literal_;
        }
      }
      /**
       * <code>.xla.LiteralProto literal = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.XlaData.LiteralProto, xla.XlaData.LiteralProto.Builder, xla.XlaData.LiteralProtoOrBuilder> 
          getLiteralFieldBuilder() {
        if (literalBuilder_ == null) {
          literalBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              xla.XlaData.LiteralProto, xla.XlaData.LiteralProto.Builder, xla.XlaData.LiteralProtoOrBuilder>(
                  getLiteral(),
                  getParentForChildren(),
                  isClean());
          literal_ = null;
        }
        return literalBuilder_;
      }

      private xla.XlaData.DeviceHandle deviceHandle_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.XlaData.DeviceHandle, xla.XlaData.DeviceHandle.Builder, xla.XlaData.DeviceHandleOrBuilder> deviceHandleBuilder_;
      /**
       * <code>.xla.DeviceHandle device_handle = 2;</code>
       */
      public boolean hasDeviceHandle() {
        return deviceHandleBuilder_ != null || deviceHandle_ != null;
      }
      /**
       * <code>.xla.DeviceHandle device_handle = 2;</code>
       */
      public xla.XlaData.DeviceHandle getDeviceHandle() {
        if (deviceHandleBuilder_ == null) {
          return deviceHandle_ == null ? xla.XlaData.DeviceHandle.getDefaultInstance() : deviceHandle_;
        } else {
          return deviceHandleBuilder_.getMessage();
        }
      }
      /**
       * <code>.xla.DeviceHandle device_handle = 2;</code>
       */
      public Builder setDeviceHandle(xla.XlaData.DeviceHandle value) {
        if (deviceHandleBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          deviceHandle_ = value;
          onChanged();
        } else {
          deviceHandleBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.xla.DeviceHandle device_handle = 2;</code>
       */
      public Builder setDeviceHandle(
          xla.XlaData.DeviceHandle.Builder builderForValue) {
        if (deviceHandleBuilder_ == null) {
          deviceHandle_ = builderForValue.build();
          onChanged();
        } else {
          deviceHandleBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.xla.DeviceHandle device_handle = 2;</code>
       */
      public Builder mergeDeviceHandle(xla.XlaData.DeviceHandle value) {
        if (deviceHandleBuilder_ == null) {
          if (deviceHandle_ != null) {
            deviceHandle_ =
              xla.XlaData.DeviceHandle.newBuilder(deviceHandle_).mergeFrom(value).buildPartial();
          } else {
            deviceHandle_ = value;
          }
          onChanged();
        } else {
          deviceHandleBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.xla.DeviceHandle device_handle = 2;</code>
       */
      public Builder clearDeviceHandle() {
        if (deviceHandleBuilder_ == null) {
          deviceHandle_ = null;
          onChanged();
        } else {
          deviceHandle_ = null;
          deviceHandleBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.xla.DeviceHandle device_handle = 2;</code>
       */
      public xla.XlaData.DeviceHandle.Builder getDeviceHandleBuilder() {
        
        onChanged();
        return getDeviceHandleFieldBuilder().getBuilder();
      }
      /**
       * <code>.xla.DeviceHandle device_handle = 2;</code>
       */
      public xla.XlaData.DeviceHandleOrBuilder getDeviceHandleOrBuilder() {
        if (deviceHandleBuilder_ != null) {
          return deviceHandleBuilder_.getMessageOrBuilder();
        } else {
          return deviceHandle_ == null ?
              xla.XlaData.DeviceHandle.getDefaultInstance() : deviceHandle_;
        }
      }
      /**
       * <code>.xla.DeviceHandle device_handle = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.XlaData.DeviceHandle, xla.XlaData.DeviceHandle.Builder, xla.XlaData.DeviceHandleOrBuilder> 
          getDeviceHandleFieldBuilder() {
        if (deviceHandleBuilder_ == null) {
          deviceHandleBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              xla.XlaData.DeviceHandle, xla.XlaData.DeviceHandle.Builder, xla.XlaData.DeviceHandleOrBuilder>(
                  getDeviceHandle(),
                  getParentForChildren(),
                  isClean());
          deviceHandle_ = null;
        }
        return deviceHandleBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

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


      // @@protoc_insertion_point(builder_scope:xla.TransferToServerRequest)
    }

    // @@protoc_insertion_point(class_scope:xla.TransferToServerRequest)
    private static final xla.Xla.TransferToServerRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new xla.Xla.TransferToServerRequest();
    }

    public static xla.Xla.TransferToServerRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public xla.Xla.TransferToServerRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TransferToServerResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:xla.TransferToServerResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.xla.GlobalDataHandle data = 1;</code>
     */
    boolean hasData();
    /**
     * <code>.xla.GlobalDataHandle data = 1;</code>
     */
    xla.XlaData.GlobalDataHandle getData();
    /**
     * <code>.xla.GlobalDataHandle data = 1;</code>
     */
    xla.XlaData.GlobalDataHandleOrBuilder getDataOrBuilder();
  }
  /**
   * Protobuf type {@code xla.TransferToServerResponse}
   */
  public  static final class TransferToServerResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:xla.TransferToServerResponse)
      TransferToServerResponseOrBuilder {
    // Use TransferToServerResponse.newBuilder() to construct.
    private TransferToServerResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private TransferToServerResponse() {
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private TransferToServerResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              xla.XlaData.GlobalDataHandle.Builder subBuilder = null;
              if (data_ != null) {
                subBuilder = data_.toBuilder();
              }
              data_ = input.readMessage(xla.XlaData.GlobalDataHandle.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(data_);
                data_ = 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 {
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return xla.Xla.internal_static_xla_TransferToServerResponse_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return xla.Xla.internal_static_xla_TransferToServerResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              xla.Xla.TransferToServerResponse.class, xla.Xla.TransferToServerResponse.Builder.class);
    }

    public static final int DATA_FIELD_NUMBER = 1;
    private xla.XlaData.GlobalDataHandle data_;
    /**
     * <code>.xla.GlobalDataHandle data = 1;</code>
     */
    public boolean hasData() {
      return data_ != null;
    }
    /**
     * <code>.xla.GlobalDataHandle data = 1;</code>
     */
    public xla.XlaData.GlobalDataHandle getData() {
      return data_ == null ? xla.XlaData.GlobalDataHandle.getDefaultInstance() : data_;
    }
    /**
     * <code>.xla.GlobalDataHandle data = 1;</code>
     */
    public xla.XlaData.GlobalDataHandleOrBuilder getDataOrBuilder() {
      return getData();
    }

    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 (data_ != null) {
        output.writeMessage(1, getData());
      }
    }

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

      size = 0;
      if (data_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getData());
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof xla.Xla.TransferToServerResponse)) {
        return super.equals(obj);
      }
      xla.Xla.TransferToServerResponse other = (xla.Xla.TransferToServerResponse) obj;

      boolean result = true;
      result = result && (hasData() == other.hasData());
      if (hasData()) {
        result = result && getData()
            .equals(other.getData());
      }
      return result;
    }

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

    public static xla.Xla.TransferToServerResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.TransferToServerResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.TransferToServerResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.TransferToServerResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.TransferToServerResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.TransferToServerResponse 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 xla.Xla.TransferToServerResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static xla.Xla.TransferToServerResponse 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 xla.Xla.TransferToServerResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.TransferToServerResponse 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(xla.Xla.TransferToServerResponse 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 xla.TransferToServerResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:xla.TransferToServerResponse)
        xla.Xla.TransferToServerResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return xla.Xla.internal_static_xla_TransferToServerResponse_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return xla.Xla.internal_static_xla_TransferToServerResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                xla.Xla.TransferToServerResponse.class, xla.Xla.TransferToServerResponse.Builder.class);
      }

      // Construct using xla.Xla.TransferToServerResponse.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 (dataBuilder_ == null) {
          data_ = null;
        } else {
          data_ = null;
          dataBuilder_ = null;
        }
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return xla.Xla.internal_static_xla_TransferToServerResponse_descriptor;
      }

      public xla.Xla.TransferToServerResponse getDefaultInstanceForType() {
        return xla.Xla.TransferToServerResponse.getDefaultInstance();
      }

      public xla.Xla.TransferToServerResponse build() {
        xla.Xla.TransferToServerResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public xla.Xla.TransferToServerResponse buildPartial() {
        xla.Xla.TransferToServerResponse result = new xla.Xla.TransferToServerResponse(this);
        if (dataBuilder_ == null) {
          result.data_ = data_;
        } else {
          result.data_ = dataBuilder_.build();
        }
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof xla.Xla.TransferToServerResponse) {
          return mergeFrom((xla.Xla.TransferToServerResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(xla.Xla.TransferToServerResponse other) {
        if (other == xla.Xla.TransferToServerResponse.getDefaultInstance()) return this;
        if (other.hasData()) {
          mergeData(other.getData());
        }
        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 {
        xla.Xla.TransferToServerResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (xla.Xla.TransferToServerResponse) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private xla.XlaData.GlobalDataHandle data_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.XlaData.GlobalDataHandle, xla.XlaData.GlobalDataHandle.Builder, xla.XlaData.GlobalDataHandleOrBuilder> dataBuilder_;
      /**
       * <code>.xla.GlobalDataHandle data = 1;</code>
       */
      public boolean hasData() {
        return dataBuilder_ != null || data_ != null;
      }
      /**
       * <code>.xla.GlobalDataHandle data = 1;</code>
       */
      public xla.XlaData.GlobalDataHandle getData() {
        if (dataBuilder_ == null) {
          return data_ == null ? xla.XlaData.GlobalDataHandle.getDefaultInstance() : data_;
        } else {
          return dataBuilder_.getMessage();
        }
      }
      /**
       * <code>.xla.GlobalDataHandle data = 1;</code>
       */
      public Builder setData(xla.XlaData.GlobalDataHandle value) {
        if (dataBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          data_ = value;
          onChanged();
        } else {
          dataBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.xla.GlobalDataHandle data = 1;</code>
       */
      public Builder setData(
          xla.XlaData.GlobalDataHandle.Builder builderForValue) {
        if (dataBuilder_ == null) {
          data_ = builderForValue.build();
          onChanged();
        } else {
          dataBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.xla.GlobalDataHandle data = 1;</code>
       */
      public Builder mergeData(xla.XlaData.GlobalDataHandle value) {
        if (dataBuilder_ == null) {
          if (data_ != null) {
            data_ =
              xla.XlaData.GlobalDataHandle.newBuilder(data_).mergeFrom(value).buildPartial();
          } else {
            data_ = value;
          }
          onChanged();
        } else {
          dataBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.xla.GlobalDataHandle data = 1;</code>
       */
      public Builder clearData() {
        if (dataBuilder_ == null) {
          data_ = null;
          onChanged();
        } else {
          data_ = null;
          dataBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.xla.GlobalDataHandle data = 1;</code>
       */
      public xla.XlaData.GlobalDataHandle.Builder getDataBuilder() {
        
        onChanged();
        return getDataFieldBuilder().getBuilder();
      }
      /**
       * <code>.xla.GlobalDataHandle data = 1;</code>
       */
      public xla.XlaData.GlobalDataHandleOrBuilder getDataOrBuilder() {
        if (dataBuilder_ != null) {
          return dataBuilder_.getMessageOrBuilder();
        } else {
          return data_ == null ?
              xla.XlaData.GlobalDataHandle.getDefaultInstance() : data_;
        }
      }
      /**
       * <code>.xla.GlobalDataHandle data = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.XlaData.GlobalDataHandle, xla.XlaData.GlobalDataHandle.Builder, xla.XlaData.GlobalDataHandleOrBuilder> 
          getDataFieldBuilder() {
        if (dataBuilder_ == null) {
          dataBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              xla.XlaData.GlobalDataHandle, xla.XlaData.GlobalDataHandle.Builder, xla.XlaData.GlobalDataHandleOrBuilder>(
                  getData(),
                  getParentForChildren(),
                  isClean());
          data_ = null;
        }
        return dataBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

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


      // @@protoc_insertion_point(builder_scope:xla.TransferToServerResponse)
    }

    // @@protoc_insertion_point(class_scope:xla.TransferToServerResponse)
    private static final xla.Xla.TransferToServerResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new xla.Xla.TransferToServerResponse();
    }

    public static xla.Xla.TransferToServerResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public xla.Xla.TransferToServerResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TransferToInfeedRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:xla.TransferToInfeedRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.xla.LiteralProto literal = 1;</code>
     */
    boolean hasLiteral();
    /**
     * <code>.xla.LiteralProto literal = 1;</code>
     */
    xla.XlaData.LiteralProto getLiteral();
    /**
     * <code>.xla.LiteralProto literal = 1;</code>
     */
    xla.XlaData.LiteralProtoOrBuilder getLiteralOrBuilder();

    /**
     * <code>int64 replica_id = 2;</code>
     */
    long getReplicaId();

    /**
     * <code>.xla.DeviceHandle device_handle = 3;</code>
     */
    boolean hasDeviceHandle();
    /**
     * <code>.xla.DeviceHandle device_handle = 3;</code>
     */
    xla.XlaData.DeviceHandle getDeviceHandle();
    /**
     * <code>.xla.DeviceHandle device_handle = 3;</code>
     */
    xla.XlaData.DeviceHandleOrBuilder getDeviceHandleOrBuilder();
  }
  /**
   * Protobuf type {@code xla.TransferToInfeedRequest}
   */
  public  static final class TransferToInfeedRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:xla.TransferToInfeedRequest)
      TransferToInfeedRequestOrBuilder {
    // Use TransferToInfeedRequest.newBuilder() to construct.
    private TransferToInfeedRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private TransferToInfeedRequest() {
      replicaId_ = 0L;
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private TransferToInfeedRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              xla.XlaData.LiteralProto.Builder subBuilder = null;
              if (literal_ != null) {
                subBuilder = literal_.toBuilder();
              }
              literal_ = input.readMessage(xla.XlaData.LiteralProto.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(literal_);
                literal_ = subBuilder.buildPartial();
              }

              break;
            }
            case 16: {

              replicaId_ = input.readInt64();
              break;
            }
            case 26: {
              xla.XlaData.DeviceHandle.Builder subBuilder = null;
              if (deviceHandle_ != null) {
                subBuilder = deviceHandle_.toBuilder();
              }
              deviceHandle_ = input.readMessage(xla.XlaData.DeviceHandle.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(deviceHandle_);
                deviceHandle_ = 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 {
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return xla.Xla.internal_static_xla_TransferToInfeedRequest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return xla.Xla.internal_static_xla_TransferToInfeedRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              xla.Xla.TransferToInfeedRequest.class, xla.Xla.TransferToInfeedRequest.Builder.class);
    }

    public static final int LITERAL_FIELD_NUMBER = 1;
    private xla.XlaData.LiteralProto literal_;
    /**
     * <code>.xla.LiteralProto literal = 1;</code>
     */
    public boolean hasLiteral() {
      return literal_ != null;
    }
    /**
     * <code>.xla.LiteralProto literal = 1;</code>
     */
    public xla.XlaData.LiteralProto getLiteral() {
      return literal_ == null ? xla.XlaData.LiteralProto.getDefaultInstance() : literal_;
    }
    /**
     * <code>.xla.LiteralProto literal = 1;</code>
     */
    public xla.XlaData.LiteralProtoOrBuilder getLiteralOrBuilder() {
      return getLiteral();
    }

    public static final int REPLICA_ID_FIELD_NUMBER = 2;
    private long replicaId_;
    /**
     * <code>int64 replica_id = 2;</code>
     */
    public long getReplicaId() {
      return replicaId_;
    }

    public static final int DEVICE_HANDLE_FIELD_NUMBER = 3;
    private xla.XlaData.DeviceHandle deviceHandle_;
    /**
     * <code>.xla.DeviceHandle device_handle = 3;</code>
     */
    public boolean hasDeviceHandle() {
      return deviceHandle_ != null;
    }
    /**
     * <code>.xla.DeviceHandle device_handle = 3;</code>
     */
    public xla.XlaData.DeviceHandle getDeviceHandle() {
      return deviceHandle_ == null ? xla.XlaData.DeviceHandle.getDefaultInstance() : deviceHandle_;
    }
    /**
     * <code>.xla.DeviceHandle device_handle = 3;</code>
     */
    public xla.XlaData.DeviceHandleOrBuilder getDeviceHandleOrBuilder() {
      return getDeviceHandle();
    }

    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 (literal_ != null) {
        output.writeMessage(1, getLiteral());
      }
      if (replicaId_ != 0L) {
        output.writeInt64(2, replicaId_);
      }
      if (deviceHandle_ != null) {
        output.writeMessage(3, getDeviceHandle());
      }
    }

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

      size = 0;
      if (literal_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getLiteral());
      }
      if (replicaId_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(2, replicaId_);
      }
      if (deviceHandle_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getDeviceHandle());
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof xla.Xla.TransferToInfeedRequest)) {
        return super.equals(obj);
      }
      xla.Xla.TransferToInfeedRequest other = (xla.Xla.TransferToInfeedRequest) obj;

      boolean result = true;
      result = result && (hasLiteral() == other.hasLiteral());
      if (hasLiteral()) {
        result = result && getLiteral()
            .equals(other.getLiteral());
      }
      result = result && (getReplicaId()
          == other.getReplicaId());
      result = result && (hasDeviceHandle() == other.hasDeviceHandle());
      if (hasDeviceHandle()) {
        result = result && getDeviceHandle()
            .equals(other.getDeviceHandle());
      }
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasLiteral()) {
        hash = (37 * hash) + LITERAL_FIELD_NUMBER;
        hash = (53 * hash) + getLiteral().hashCode();
      }
      hash = (37 * hash) + REPLICA_ID_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getReplicaId());
      if (hasDeviceHandle()) {
        hash = (37 * hash) + DEVICE_HANDLE_FIELD_NUMBER;
        hash = (53 * hash) + getDeviceHandle().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static xla.Xla.TransferToInfeedRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.TransferToInfeedRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.TransferToInfeedRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.TransferToInfeedRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.TransferToInfeedRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.TransferToInfeedRequest 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 xla.Xla.TransferToInfeedRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static xla.Xla.TransferToInfeedRequest 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 xla.Xla.TransferToInfeedRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.TransferToInfeedRequest 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(xla.Xla.TransferToInfeedRequest 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 xla.TransferToInfeedRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:xla.TransferToInfeedRequest)
        xla.Xla.TransferToInfeedRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return xla.Xla.internal_static_xla_TransferToInfeedRequest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return xla.Xla.internal_static_xla_TransferToInfeedRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                xla.Xla.TransferToInfeedRequest.class, xla.Xla.TransferToInfeedRequest.Builder.class);
      }

      // Construct using xla.Xla.TransferToInfeedRequest.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 (literalBuilder_ == null) {
          literal_ = null;
        } else {
          literal_ = null;
          literalBuilder_ = null;
        }
        replicaId_ = 0L;

        if (deviceHandleBuilder_ == null) {
          deviceHandle_ = null;
        } else {
          deviceHandle_ = null;
          deviceHandleBuilder_ = null;
        }
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return xla.Xla.internal_static_xla_TransferToInfeedRequest_descriptor;
      }

      public xla.Xla.TransferToInfeedRequest getDefaultInstanceForType() {
        return xla.Xla.TransferToInfeedRequest.getDefaultInstance();
      }

      public xla.Xla.TransferToInfeedRequest build() {
        xla.Xla.TransferToInfeedRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public xla.Xla.TransferToInfeedRequest buildPartial() {
        xla.Xla.TransferToInfeedRequest result = new xla.Xla.TransferToInfeedRequest(this);
        if (literalBuilder_ == null) {
          result.literal_ = literal_;
        } else {
          result.literal_ = literalBuilder_.build();
        }
        result.replicaId_ = replicaId_;
        if (deviceHandleBuilder_ == null) {
          result.deviceHandle_ = deviceHandle_;
        } else {
          result.deviceHandle_ = deviceHandleBuilder_.build();
        }
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof xla.Xla.TransferToInfeedRequest) {
          return mergeFrom((xla.Xla.TransferToInfeedRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(xla.Xla.TransferToInfeedRequest other) {
        if (other == xla.Xla.TransferToInfeedRequest.getDefaultInstance()) return this;
        if (other.hasLiteral()) {
          mergeLiteral(other.getLiteral());
        }
        if (other.getReplicaId() != 0L) {
          setReplicaId(other.getReplicaId());
        }
        if (other.hasDeviceHandle()) {
          mergeDeviceHandle(other.getDeviceHandle());
        }
        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 {
        xla.Xla.TransferToInfeedRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (xla.Xla.TransferToInfeedRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private xla.XlaData.LiteralProto literal_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.XlaData.LiteralProto, xla.XlaData.LiteralProto.Builder, xla.XlaData.LiteralProtoOrBuilder> literalBuilder_;
      /**
       * <code>.xla.LiteralProto literal = 1;</code>
       */
      public boolean hasLiteral() {
        return literalBuilder_ != null || literal_ != null;
      }
      /**
       * <code>.xla.LiteralProto literal = 1;</code>
       */
      public xla.XlaData.LiteralProto getLiteral() {
        if (literalBuilder_ == null) {
          return literal_ == null ? xla.XlaData.LiteralProto.getDefaultInstance() : literal_;
        } else {
          return literalBuilder_.getMessage();
        }
      }
      /**
       * <code>.xla.LiteralProto literal = 1;</code>
       */
      public Builder setLiteral(xla.XlaData.LiteralProto value) {
        if (literalBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          literal_ = value;
          onChanged();
        } else {
          literalBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.xla.LiteralProto literal = 1;</code>
       */
      public Builder setLiteral(
          xla.XlaData.LiteralProto.Builder builderForValue) {
        if (literalBuilder_ == null) {
          literal_ = builderForValue.build();
          onChanged();
        } else {
          literalBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.xla.LiteralProto literal = 1;</code>
       */
      public Builder mergeLiteral(xla.XlaData.LiteralProto value) {
        if (literalBuilder_ == null) {
          if (literal_ != null) {
            literal_ =
              xla.XlaData.LiteralProto.newBuilder(literal_).mergeFrom(value).buildPartial();
          } else {
            literal_ = value;
          }
          onChanged();
        } else {
          literalBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.xla.LiteralProto literal = 1;</code>
       */
      public Builder clearLiteral() {
        if (literalBuilder_ == null) {
          literal_ = null;
          onChanged();
        } else {
          literal_ = null;
          literalBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.xla.LiteralProto literal = 1;</code>
       */
      public xla.XlaData.LiteralProto.Builder getLiteralBuilder() {
        
        onChanged();
        return getLiteralFieldBuilder().getBuilder();
      }
      /**
       * <code>.xla.LiteralProto literal = 1;</code>
       */
      public xla.XlaData.LiteralProtoOrBuilder getLiteralOrBuilder() {
        if (literalBuilder_ != null) {
          return literalBuilder_.getMessageOrBuilder();
        } else {
          return literal_ == null ?
              xla.XlaData.LiteralProto.getDefaultInstance() : literal_;
        }
      }
      /**
       * <code>.xla.LiteralProto literal = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.XlaData.LiteralProto, xla.XlaData.LiteralProto.Builder, xla.XlaData.LiteralProtoOrBuilder> 
          getLiteralFieldBuilder() {
        if (literalBuilder_ == null) {
          literalBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              xla.XlaData.LiteralProto, xla.XlaData.LiteralProto.Builder, xla.XlaData.LiteralProtoOrBuilder>(
                  getLiteral(),
                  getParentForChildren(),
                  isClean());
          literal_ = null;
        }
        return literalBuilder_;
      }

      private long replicaId_ ;
      /**
       * <code>int64 replica_id = 2;</code>
       */
      public long getReplicaId() {
        return replicaId_;
      }
      /**
       * <code>int64 replica_id = 2;</code>
       */
      public Builder setReplicaId(long value) {
        
        replicaId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>int64 replica_id = 2;</code>
       */
      public Builder clearReplicaId() {
        
        replicaId_ = 0L;
        onChanged();
        return this;
      }

      private xla.XlaData.DeviceHandle deviceHandle_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.XlaData.DeviceHandle, xla.XlaData.DeviceHandle.Builder, xla.XlaData.DeviceHandleOrBuilder> deviceHandleBuilder_;
      /**
       * <code>.xla.DeviceHandle device_handle = 3;</code>
       */
      public boolean hasDeviceHandle() {
        return deviceHandleBuilder_ != null || deviceHandle_ != null;
      }
      /**
       * <code>.xla.DeviceHandle device_handle = 3;</code>
       */
      public xla.XlaData.DeviceHandle getDeviceHandle() {
        if (deviceHandleBuilder_ == null) {
          return deviceHandle_ == null ? xla.XlaData.DeviceHandle.getDefaultInstance() : deviceHandle_;
        } else {
          return deviceHandleBuilder_.getMessage();
        }
      }
      /**
       * <code>.xla.DeviceHandle device_handle = 3;</code>
       */
      public Builder setDeviceHandle(xla.XlaData.DeviceHandle value) {
        if (deviceHandleBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          deviceHandle_ = value;
          onChanged();
        } else {
          deviceHandleBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.xla.DeviceHandle device_handle = 3;</code>
       */
      public Builder setDeviceHandle(
          xla.XlaData.DeviceHandle.Builder builderForValue) {
        if (deviceHandleBuilder_ == null) {
          deviceHandle_ = builderForValue.build();
          onChanged();
        } else {
          deviceHandleBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.xla.DeviceHandle device_handle = 3;</code>
       */
      public Builder mergeDeviceHandle(xla.XlaData.DeviceHandle value) {
        if (deviceHandleBuilder_ == null) {
          if (deviceHandle_ != null) {
            deviceHandle_ =
              xla.XlaData.DeviceHandle.newBuilder(deviceHandle_).mergeFrom(value).buildPartial();
          } else {
            deviceHandle_ = value;
          }
          onChanged();
        } else {
          deviceHandleBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.xla.DeviceHandle device_handle = 3;</code>
       */
      public Builder clearDeviceHandle() {
        if (deviceHandleBuilder_ == null) {
          deviceHandle_ = null;
          onChanged();
        } else {
          deviceHandle_ = null;
          deviceHandleBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.xla.DeviceHandle device_handle = 3;</code>
       */
      public xla.XlaData.DeviceHandle.Builder getDeviceHandleBuilder() {
        
        onChanged();
        return getDeviceHandleFieldBuilder().getBuilder();
      }
      /**
       * <code>.xla.DeviceHandle device_handle = 3;</code>
       */
      public xla.XlaData.DeviceHandleOrBuilder getDeviceHandleOrBuilder() {
        if (deviceHandleBuilder_ != null) {
          return deviceHandleBuilder_.getMessageOrBuilder();
        } else {
          return deviceHandle_ == null ?
              xla.XlaData.DeviceHandle.getDefaultInstance() : deviceHandle_;
        }
      }
      /**
       * <code>.xla.DeviceHandle device_handle = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.XlaData.DeviceHandle, xla.XlaData.DeviceHandle.Builder, xla.XlaData.DeviceHandleOrBuilder> 
          getDeviceHandleFieldBuilder() {
        if (deviceHandleBuilder_ == null) {
          deviceHandleBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              xla.XlaData.DeviceHandle, xla.XlaData.DeviceHandle.Builder, xla.XlaData.DeviceHandleOrBuilder>(
                  getDeviceHandle(),
                  getParentForChildren(),
                  isClean());
          deviceHandle_ = null;
        }
        return deviceHandleBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

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


      // @@protoc_insertion_point(builder_scope:xla.TransferToInfeedRequest)
    }

    // @@protoc_insertion_point(class_scope:xla.TransferToInfeedRequest)
    private static final xla.Xla.TransferToInfeedRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new xla.Xla.TransferToInfeedRequest();
    }

    public static xla.Xla.TransferToInfeedRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public xla.Xla.TransferToInfeedRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TransferToInfeedResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:xla.TransferToInfeedResponse)
      com.google.protobuf.MessageOrBuilder {
  }
  /**
   * Protobuf type {@code xla.TransferToInfeedResponse}
   */
  public  static final class TransferToInfeedResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:xla.TransferToInfeedResponse)
      TransferToInfeedResponseOrBuilder {
    // Use TransferToInfeedResponse.newBuilder() to construct.
    private TransferToInfeedResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private TransferToInfeedResponse() {
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private TransferToInfeedResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(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 {
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return xla.Xla.internal_static_xla_TransferToInfeedResponse_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return xla.Xla.internal_static_xla_TransferToInfeedResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              xla.Xla.TransferToInfeedResponse.class, xla.Xla.TransferToInfeedResponse.Builder.class);
    }

    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 {
    }

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

      size = 0;
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof xla.Xla.TransferToInfeedResponse)) {
        return super.equals(obj);
      }
      xla.Xla.TransferToInfeedResponse other = (xla.Xla.TransferToInfeedResponse) obj;

      boolean result = true;
      return result;
    }

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

    public static xla.Xla.TransferToInfeedResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.TransferToInfeedResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.TransferToInfeedResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.TransferToInfeedResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.TransferToInfeedResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.TransferToInfeedResponse 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 xla.Xla.TransferToInfeedResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static xla.Xla.TransferToInfeedResponse 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 xla.Xla.TransferToInfeedResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.TransferToInfeedResponse 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(xla.Xla.TransferToInfeedResponse 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 xla.TransferToInfeedResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:xla.TransferToInfeedResponse)
        xla.Xla.TransferToInfeedResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return xla.Xla.internal_static_xla_TransferToInfeedResponse_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return xla.Xla.internal_static_xla_TransferToInfeedResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                xla.Xla.TransferToInfeedResponse.class, xla.Xla.TransferToInfeedResponse.Builder.class);
      }

      // Construct using xla.Xla.TransferToInfeedResponse.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();
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return xla.Xla.internal_static_xla_TransferToInfeedResponse_descriptor;
      }

      public xla.Xla.TransferToInfeedResponse getDefaultInstanceForType() {
        return xla.Xla.TransferToInfeedResponse.getDefaultInstance();
      }

      public xla.Xla.TransferToInfeedResponse build() {
        xla.Xla.TransferToInfeedResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public xla.Xla.TransferToInfeedResponse buildPartial() {
        xla.Xla.TransferToInfeedResponse result = new xla.Xla.TransferToInfeedResponse(this);
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof xla.Xla.TransferToInfeedResponse) {
          return mergeFrom((xla.Xla.TransferToInfeedResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(xla.Xla.TransferToInfeedResponse other) {
        if (other == xla.Xla.TransferToInfeedResponse.getDefaultInstance()) return this;
        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 {
        xla.Xla.TransferToInfeedResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (xla.Xla.TransferToInfeedResponse) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

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


      // @@protoc_insertion_point(builder_scope:xla.TransferToInfeedResponse)
    }

    // @@protoc_insertion_point(class_scope:xla.TransferToInfeedResponse)
    private static final xla.Xla.TransferToInfeedResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new xla.Xla.TransferToInfeedResponse();
    }

    public static xla.Xla.TransferToInfeedResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public xla.Xla.TransferToInfeedResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TransferFromOutfeedRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:xla.TransferFromOutfeedRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * This optional field directs the service to return the literal in this
     * layout. A shape is used to hold the layout to accommodate tuples.
     * </pre>
     *
     * <code>.xla.Shape shape_with_layout = 1;</code>
     */
    boolean hasShapeWithLayout();
    /**
     * <pre>
     * This optional field directs the service to return the literal in this
     * layout. A shape is used to hold the layout to accommodate tuples.
     * </pre>
     *
     * <code>.xla.Shape shape_with_layout = 1;</code>
     */
    xla.XlaData.Shape getShapeWithLayout();
    /**
     * <pre>
     * This optional field directs the service to return the literal in this
     * layout. A shape is used to hold the layout to accommodate tuples.
     * </pre>
     *
     * <code>.xla.Shape shape_with_layout = 1;</code>
     */
    xla.XlaData.ShapeOrBuilder getShapeWithLayoutOrBuilder();

    /**
     * <code>int64 replica_id = 2;</code>
     */
    long getReplicaId();

    /**
     * <code>.xla.DeviceHandle device_handle = 3;</code>
     */
    boolean hasDeviceHandle();
    /**
     * <code>.xla.DeviceHandle device_handle = 3;</code>
     */
    xla.XlaData.DeviceHandle getDeviceHandle();
    /**
     * <code>.xla.DeviceHandle device_handle = 3;</code>
     */
    xla.XlaData.DeviceHandleOrBuilder getDeviceHandleOrBuilder();
  }
  /**
   * Protobuf type {@code xla.TransferFromOutfeedRequest}
   */
  public  static final class TransferFromOutfeedRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:xla.TransferFromOutfeedRequest)
      TransferFromOutfeedRequestOrBuilder {
    // Use TransferFromOutfeedRequest.newBuilder() to construct.
    private TransferFromOutfeedRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private TransferFromOutfeedRequest() {
      replicaId_ = 0L;
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private TransferFromOutfeedRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              xla.XlaData.Shape.Builder subBuilder = null;
              if (shapeWithLayout_ != null) {
                subBuilder = shapeWithLayout_.toBuilder();
              }
              shapeWithLayout_ = input.readMessage(xla.XlaData.Shape.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(shapeWithLayout_);
                shapeWithLayout_ = subBuilder.buildPartial();
              }

              break;
            }
            case 16: {

              replicaId_ = input.readInt64();
              break;
            }
            case 26: {
              xla.XlaData.DeviceHandle.Builder subBuilder = null;
              if (deviceHandle_ != null) {
                subBuilder = deviceHandle_.toBuilder();
              }
              deviceHandle_ = input.readMessage(xla.XlaData.DeviceHandle.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(deviceHandle_);
                deviceHandle_ = 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 {
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return xla.Xla.internal_static_xla_TransferFromOutfeedRequest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return xla.Xla.internal_static_xla_TransferFromOutfeedRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              xla.Xla.TransferFromOutfeedRequest.class, xla.Xla.TransferFromOutfeedRequest.Builder.class);
    }

    public static final int SHAPE_WITH_LAYOUT_FIELD_NUMBER = 1;
    private xla.XlaData.Shape shapeWithLayout_;
    /**
     * <pre>
     * This optional field directs the service to return the literal in this
     * layout. A shape is used to hold the layout to accommodate tuples.
     * </pre>
     *
     * <code>.xla.Shape shape_with_layout = 1;</code>
     */
    public boolean hasShapeWithLayout() {
      return shapeWithLayout_ != null;
    }
    /**
     * <pre>
     * This optional field directs the service to return the literal in this
     * layout. A shape is used to hold the layout to accommodate tuples.
     * </pre>
     *
     * <code>.xla.Shape shape_with_layout = 1;</code>
     */
    public xla.XlaData.Shape getShapeWithLayout() {
      return shapeWithLayout_ == null ? xla.XlaData.Shape.getDefaultInstance() : shapeWithLayout_;
    }
    /**
     * <pre>
     * This optional field directs the service to return the literal in this
     * layout. A shape is used to hold the layout to accommodate tuples.
     * </pre>
     *
     * <code>.xla.Shape shape_with_layout = 1;</code>
     */
    public xla.XlaData.ShapeOrBuilder getShapeWithLayoutOrBuilder() {
      return getShapeWithLayout();
    }

    public static final int REPLICA_ID_FIELD_NUMBER = 2;
    private long replicaId_;
    /**
     * <code>int64 replica_id = 2;</code>
     */
    public long getReplicaId() {
      return replicaId_;
    }

    public static final int DEVICE_HANDLE_FIELD_NUMBER = 3;
    private xla.XlaData.DeviceHandle deviceHandle_;
    /**
     * <code>.xla.DeviceHandle device_handle = 3;</code>
     */
    public boolean hasDeviceHandle() {
      return deviceHandle_ != null;
    }
    /**
     * <code>.xla.DeviceHandle device_handle = 3;</code>
     */
    public xla.XlaData.DeviceHandle getDeviceHandle() {
      return deviceHandle_ == null ? xla.XlaData.DeviceHandle.getDefaultInstance() : deviceHandle_;
    }
    /**
     * <code>.xla.DeviceHandle device_handle = 3;</code>
     */
    public xla.XlaData.DeviceHandleOrBuilder getDeviceHandleOrBuilder() {
      return getDeviceHandle();
    }

    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 (shapeWithLayout_ != null) {
        output.writeMessage(1, getShapeWithLayout());
      }
      if (replicaId_ != 0L) {
        output.writeInt64(2, replicaId_);
      }
      if (deviceHandle_ != null) {
        output.writeMessage(3, getDeviceHandle());
      }
    }

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

      size = 0;
      if (shapeWithLayout_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getShapeWithLayout());
      }
      if (replicaId_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(2, replicaId_);
      }
      if (deviceHandle_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getDeviceHandle());
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof xla.Xla.TransferFromOutfeedRequest)) {
        return super.equals(obj);
      }
      xla.Xla.TransferFromOutfeedRequest other = (xla.Xla.TransferFromOutfeedRequest) obj;

      boolean result = true;
      result = result && (hasShapeWithLayout() == other.hasShapeWithLayout());
      if (hasShapeWithLayout()) {
        result = result && getShapeWithLayout()
            .equals(other.getShapeWithLayout());
      }
      result = result && (getReplicaId()
          == other.getReplicaId());
      result = result && (hasDeviceHandle() == other.hasDeviceHandle());
      if (hasDeviceHandle()) {
        result = result && getDeviceHandle()
            .equals(other.getDeviceHandle());
      }
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasShapeWithLayout()) {
        hash = (37 * hash) + SHAPE_WITH_LAYOUT_FIELD_NUMBER;
        hash = (53 * hash) + getShapeWithLayout().hashCode();
      }
      hash = (37 * hash) + REPLICA_ID_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getReplicaId());
      if (hasDeviceHandle()) {
        hash = (37 * hash) + DEVICE_HANDLE_FIELD_NUMBER;
        hash = (53 * hash) + getDeviceHandle().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static xla.Xla.TransferFromOutfeedRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.TransferFromOutfeedRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.TransferFromOutfeedRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.TransferFromOutfeedRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.TransferFromOutfeedRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.TransferFromOutfeedRequest 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 xla.Xla.TransferFromOutfeedRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static xla.Xla.TransferFromOutfeedRequest 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 xla.Xla.TransferFromOutfeedRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.TransferFromOutfeedRequest 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(xla.Xla.TransferFromOutfeedRequest 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 xla.TransferFromOutfeedRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:xla.TransferFromOutfeedRequest)
        xla.Xla.TransferFromOutfeedRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return xla.Xla.internal_static_xla_TransferFromOutfeedRequest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return xla.Xla.internal_static_xla_TransferFromOutfeedRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                xla.Xla.TransferFromOutfeedRequest.class, xla.Xla.TransferFromOutfeedRequest.Builder.class);
      }

      // Construct using xla.Xla.TransferFromOutfeedRequest.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 (shapeWithLayoutBuilder_ == null) {
          shapeWithLayout_ = null;
        } else {
          shapeWithLayout_ = null;
          shapeWithLayoutBuilder_ = null;
        }
        replicaId_ = 0L;

        if (deviceHandleBuilder_ == null) {
          deviceHandle_ = null;
        } else {
          deviceHandle_ = null;
          deviceHandleBuilder_ = null;
        }
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return xla.Xla.internal_static_xla_TransferFromOutfeedRequest_descriptor;
      }

      public xla.Xla.TransferFromOutfeedRequest getDefaultInstanceForType() {
        return xla.Xla.TransferFromOutfeedRequest.getDefaultInstance();
      }

      public xla.Xla.TransferFromOutfeedRequest build() {
        xla.Xla.TransferFromOutfeedRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public xla.Xla.TransferFromOutfeedRequest buildPartial() {
        xla.Xla.TransferFromOutfeedRequest result = new xla.Xla.TransferFromOutfeedRequest(this);
        if (shapeWithLayoutBuilder_ == null) {
          result.shapeWithLayout_ = shapeWithLayout_;
        } else {
          result.shapeWithLayout_ = shapeWithLayoutBuilder_.build();
        }
        result.replicaId_ = replicaId_;
        if (deviceHandleBuilder_ == null) {
          result.deviceHandle_ = deviceHandle_;
        } else {
          result.deviceHandle_ = deviceHandleBuilder_.build();
        }
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof xla.Xla.TransferFromOutfeedRequest) {
          return mergeFrom((xla.Xla.TransferFromOutfeedRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(xla.Xla.TransferFromOutfeedRequest other) {
        if (other == xla.Xla.TransferFromOutfeedRequest.getDefaultInstance()) return this;
        if (other.hasShapeWithLayout()) {
          mergeShapeWithLayout(other.getShapeWithLayout());
        }
        if (other.getReplicaId() != 0L) {
          setReplicaId(other.getReplicaId());
        }
        if (other.hasDeviceHandle()) {
          mergeDeviceHandle(other.getDeviceHandle());
        }
        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 {
        xla.Xla.TransferFromOutfeedRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (xla.Xla.TransferFromOutfeedRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private xla.XlaData.Shape shapeWithLayout_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.XlaData.Shape, xla.XlaData.Shape.Builder, xla.XlaData.ShapeOrBuilder> shapeWithLayoutBuilder_;
      /**
       * <pre>
       * This optional field directs the service to return the literal in this
       * layout. A shape is used to hold the layout to accommodate tuples.
       * </pre>
       *
       * <code>.xla.Shape shape_with_layout = 1;</code>
       */
      public boolean hasShapeWithLayout() {
        return shapeWithLayoutBuilder_ != null || shapeWithLayout_ != null;
      }
      /**
       * <pre>
       * This optional field directs the service to return the literal in this
       * layout. A shape is used to hold the layout to accommodate tuples.
       * </pre>
       *
       * <code>.xla.Shape shape_with_layout = 1;</code>
       */
      public xla.XlaData.Shape getShapeWithLayout() {
        if (shapeWithLayoutBuilder_ == null) {
          return shapeWithLayout_ == null ? xla.XlaData.Shape.getDefaultInstance() : shapeWithLayout_;
        } else {
          return shapeWithLayoutBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * This optional field directs the service to return the literal in this
       * layout. A shape is used to hold the layout to accommodate tuples.
       * </pre>
       *
       * <code>.xla.Shape shape_with_layout = 1;</code>
       */
      public Builder setShapeWithLayout(xla.XlaData.Shape value) {
        if (shapeWithLayoutBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          shapeWithLayout_ = value;
          onChanged();
        } else {
          shapeWithLayoutBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       * This optional field directs the service to return the literal in this
       * layout. A shape is used to hold the layout to accommodate tuples.
       * </pre>
       *
       * <code>.xla.Shape shape_with_layout = 1;</code>
       */
      public Builder setShapeWithLayout(
          xla.XlaData.Shape.Builder builderForValue) {
        if (shapeWithLayoutBuilder_ == null) {
          shapeWithLayout_ = builderForValue.build();
          onChanged();
        } else {
          shapeWithLayoutBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       * This optional field directs the service to return the literal in this
       * layout. A shape is used to hold the layout to accommodate tuples.
       * </pre>
       *
       * <code>.xla.Shape shape_with_layout = 1;</code>
       */
      public Builder mergeShapeWithLayout(xla.XlaData.Shape value) {
        if (shapeWithLayoutBuilder_ == null) {
          if (shapeWithLayout_ != null) {
            shapeWithLayout_ =
              xla.XlaData.Shape.newBuilder(shapeWithLayout_).mergeFrom(value).buildPartial();
          } else {
            shapeWithLayout_ = value;
          }
          onChanged();
        } else {
          shapeWithLayoutBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       * This optional field directs the service to return the literal in this
       * layout. A shape is used to hold the layout to accommodate tuples.
       * </pre>
       *
       * <code>.xla.Shape shape_with_layout = 1;</code>
       */
      public Builder clearShapeWithLayout() {
        if (shapeWithLayoutBuilder_ == null) {
          shapeWithLayout_ = null;
          onChanged();
        } else {
          shapeWithLayout_ = null;
          shapeWithLayoutBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       * This optional field directs the service to return the literal in this
       * layout. A shape is used to hold the layout to accommodate tuples.
       * </pre>
       *
       * <code>.xla.Shape shape_with_layout = 1;</code>
       */
      public xla.XlaData.Shape.Builder getShapeWithLayoutBuilder() {
        
        onChanged();
        return getShapeWithLayoutFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * This optional field directs the service to return the literal in this
       * layout. A shape is used to hold the layout to accommodate tuples.
       * </pre>
       *
       * <code>.xla.Shape shape_with_layout = 1;</code>
       */
      public xla.XlaData.ShapeOrBuilder getShapeWithLayoutOrBuilder() {
        if (shapeWithLayoutBuilder_ != null) {
          return shapeWithLayoutBuilder_.getMessageOrBuilder();
        } else {
          return shapeWithLayout_ == null ?
              xla.XlaData.Shape.getDefaultInstance() : shapeWithLayout_;
        }
      }
      /**
       * <pre>
       * This optional field directs the service to return the literal in this
       * layout. A shape is used to hold the layout to accommodate tuples.
       * </pre>
       *
       * <code>.xla.Shape shape_with_layout = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.XlaData.Shape, xla.XlaData.Shape.Builder, xla.XlaData.ShapeOrBuilder> 
          getShapeWithLayoutFieldBuilder() {
        if (shapeWithLayoutBuilder_ == null) {
          shapeWithLayoutBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              xla.XlaData.Shape, xla.XlaData.Shape.Builder, xla.XlaData.ShapeOrBuilder>(
                  getShapeWithLayout(),
                  getParentForChildren(),
                  isClean());
          shapeWithLayout_ = null;
        }
        return shapeWithLayoutBuilder_;
      }

      private long replicaId_ ;
      /**
       * <code>int64 replica_id = 2;</code>
       */
      public long getReplicaId() {
        return replicaId_;
      }
      /**
       * <code>int64 replica_id = 2;</code>
       */
      public Builder setReplicaId(long value) {
        
        replicaId_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>int64 replica_id = 2;</code>
       */
      public Builder clearReplicaId() {
        
        replicaId_ = 0L;
        onChanged();
        return this;
      }

      private xla.XlaData.DeviceHandle deviceHandle_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.XlaData.DeviceHandle, xla.XlaData.DeviceHandle.Builder, xla.XlaData.DeviceHandleOrBuilder> deviceHandleBuilder_;
      /**
       * <code>.xla.DeviceHandle device_handle = 3;</code>
       */
      public boolean hasDeviceHandle() {
        return deviceHandleBuilder_ != null || deviceHandle_ != null;
      }
      /**
       * <code>.xla.DeviceHandle device_handle = 3;</code>
       */
      public xla.XlaData.DeviceHandle getDeviceHandle() {
        if (deviceHandleBuilder_ == null) {
          return deviceHandle_ == null ? xla.XlaData.DeviceHandle.getDefaultInstance() : deviceHandle_;
        } else {
          return deviceHandleBuilder_.getMessage();
        }
      }
      /**
       * <code>.xla.DeviceHandle device_handle = 3;</code>
       */
      public Builder setDeviceHandle(xla.XlaData.DeviceHandle value) {
        if (deviceHandleBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          deviceHandle_ = value;
          onChanged();
        } else {
          deviceHandleBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.xla.DeviceHandle device_handle = 3;</code>
       */
      public Builder setDeviceHandle(
          xla.XlaData.DeviceHandle.Builder builderForValue) {
        if (deviceHandleBuilder_ == null) {
          deviceHandle_ = builderForValue.build();
          onChanged();
        } else {
          deviceHandleBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.xla.DeviceHandle device_handle = 3;</code>
       */
      public Builder mergeDeviceHandle(xla.XlaData.DeviceHandle value) {
        if (deviceHandleBuilder_ == null) {
          if (deviceHandle_ != null) {
            deviceHandle_ =
              xla.XlaData.DeviceHandle.newBuilder(deviceHandle_).mergeFrom(value).buildPartial();
          } else {
            deviceHandle_ = value;
          }
          onChanged();
        } else {
          deviceHandleBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.xla.DeviceHandle device_handle = 3;</code>
       */
      public Builder clearDeviceHandle() {
        if (deviceHandleBuilder_ == null) {
          deviceHandle_ = null;
          onChanged();
        } else {
          deviceHandle_ = null;
          deviceHandleBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.xla.DeviceHandle device_handle = 3;</code>
       */
      public xla.XlaData.DeviceHandle.Builder getDeviceHandleBuilder() {
        
        onChanged();
        return getDeviceHandleFieldBuilder().getBuilder();
      }
      /**
       * <code>.xla.DeviceHandle device_handle = 3;</code>
       */
      public xla.XlaData.DeviceHandleOrBuilder getDeviceHandleOrBuilder() {
        if (deviceHandleBuilder_ != null) {
          return deviceHandleBuilder_.getMessageOrBuilder();
        } else {
          return deviceHandle_ == null ?
              xla.XlaData.DeviceHandle.getDefaultInstance() : deviceHandle_;
        }
      }
      /**
       * <code>.xla.DeviceHandle device_handle = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.XlaData.DeviceHandle, xla.XlaData.DeviceHandle.Builder, xla.XlaData.DeviceHandleOrBuilder> 
          getDeviceHandleFieldBuilder() {
        if (deviceHandleBuilder_ == null) {
          deviceHandleBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              xla.XlaData.DeviceHandle, xla.XlaData.DeviceHandle.Builder, xla.XlaData.DeviceHandleOrBuilder>(
                  getDeviceHandle(),
                  getParentForChildren(),
                  isClean());
          deviceHandle_ = null;
        }
        return deviceHandleBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

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


      // @@protoc_insertion_point(builder_scope:xla.TransferFromOutfeedRequest)
    }

    // @@protoc_insertion_point(class_scope:xla.TransferFromOutfeedRequest)
    private static final xla.Xla.TransferFromOutfeedRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new xla.Xla.TransferFromOutfeedRequest();
    }

    public static xla.Xla.TransferFromOutfeedRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public xla.Xla.TransferFromOutfeedRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TransferFromOutfeedResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:xla.TransferFromOutfeedResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.xla.LiteralProto literal = 1;</code>
     */
    boolean hasLiteral();
    /**
     * <code>.xla.LiteralProto literal = 1;</code>
     */
    xla.XlaData.LiteralProto getLiteral();
    /**
     * <code>.xla.LiteralProto literal = 1;</code>
     */
    xla.XlaData.LiteralProtoOrBuilder getLiteralOrBuilder();
  }
  /**
   * Protobuf type {@code xla.TransferFromOutfeedResponse}
   */
  public  static final class TransferFromOutfeedResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:xla.TransferFromOutfeedResponse)
      TransferFromOutfeedResponseOrBuilder {
    // Use TransferFromOutfeedResponse.newBuilder() to construct.
    private TransferFromOutfeedResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private TransferFromOutfeedResponse() {
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private TransferFromOutfeedResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              xla.XlaData.LiteralProto.Builder subBuilder = null;
              if (literal_ != null) {
                subBuilder = literal_.toBuilder();
              }
              literal_ = input.readMessage(xla.XlaData.LiteralProto.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(literal_);
                literal_ = 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 {
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return xla.Xla.internal_static_xla_TransferFromOutfeedResponse_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return xla.Xla.internal_static_xla_TransferFromOutfeedResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              xla.Xla.TransferFromOutfeedResponse.class, xla.Xla.TransferFromOutfeedResponse.Builder.class);
    }

    public static final int LITERAL_FIELD_NUMBER = 1;
    private xla.XlaData.LiteralProto literal_;
    /**
     * <code>.xla.LiteralProto literal = 1;</code>
     */
    public boolean hasLiteral() {
      return literal_ != null;
    }
    /**
     * <code>.xla.LiteralProto literal = 1;</code>
     */
    public xla.XlaData.LiteralProto getLiteral() {
      return literal_ == null ? xla.XlaData.LiteralProto.getDefaultInstance() : literal_;
    }
    /**
     * <code>.xla.LiteralProto literal = 1;</code>
     */
    public xla.XlaData.LiteralProtoOrBuilder getLiteralOrBuilder() {
      return getLiteral();
    }

    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 (literal_ != null) {
        output.writeMessage(1, getLiteral());
      }
    }

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

      size = 0;
      if (literal_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getLiteral());
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof xla.Xla.TransferFromOutfeedResponse)) {
        return super.equals(obj);
      }
      xla.Xla.TransferFromOutfeedResponse other = (xla.Xla.TransferFromOutfeedResponse) obj;

      boolean result = true;
      result = result && (hasLiteral() == other.hasLiteral());
      if (hasLiteral()) {
        result = result && getLiteral()
            .equals(other.getLiteral());
      }
      return result;
    }

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

    public static xla.Xla.TransferFromOutfeedResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.TransferFromOutfeedResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.TransferFromOutfeedResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.TransferFromOutfeedResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.TransferFromOutfeedResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.TransferFromOutfeedResponse 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 xla.Xla.TransferFromOutfeedResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static xla.Xla.TransferFromOutfeedResponse 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 xla.Xla.TransferFromOutfeedResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.TransferFromOutfeedResponse 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(xla.Xla.TransferFromOutfeedResponse 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 xla.TransferFromOutfeedResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:xla.TransferFromOutfeedResponse)
        xla.Xla.TransferFromOutfeedResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return xla.Xla.internal_static_xla_TransferFromOutfeedResponse_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return xla.Xla.internal_static_xla_TransferFromOutfeedResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                xla.Xla.TransferFromOutfeedResponse.class, xla.Xla.TransferFromOutfeedResponse.Builder.class);
      }

      // Construct using xla.Xla.TransferFromOutfeedResponse.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 (literalBuilder_ == null) {
          literal_ = null;
        } else {
          literal_ = null;
          literalBuilder_ = null;
        }
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return xla.Xla.internal_static_xla_TransferFromOutfeedResponse_descriptor;
      }

      public xla.Xla.TransferFromOutfeedResponse getDefaultInstanceForType() {
        return xla.Xla.TransferFromOutfeedResponse.getDefaultInstance();
      }

      public xla.Xla.TransferFromOutfeedResponse build() {
        xla.Xla.TransferFromOutfeedResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public xla.Xla.TransferFromOutfeedResponse buildPartial() {
        xla.Xla.TransferFromOutfeedResponse result = new xla.Xla.TransferFromOutfeedResponse(this);
        if (literalBuilder_ == null) {
          result.literal_ = literal_;
        } else {
          result.literal_ = literalBuilder_.build();
        }
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof xla.Xla.TransferFromOutfeedResponse) {
          return mergeFrom((xla.Xla.TransferFromOutfeedResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(xla.Xla.TransferFromOutfeedResponse other) {
        if (other == xla.Xla.TransferFromOutfeedResponse.getDefaultInstance()) return this;
        if (other.hasLiteral()) {
          mergeLiteral(other.getLiteral());
        }
        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 {
        xla.Xla.TransferFromOutfeedResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (xla.Xla.TransferFromOutfeedResponse) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private xla.XlaData.LiteralProto literal_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.XlaData.LiteralProto, xla.XlaData.LiteralProto.Builder, xla.XlaData.LiteralProtoOrBuilder> literalBuilder_;
      /**
       * <code>.xla.LiteralProto literal = 1;</code>
       */
      public boolean hasLiteral() {
        return literalBuilder_ != null || literal_ != null;
      }
      /**
       * <code>.xla.LiteralProto literal = 1;</code>
       */
      public xla.XlaData.LiteralProto getLiteral() {
        if (literalBuilder_ == null) {
          return literal_ == null ? xla.XlaData.LiteralProto.getDefaultInstance() : literal_;
        } else {
          return literalBuilder_.getMessage();
        }
      }
      /**
       * <code>.xla.LiteralProto literal = 1;</code>
       */
      public Builder setLiteral(xla.XlaData.LiteralProto value) {
        if (literalBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          literal_ = value;
          onChanged();
        } else {
          literalBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.xla.LiteralProto literal = 1;</code>
       */
      public Builder setLiteral(
          xla.XlaData.LiteralProto.Builder builderForValue) {
        if (literalBuilder_ == null) {
          literal_ = builderForValue.build();
          onChanged();
        } else {
          literalBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.xla.LiteralProto literal = 1;</code>
       */
      public Builder mergeLiteral(xla.XlaData.LiteralProto value) {
        if (literalBuilder_ == null) {
          if (literal_ != null) {
            literal_ =
              xla.XlaData.LiteralProto.newBuilder(literal_).mergeFrom(value).buildPartial();
          } else {
            literal_ = value;
          }
          onChanged();
        } else {
          literalBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.xla.LiteralProto literal = 1;</code>
       */
      public Builder clearLiteral() {
        if (literalBuilder_ == null) {
          literal_ = null;
          onChanged();
        } else {
          literal_ = null;
          literalBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.xla.LiteralProto literal = 1;</code>
       */
      public xla.XlaData.LiteralProto.Builder getLiteralBuilder() {
        
        onChanged();
        return getLiteralFieldBuilder().getBuilder();
      }
      /**
       * <code>.xla.LiteralProto literal = 1;</code>
       */
      public xla.XlaData.LiteralProtoOrBuilder getLiteralOrBuilder() {
        if (literalBuilder_ != null) {
          return literalBuilder_.getMessageOrBuilder();
        } else {
          return literal_ == null ?
              xla.XlaData.LiteralProto.getDefaultInstance() : literal_;
        }
      }
      /**
       * <code>.xla.LiteralProto literal = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.XlaData.LiteralProto, xla.XlaData.LiteralProto.Builder, xla.XlaData.LiteralProtoOrBuilder> 
          getLiteralFieldBuilder() {
        if (literalBuilder_ == null) {
          literalBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              xla.XlaData.LiteralProto, xla.XlaData.LiteralProto.Builder, xla.XlaData.LiteralProtoOrBuilder>(
                  getLiteral(),
                  getParentForChildren(),
                  isClean());
          literal_ = null;
        }
        return literalBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

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


      // @@protoc_insertion_point(builder_scope:xla.TransferFromOutfeedResponse)
    }

    // @@protoc_insertion_point(class_scope:xla.TransferFromOutfeedResponse)
    private static final xla.Xla.TransferFromOutfeedResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new xla.Xla.TransferFromOutfeedResponse();
    }

    public static xla.Xla.TransferFromOutfeedResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public xla.Xla.TransferFromOutfeedResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ResetDeviceRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:xla.ResetDeviceRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.xla.DeviceHandle device_handle = 1;</code>
     */
    boolean hasDeviceHandle();
    /**
     * <code>.xla.DeviceHandle device_handle = 1;</code>
     */
    xla.XlaData.DeviceHandle getDeviceHandle();
    /**
     * <code>.xla.DeviceHandle device_handle = 1;</code>
     */
    xla.XlaData.DeviceHandleOrBuilder getDeviceHandleOrBuilder();
  }
  /**
   * Protobuf type {@code xla.ResetDeviceRequest}
   */
  public  static final class ResetDeviceRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:xla.ResetDeviceRequest)
      ResetDeviceRequestOrBuilder {
    // Use ResetDeviceRequest.newBuilder() to construct.
    private ResetDeviceRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ResetDeviceRequest() {
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private ResetDeviceRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              xla.XlaData.DeviceHandle.Builder subBuilder = null;
              if (deviceHandle_ != null) {
                subBuilder = deviceHandle_.toBuilder();
              }
              deviceHandle_ = input.readMessage(xla.XlaData.DeviceHandle.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(deviceHandle_);
                deviceHandle_ = 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 {
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return xla.Xla.internal_static_xla_ResetDeviceRequest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return xla.Xla.internal_static_xla_ResetDeviceRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              xla.Xla.ResetDeviceRequest.class, xla.Xla.ResetDeviceRequest.Builder.class);
    }

    public static final int DEVICE_HANDLE_FIELD_NUMBER = 1;
    private xla.XlaData.DeviceHandle deviceHandle_;
    /**
     * <code>.xla.DeviceHandle device_handle = 1;</code>
     */
    public boolean hasDeviceHandle() {
      return deviceHandle_ != null;
    }
    /**
     * <code>.xla.DeviceHandle device_handle = 1;</code>
     */
    public xla.XlaData.DeviceHandle getDeviceHandle() {
      return deviceHandle_ == null ? xla.XlaData.DeviceHandle.getDefaultInstance() : deviceHandle_;
    }
    /**
     * <code>.xla.DeviceHandle device_handle = 1;</code>
     */
    public xla.XlaData.DeviceHandleOrBuilder getDeviceHandleOrBuilder() {
      return getDeviceHandle();
    }

    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 (deviceHandle_ != null) {
        output.writeMessage(1, getDeviceHandle());
      }
    }

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

      size = 0;
      if (deviceHandle_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getDeviceHandle());
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof xla.Xla.ResetDeviceRequest)) {
        return super.equals(obj);
      }
      xla.Xla.ResetDeviceRequest other = (xla.Xla.ResetDeviceRequest) obj;

      boolean result = true;
      result = result && (hasDeviceHandle() == other.hasDeviceHandle());
      if (hasDeviceHandle()) {
        result = result && getDeviceHandle()
            .equals(other.getDeviceHandle());
      }
      return result;
    }

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

    public static xla.Xla.ResetDeviceRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.ResetDeviceRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.ResetDeviceRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.ResetDeviceRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.ResetDeviceRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.ResetDeviceRequest 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 xla.Xla.ResetDeviceRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static xla.Xla.ResetDeviceRequest 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 xla.Xla.ResetDeviceRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.ResetDeviceRequest 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(xla.Xla.ResetDeviceRequest 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 xla.ResetDeviceRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:xla.ResetDeviceRequest)
        xla.Xla.ResetDeviceRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return xla.Xla.internal_static_xla_ResetDeviceRequest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return xla.Xla.internal_static_xla_ResetDeviceRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                xla.Xla.ResetDeviceRequest.class, xla.Xla.ResetDeviceRequest.Builder.class);
      }

      // Construct using xla.Xla.ResetDeviceRequest.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 (deviceHandleBuilder_ == null) {
          deviceHandle_ = null;
        } else {
          deviceHandle_ = null;
          deviceHandleBuilder_ = null;
        }
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return xla.Xla.internal_static_xla_ResetDeviceRequest_descriptor;
      }

      public xla.Xla.ResetDeviceRequest getDefaultInstanceForType() {
        return xla.Xla.ResetDeviceRequest.getDefaultInstance();
      }

      public xla.Xla.ResetDeviceRequest build() {
        xla.Xla.ResetDeviceRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public xla.Xla.ResetDeviceRequest buildPartial() {
        xla.Xla.ResetDeviceRequest result = new xla.Xla.ResetDeviceRequest(this);
        if (deviceHandleBuilder_ == null) {
          result.deviceHandle_ = deviceHandle_;
        } else {
          result.deviceHandle_ = deviceHandleBuilder_.build();
        }
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof xla.Xla.ResetDeviceRequest) {
          return mergeFrom((xla.Xla.ResetDeviceRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(xla.Xla.ResetDeviceRequest other) {
        if (other == xla.Xla.ResetDeviceRequest.getDefaultInstance()) return this;
        if (other.hasDeviceHandle()) {
          mergeDeviceHandle(other.getDeviceHandle());
        }
        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 {
        xla.Xla.ResetDeviceRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (xla.Xla.ResetDeviceRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private xla.XlaData.DeviceHandle deviceHandle_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.XlaData.DeviceHandle, xla.XlaData.DeviceHandle.Builder, xla.XlaData.DeviceHandleOrBuilder> deviceHandleBuilder_;
      /**
       * <code>.xla.DeviceHandle device_handle = 1;</code>
       */
      public boolean hasDeviceHandle() {
        return deviceHandleBuilder_ != null || deviceHandle_ != null;
      }
      /**
       * <code>.xla.DeviceHandle device_handle = 1;</code>
       */
      public xla.XlaData.DeviceHandle getDeviceHandle() {
        if (deviceHandleBuilder_ == null) {
          return deviceHandle_ == null ? xla.XlaData.DeviceHandle.getDefaultInstance() : deviceHandle_;
        } else {
          return deviceHandleBuilder_.getMessage();
        }
      }
      /**
       * <code>.xla.DeviceHandle device_handle = 1;</code>
       */
      public Builder setDeviceHandle(xla.XlaData.DeviceHandle value) {
        if (deviceHandleBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          deviceHandle_ = value;
          onChanged();
        } else {
          deviceHandleBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.xla.DeviceHandle device_handle = 1;</code>
       */
      public Builder setDeviceHandle(
          xla.XlaData.DeviceHandle.Builder builderForValue) {
        if (deviceHandleBuilder_ == null) {
          deviceHandle_ = builderForValue.build();
          onChanged();
        } else {
          deviceHandleBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.xla.DeviceHandle device_handle = 1;</code>
       */
      public Builder mergeDeviceHandle(xla.XlaData.DeviceHandle value) {
        if (deviceHandleBuilder_ == null) {
          if (deviceHandle_ != null) {
            deviceHandle_ =
              xla.XlaData.DeviceHandle.newBuilder(deviceHandle_).mergeFrom(value).buildPartial();
          } else {
            deviceHandle_ = value;
          }
          onChanged();
        } else {
          deviceHandleBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.xla.DeviceHandle device_handle = 1;</code>
       */
      public Builder clearDeviceHandle() {
        if (deviceHandleBuilder_ == null) {
          deviceHandle_ = null;
          onChanged();
        } else {
          deviceHandle_ = null;
          deviceHandleBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.xla.DeviceHandle device_handle = 1;</code>
       */
      public xla.XlaData.DeviceHandle.Builder getDeviceHandleBuilder() {
        
        onChanged();
        return getDeviceHandleFieldBuilder().getBuilder();
      }
      /**
       * <code>.xla.DeviceHandle device_handle = 1;</code>
       */
      public xla.XlaData.DeviceHandleOrBuilder getDeviceHandleOrBuilder() {
        if (deviceHandleBuilder_ != null) {
          return deviceHandleBuilder_.getMessageOrBuilder();
        } else {
          return deviceHandle_ == null ?
              xla.XlaData.DeviceHandle.getDefaultInstance() : deviceHandle_;
        }
      }
      /**
       * <code>.xla.DeviceHandle device_handle = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.XlaData.DeviceHandle, xla.XlaData.DeviceHandle.Builder, xla.XlaData.DeviceHandleOrBuilder> 
          getDeviceHandleFieldBuilder() {
        if (deviceHandleBuilder_ == null) {
          deviceHandleBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              xla.XlaData.DeviceHandle, xla.XlaData.DeviceHandle.Builder, xla.XlaData.DeviceHandleOrBuilder>(
                  getDeviceHandle(),
                  getParentForChildren(),
                  isClean());
          deviceHandle_ = null;
        }
        return deviceHandleBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

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


      // @@protoc_insertion_point(builder_scope:xla.ResetDeviceRequest)
    }

    // @@protoc_insertion_point(class_scope:xla.ResetDeviceRequest)
    private static final xla.Xla.ResetDeviceRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new xla.Xla.ResetDeviceRequest();
    }

    public static xla.Xla.ResetDeviceRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public xla.Xla.ResetDeviceRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ResetDeviceResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:xla.ResetDeviceResponse)
      com.google.protobuf.MessageOrBuilder {
  }
  /**
   * Protobuf type {@code xla.ResetDeviceResponse}
   */
  public  static final class ResetDeviceResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:xla.ResetDeviceResponse)
      ResetDeviceResponseOrBuilder {
    // Use ResetDeviceResponse.newBuilder() to construct.
    private ResetDeviceResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ResetDeviceResponse() {
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private ResetDeviceResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(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 {
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return xla.Xla.internal_static_xla_ResetDeviceResponse_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return xla.Xla.internal_static_xla_ResetDeviceResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              xla.Xla.ResetDeviceResponse.class, xla.Xla.ResetDeviceResponse.Builder.class);
    }

    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 {
    }

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

      size = 0;
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof xla.Xla.ResetDeviceResponse)) {
        return super.equals(obj);
      }
      xla.Xla.ResetDeviceResponse other = (xla.Xla.ResetDeviceResponse) obj;

      boolean result = true;
      return result;
    }

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

    public static xla.Xla.ResetDeviceResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.ResetDeviceResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.ResetDeviceResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.ResetDeviceResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.ResetDeviceResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.ResetDeviceResponse 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 xla.Xla.ResetDeviceResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static xla.Xla.ResetDeviceResponse 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 xla.Xla.ResetDeviceResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.ResetDeviceResponse 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(xla.Xla.ResetDeviceResponse 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 xla.ResetDeviceResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:xla.ResetDeviceResponse)
        xla.Xla.ResetDeviceResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return xla.Xla.internal_static_xla_ResetDeviceResponse_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return xla.Xla.internal_static_xla_ResetDeviceResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                xla.Xla.ResetDeviceResponse.class, xla.Xla.ResetDeviceResponse.Builder.class);
      }

      // Construct using xla.Xla.ResetDeviceResponse.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();
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return xla.Xla.internal_static_xla_ResetDeviceResponse_descriptor;
      }

      public xla.Xla.ResetDeviceResponse getDefaultInstanceForType() {
        return xla.Xla.ResetDeviceResponse.getDefaultInstance();
      }

      public xla.Xla.ResetDeviceResponse build() {
        xla.Xla.ResetDeviceResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public xla.Xla.ResetDeviceResponse buildPartial() {
        xla.Xla.ResetDeviceResponse result = new xla.Xla.ResetDeviceResponse(this);
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof xla.Xla.ResetDeviceResponse) {
          return mergeFrom((xla.Xla.ResetDeviceResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(xla.Xla.ResetDeviceResponse other) {
        if (other == xla.Xla.ResetDeviceResponse.getDefaultInstance()) return this;
        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 {
        xla.Xla.ResetDeviceResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (xla.Xla.ResetDeviceResponse) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

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


      // @@protoc_insertion_point(builder_scope:xla.ResetDeviceResponse)
    }

    // @@protoc_insertion_point(class_scope:xla.ResetDeviceResponse)
    private static final xla.Xla.ResetDeviceResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new xla.Xla.ResetDeviceResponse();
    }

    public static xla.Xla.ResetDeviceResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public xla.Xla.ResetDeviceResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ComputationStatsRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:xla.ComputationStatsRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.xla.ComputationHandle computation = 1;</code>
     */
    boolean hasComputation();
    /**
     * <code>.xla.ComputationHandle computation = 1;</code>
     */
    xla.XlaData.ComputationHandle getComputation();
    /**
     * <code>.xla.ComputationHandle computation = 1;</code>
     */
    xla.XlaData.ComputationHandleOrBuilder getComputationOrBuilder();

    /**
     * <code>.xla.DebugOptions debug_options = 2;</code>
     */
    boolean hasDebugOptions();
    /**
     * <code>.xla.DebugOptions debug_options = 2;</code>
     */
    xla.Xla.DebugOptions getDebugOptions();
    /**
     * <code>.xla.DebugOptions debug_options = 2;</code>
     */
    xla.Xla.DebugOptionsOrBuilder getDebugOptionsOrBuilder();
  }
  /**
   * Protobuf type {@code xla.ComputationStatsRequest}
   */
  public  static final class ComputationStatsRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:xla.ComputationStatsRequest)
      ComputationStatsRequestOrBuilder {
    // Use ComputationStatsRequest.newBuilder() to construct.
    private ComputationStatsRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ComputationStatsRequest() {
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private ComputationStatsRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              xla.XlaData.ComputationHandle.Builder subBuilder = null;
              if (computation_ != null) {
                subBuilder = computation_.toBuilder();
              }
              computation_ = input.readMessage(xla.XlaData.ComputationHandle.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(computation_);
                computation_ = subBuilder.buildPartial();
              }

              break;
            }
            case 18: {
              xla.Xla.DebugOptions.Builder subBuilder = null;
              if (debugOptions_ != null) {
                subBuilder = debugOptions_.toBuilder();
              }
              debugOptions_ = input.readMessage(xla.Xla.DebugOptions.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(debugOptions_);
                debugOptions_ = 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 {
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return xla.Xla.internal_static_xla_ComputationStatsRequest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return xla.Xla.internal_static_xla_ComputationStatsRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              xla.Xla.ComputationStatsRequest.class, xla.Xla.ComputationStatsRequest.Builder.class);
    }

    public static final int COMPUTATION_FIELD_NUMBER = 1;
    private xla.XlaData.ComputationHandle computation_;
    /**
     * <code>.xla.ComputationHandle computation = 1;</code>
     */
    public boolean hasComputation() {
      return computation_ != null;
    }
    /**
     * <code>.xla.ComputationHandle computation = 1;</code>
     */
    public xla.XlaData.ComputationHandle getComputation() {
      return computation_ == null ? xla.XlaData.ComputationHandle.getDefaultInstance() : computation_;
    }
    /**
     * <code>.xla.ComputationHandle computation = 1;</code>
     */
    public xla.XlaData.ComputationHandleOrBuilder getComputationOrBuilder() {
      return getComputation();
    }

    public static final int DEBUG_OPTIONS_FIELD_NUMBER = 2;
    private xla.Xla.DebugOptions debugOptions_;
    /**
     * <code>.xla.DebugOptions debug_options = 2;</code>
     */
    public boolean hasDebugOptions() {
      return debugOptions_ != null;
    }
    /**
     * <code>.xla.DebugOptions debug_options = 2;</code>
     */
    public xla.Xla.DebugOptions getDebugOptions() {
      return debugOptions_ == null ? xla.Xla.DebugOptions.getDefaultInstance() : debugOptions_;
    }
    /**
     * <code>.xla.DebugOptions debug_options = 2;</code>
     */
    public xla.Xla.DebugOptionsOrBuilder getDebugOptionsOrBuilder() {
      return getDebugOptions();
    }

    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 (computation_ != null) {
        output.writeMessage(1, getComputation());
      }
      if (debugOptions_ != null) {
        output.writeMessage(2, getDebugOptions());
      }
    }

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

      size = 0;
      if (computation_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getComputation());
      }
      if (debugOptions_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getDebugOptions());
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof xla.Xla.ComputationStatsRequest)) {
        return super.equals(obj);
      }
      xla.Xla.ComputationStatsRequest other = (xla.Xla.ComputationStatsRequest) obj;

      boolean result = true;
      result = result && (hasComputation() == other.hasComputation());
      if (hasComputation()) {
        result = result && getComputation()
            .equals(other.getComputation());
      }
      result = result && (hasDebugOptions() == other.hasDebugOptions());
      if (hasDebugOptions()) {
        result = result && getDebugOptions()
            .equals(other.getDebugOptions());
      }
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasComputation()) {
        hash = (37 * hash) + COMPUTATION_FIELD_NUMBER;
        hash = (53 * hash) + getComputation().hashCode();
      }
      if (hasDebugOptions()) {
        hash = (37 * hash) + DEBUG_OPTIONS_FIELD_NUMBER;
        hash = (53 * hash) + getDebugOptions().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static xla.Xla.ComputationStatsRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.ComputationStatsRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.ComputationStatsRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.ComputationStatsRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.ComputationStatsRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.ComputationStatsRequest 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 xla.Xla.ComputationStatsRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static xla.Xla.ComputationStatsRequest 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 xla.Xla.ComputationStatsRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.ComputationStatsRequest 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(xla.Xla.ComputationStatsRequest 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 xla.ComputationStatsRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:xla.ComputationStatsRequest)
        xla.Xla.ComputationStatsRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return xla.Xla.internal_static_xla_ComputationStatsRequest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return xla.Xla.internal_static_xla_ComputationStatsRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                xla.Xla.ComputationStatsRequest.class, xla.Xla.ComputationStatsRequest.Builder.class);
      }

      // Construct using xla.Xla.ComputationStatsRequest.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 (computationBuilder_ == null) {
          computation_ = null;
        } else {
          computation_ = null;
          computationBuilder_ = null;
        }
        if (debugOptionsBuilder_ == null) {
          debugOptions_ = null;
        } else {
          debugOptions_ = null;
          debugOptionsBuilder_ = null;
        }
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return xla.Xla.internal_static_xla_ComputationStatsRequest_descriptor;
      }

      public xla.Xla.ComputationStatsRequest getDefaultInstanceForType() {
        return xla.Xla.ComputationStatsRequest.getDefaultInstance();
      }

      public xla.Xla.ComputationStatsRequest build() {
        xla.Xla.ComputationStatsRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public xla.Xla.ComputationStatsRequest buildPartial() {
        xla.Xla.ComputationStatsRequest result = new xla.Xla.ComputationStatsRequest(this);
        if (computationBuilder_ == null) {
          result.computation_ = computation_;
        } else {
          result.computation_ = computationBuilder_.build();
        }
        if (debugOptionsBuilder_ == null) {
          result.debugOptions_ = debugOptions_;
        } else {
          result.debugOptions_ = debugOptionsBuilder_.build();
        }
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof xla.Xla.ComputationStatsRequest) {
          return mergeFrom((xla.Xla.ComputationStatsRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(xla.Xla.ComputationStatsRequest other) {
        if (other == xla.Xla.ComputationStatsRequest.getDefaultInstance()) return this;
        if (other.hasComputation()) {
          mergeComputation(other.getComputation());
        }
        if (other.hasDebugOptions()) {
          mergeDebugOptions(other.getDebugOptions());
        }
        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 {
        xla.Xla.ComputationStatsRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (xla.Xla.ComputationStatsRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private xla.XlaData.ComputationHandle computation_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.XlaData.ComputationHandle, xla.XlaData.ComputationHandle.Builder, xla.XlaData.ComputationHandleOrBuilder> computationBuilder_;
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      public boolean hasComputation() {
        return computationBuilder_ != null || computation_ != null;
      }
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      public xla.XlaData.ComputationHandle getComputation() {
        if (computationBuilder_ == null) {
          return computation_ == null ? xla.XlaData.ComputationHandle.getDefaultInstance() : computation_;
        } else {
          return computationBuilder_.getMessage();
        }
      }
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      public Builder setComputation(xla.XlaData.ComputationHandle value) {
        if (computationBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          computation_ = value;
          onChanged();
        } else {
          computationBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      public Builder setComputation(
          xla.XlaData.ComputationHandle.Builder builderForValue) {
        if (computationBuilder_ == null) {
          computation_ = builderForValue.build();
          onChanged();
        } else {
          computationBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      public Builder mergeComputation(xla.XlaData.ComputationHandle value) {
        if (computationBuilder_ == null) {
          if (computation_ != null) {
            computation_ =
              xla.XlaData.ComputationHandle.newBuilder(computation_).mergeFrom(value).buildPartial();
          } else {
            computation_ = value;
          }
          onChanged();
        } else {
          computationBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      public Builder clearComputation() {
        if (computationBuilder_ == null) {
          computation_ = null;
          onChanged();
        } else {
          computation_ = null;
          computationBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      public xla.XlaData.ComputationHandle.Builder getComputationBuilder() {
        
        onChanged();
        return getComputationFieldBuilder().getBuilder();
      }
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      public xla.XlaData.ComputationHandleOrBuilder getComputationOrBuilder() {
        if (computationBuilder_ != null) {
          return computationBuilder_.getMessageOrBuilder();
        } else {
          return computation_ == null ?
              xla.XlaData.ComputationHandle.getDefaultInstance() : computation_;
        }
      }
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.XlaData.ComputationHandle, xla.XlaData.ComputationHandle.Builder, xla.XlaData.ComputationHandleOrBuilder> 
          getComputationFieldBuilder() {
        if (computationBuilder_ == null) {
          computationBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              xla.XlaData.ComputationHandle, xla.XlaData.ComputationHandle.Builder, xla.XlaData.ComputationHandleOrBuilder>(
                  getComputation(),
                  getParentForChildren(),
                  isClean());
          computation_ = null;
        }
        return computationBuilder_;
      }

      private xla.Xla.DebugOptions debugOptions_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.Xla.DebugOptions, xla.Xla.DebugOptions.Builder, xla.Xla.DebugOptionsOrBuilder> debugOptionsBuilder_;
      /**
       * <code>.xla.DebugOptions debug_options = 2;</code>
       */
      public boolean hasDebugOptions() {
        return debugOptionsBuilder_ != null || debugOptions_ != null;
      }
      /**
       * <code>.xla.DebugOptions debug_options = 2;</code>
       */
      public xla.Xla.DebugOptions getDebugOptions() {
        if (debugOptionsBuilder_ == null) {
          return debugOptions_ == null ? xla.Xla.DebugOptions.getDefaultInstance() : debugOptions_;
        } else {
          return debugOptionsBuilder_.getMessage();
        }
      }
      /**
       * <code>.xla.DebugOptions debug_options = 2;</code>
       */
      public Builder setDebugOptions(xla.Xla.DebugOptions value) {
        if (debugOptionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          debugOptions_ = value;
          onChanged();
        } else {
          debugOptionsBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.xla.DebugOptions debug_options = 2;</code>
       */
      public Builder setDebugOptions(
          xla.Xla.DebugOptions.Builder builderForValue) {
        if (debugOptionsBuilder_ == null) {
          debugOptions_ = builderForValue.build();
          onChanged();
        } else {
          debugOptionsBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.xla.DebugOptions debug_options = 2;</code>
       */
      public Builder mergeDebugOptions(xla.Xla.DebugOptions value) {
        if (debugOptionsBuilder_ == null) {
          if (debugOptions_ != null) {
            debugOptions_ =
              xla.Xla.DebugOptions.newBuilder(debugOptions_).mergeFrom(value).buildPartial();
          } else {
            debugOptions_ = value;
          }
          onChanged();
        } else {
          debugOptionsBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.xla.DebugOptions debug_options = 2;</code>
       */
      public Builder clearDebugOptions() {
        if (debugOptionsBuilder_ == null) {
          debugOptions_ = null;
          onChanged();
        } else {
          debugOptions_ = null;
          debugOptionsBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.xla.DebugOptions debug_options = 2;</code>
       */
      public xla.Xla.DebugOptions.Builder getDebugOptionsBuilder() {
        
        onChanged();
        return getDebugOptionsFieldBuilder().getBuilder();
      }
      /**
       * <code>.xla.DebugOptions debug_options = 2;</code>
       */
      public xla.Xla.DebugOptionsOrBuilder getDebugOptionsOrBuilder() {
        if (debugOptionsBuilder_ != null) {
          return debugOptionsBuilder_.getMessageOrBuilder();
        } else {
          return debugOptions_ == null ?
              xla.Xla.DebugOptions.getDefaultInstance() : debugOptions_;
        }
      }
      /**
       * <code>.xla.DebugOptions debug_options = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.Xla.DebugOptions, xla.Xla.DebugOptions.Builder, xla.Xla.DebugOptionsOrBuilder> 
          getDebugOptionsFieldBuilder() {
        if (debugOptionsBuilder_ == null) {
          debugOptionsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              xla.Xla.DebugOptions, xla.Xla.DebugOptions.Builder, xla.Xla.DebugOptionsOrBuilder>(
                  getDebugOptions(),
                  getParentForChildren(),
                  isClean());
          debugOptions_ = null;
        }
        return debugOptionsBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

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


      // @@protoc_insertion_point(builder_scope:xla.ComputationStatsRequest)
    }

    // @@protoc_insertion_point(class_scope:xla.ComputationStatsRequest)
    private static final xla.Xla.ComputationStatsRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new xla.Xla.ComputationStatsRequest();
    }

    public static xla.Xla.ComputationStatsRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public xla.Xla.ComputationStatsRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ComputationGraphStatsRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:xla.ComputationGraphStatsRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.xla.HloModuleProto computation = 1;</code>
     */
    boolean hasComputation();
    /**
     * <code>.xla.HloModuleProto computation = 1;</code>
     */
    xla.Hlo.HloModuleProto getComputation();
    /**
     * <code>.xla.HloModuleProto computation = 1;</code>
     */
    xla.Hlo.HloModuleProtoOrBuilder getComputationOrBuilder();

    /**
     * <code>.xla.DebugOptions debug_options = 2;</code>
     */
    boolean hasDebugOptions();
    /**
     * <code>.xla.DebugOptions debug_options = 2;</code>
     */
    xla.Xla.DebugOptions getDebugOptions();
    /**
     * <code>.xla.DebugOptions debug_options = 2;</code>
     */
    xla.Xla.DebugOptionsOrBuilder getDebugOptionsOrBuilder();
  }
  /**
   * Protobuf type {@code xla.ComputationGraphStatsRequest}
   */
  public  static final class ComputationGraphStatsRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:xla.ComputationGraphStatsRequest)
      ComputationGraphStatsRequestOrBuilder {
    // Use ComputationGraphStatsRequest.newBuilder() to construct.
    private ComputationGraphStatsRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ComputationGraphStatsRequest() {
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private ComputationGraphStatsRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              xla.Hlo.HloModuleProto.Builder subBuilder = null;
              if (computation_ != null) {
                subBuilder = computation_.toBuilder();
              }
              computation_ = input.readMessage(xla.Hlo.HloModuleProto.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(computation_);
                computation_ = subBuilder.buildPartial();
              }

              break;
            }
            case 18: {
              xla.Xla.DebugOptions.Builder subBuilder = null;
              if (debugOptions_ != null) {
                subBuilder = debugOptions_.toBuilder();
              }
              debugOptions_ = input.readMessage(xla.Xla.DebugOptions.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(debugOptions_);
                debugOptions_ = 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 {
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return xla.Xla.internal_static_xla_ComputationGraphStatsRequest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return xla.Xla.internal_static_xla_ComputationGraphStatsRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              xla.Xla.ComputationGraphStatsRequest.class, xla.Xla.ComputationGraphStatsRequest.Builder.class);
    }

    public static final int COMPUTATION_FIELD_NUMBER = 1;
    private xla.Hlo.HloModuleProto computation_;
    /**
     * <code>.xla.HloModuleProto computation = 1;</code>
     */
    public boolean hasComputation() {
      return computation_ != null;
    }
    /**
     * <code>.xla.HloModuleProto computation = 1;</code>
     */
    public xla.Hlo.HloModuleProto getComputation() {
      return computation_ == null ? xla.Hlo.HloModuleProto.getDefaultInstance() : computation_;
    }
    /**
     * <code>.xla.HloModuleProto computation = 1;</code>
     */
    public xla.Hlo.HloModuleProtoOrBuilder getComputationOrBuilder() {
      return getComputation();
    }

    public static final int DEBUG_OPTIONS_FIELD_NUMBER = 2;
    private xla.Xla.DebugOptions debugOptions_;
    /**
     * <code>.xla.DebugOptions debug_options = 2;</code>
     */
    public boolean hasDebugOptions() {
      return debugOptions_ != null;
    }
    /**
     * <code>.xla.DebugOptions debug_options = 2;</code>
     */
    public xla.Xla.DebugOptions getDebugOptions() {
      return debugOptions_ == null ? xla.Xla.DebugOptions.getDefaultInstance() : debugOptions_;
    }
    /**
     * <code>.xla.DebugOptions debug_options = 2;</code>
     */
    public xla.Xla.DebugOptionsOrBuilder getDebugOptionsOrBuilder() {
      return getDebugOptions();
    }

    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 (computation_ != null) {
        output.writeMessage(1, getComputation());
      }
      if (debugOptions_ != null) {
        output.writeMessage(2, getDebugOptions());
      }
    }

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

      size = 0;
      if (computation_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getComputation());
      }
      if (debugOptions_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getDebugOptions());
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof xla.Xla.ComputationGraphStatsRequest)) {
        return super.equals(obj);
      }
      xla.Xla.ComputationGraphStatsRequest other = (xla.Xla.ComputationGraphStatsRequest) obj;

      boolean result = true;
      result = result && (hasComputation() == other.hasComputation());
      if (hasComputation()) {
        result = result && getComputation()
            .equals(other.getComputation());
      }
      result = result && (hasDebugOptions() == other.hasDebugOptions());
      if (hasDebugOptions()) {
        result = result && getDebugOptions()
            .equals(other.getDebugOptions());
      }
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasComputation()) {
        hash = (37 * hash) + COMPUTATION_FIELD_NUMBER;
        hash = (53 * hash) + getComputation().hashCode();
      }
      if (hasDebugOptions()) {
        hash = (37 * hash) + DEBUG_OPTIONS_FIELD_NUMBER;
        hash = (53 * hash) + getDebugOptions().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static xla.Xla.ComputationGraphStatsRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.ComputationGraphStatsRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.ComputationGraphStatsRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.ComputationGraphStatsRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.ComputationGraphStatsRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.ComputationGraphStatsRequest 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 xla.Xla.ComputationGraphStatsRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static xla.Xla.ComputationGraphStatsRequest 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 xla.Xla.ComputationGraphStatsRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.ComputationGraphStatsRequest 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(xla.Xla.ComputationGraphStatsRequest 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 xla.ComputationGraphStatsRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:xla.ComputationGraphStatsRequest)
        xla.Xla.ComputationGraphStatsRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return xla.Xla.internal_static_xla_ComputationGraphStatsRequest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return xla.Xla.internal_static_xla_ComputationGraphStatsRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                xla.Xla.ComputationGraphStatsRequest.class, xla.Xla.ComputationGraphStatsRequest.Builder.class);
      }

      // Construct using xla.Xla.ComputationGraphStatsRequest.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 (computationBuilder_ == null) {
          computation_ = null;
        } else {
          computation_ = null;
          computationBuilder_ = null;
        }
        if (debugOptionsBuilder_ == null) {
          debugOptions_ = null;
        } else {
          debugOptions_ = null;
          debugOptionsBuilder_ = null;
        }
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return xla.Xla.internal_static_xla_ComputationGraphStatsRequest_descriptor;
      }

      public xla.Xla.ComputationGraphStatsRequest getDefaultInstanceForType() {
        return xla.Xla.ComputationGraphStatsRequest.getDefaultInstance();
      }

      public xla.Xla.ComputationGraphStatsRequest build() {
        xla.Xla.ComputationGraphStatsRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public xla.Xla.ComputationGraphStatsRequest buildPartial() {
        xla.Xla.ComputationGraphStatsRequest result = new xla.Xla.ComputationGraphStatsRequest(this);
        if (computationBuilder_ == null) {
          result.computation_ = computation_;
        } else {
          result.computation_ = computationBuilder_.build();
        }
        if (debugOptionsBuilder_ == null) {
          result.debugOptions_ = debugOptions_;
        } else {
          result.debugOptions_ = debugOptionsBuilder_.build();
        }
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof xla.Xla.ComputationGraphStatsRequest) {
          return mergeFrom((xla.Xla.ComputationGraphStatsRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(xla.Xla.ComputationGraphStatsRequest other) {
        if (other == xla.Xla.ComputationGraphStatsRequest.getDefaultInstance()) return this;
        if (other.hasComputation()) {
          mergeComputation(other.getComputation());
        }
        if (other.hasDebugOptions()) {
          mergeDebugOptions(other.getDebugOptions());
        }
        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 {
        xla.Xla.ComputationGraphStatsRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (xla.Xla.ComputationGraphStatsRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private xla.Hlo.HloModuleProto computation_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.Hlo.HloModuleProto, xla.Hlo.HloModuleProto.Builder, xla.Hlo.HloModuleProtoOrBuilder> computationBuilder_;
      /**
       * <code>.xla.HloModuleProto computation = 1;</code>
       */
      public boolean hasComputation() {
        return computationBuilder_ != null || computation_ != null;
      }
      /**
       * <code>.xla.HloModuleProto computation = 1;</code>
       */
      public xla.Hlo.HloModuleProto getComputation() {
        if (computationBuilder_ == null) {
          return computation_ == null ? xla.Hlo.HloModuleProto.getDefaultInstance() : computation_;
        } else {
          return computationBuilder_.getMessage();
        }
      }
      /**
       * <code>.xla.HloModuleProto computation = 1;</code>
       */
      public Builder setComputation(xla.Hlo.HloModuleProto value) {
        if (computationBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          computation_ = value;
          onChanged();
        } else {
          computationBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.xla.HloModuleProto computation = 1;</code>
       */
      public Builder setComputation(
          xla.Hlo.HloModuleProto.Builder builderForValue) {
        if (computationBuilder_ == null) {
          computation_ = builderForValue.build();
          onChanged();
        } else {
          computationBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.xla.HloModuleProto computation = 1;</code>
       */
      public Builder mergeComputation(xla.Hlo.HloModuleProto value) {
        if (computationBuilder_ == null) {
          if (computation_ != null) {
            computation_ =
              xla.Hlo.HloModuleProto.newBuilder(computation_).mergeFrom(value).buildPartial();
          } else {
            computation_ = value;
          }
          onChanged();
        } else {
          computationBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.xla.HloModuleProto computation = 1;</code>
       */
      public Builder clearComputation() {
        if (computationBuilder_ == null) {
          computation_ = null;
          onChanged();
        } else {
          computation_ = null;
          computationBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.xla.HloModuleProto computation = 1;</code>
       */
      public xla.Hlo.HloModuleProto.Builder getComputationBuilder() {
        
        onChanged();
        return getComputationFieldBuilder().getBuilder();
      }
      /**
       * <code>.xla.HloModuleProto computation = 1;</code>
       */
      public xla.Hlo.HloModuleProtoOrBuilder getComputationOrBuilder() {
        if (computationBuilder_ != null) {
          return computationBuilder_.getMessageOrBuilder();
        } else {
          return computation_ == null ?
              xla.Hlo.HloModuleProto.getDefaultInstance() : computation_;
        }
      }
      /**
       * <code>.xla.HloModuleProto computation = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.Hlo.HloModuleProto, xla.Hlo.HloModuleProto.Builder, xla.Hlo.HloModuleProtoOrBuilder> 
          getComputationFieldBuilder() {
        if (computationBuilder_ == null) {
          computationBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              xla.Hlo.HloModuleProto, xla.Hlo.HloModuleProto.Builder, xla.Hlo.HloModuleProtoOrBuilder>(
                  getComputation(),
                  getParentForChildren(),
                  isClean());
          computation_ = null;
        }
        return computationBuilder_;
      }

      private xla.Xla.DebugOptions debugOptions_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.Xla.DebugOptions, xla.Xla.DebugOptions.Builder, xla.Xla.DebugOptionsOrBuilder> debugOptionsBuilder_;
      /**
       * <code>.xla.DebugOptions debug_options = 2;</code>
       */
      public boolean hasDebugOptions() {
        return debugOptionsBuilder_ != null || debugOptions_ != null;
      }
      /**
       * <code>.xla.DebugOptions debug_options = 2;</code>
       */
      public xla.Xla.DebugOptions getDebugOptions() {
        if (debugOptionsBuilder_ == null) {
          return debugOptions_ == null ? xla.Xla.DebugOptions.getDefaultInstance() : debugOptions_;
        } else {
          return debugOptionsBuilder_.getMessage();
        }
      }
      /**
       * <code>.xla.DebugOptions debug_options = 2;</code>
       */
      public Builder setDebugOptions(xla.Xla.DebugOptions value) {
        if (debugOptionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          debugOptions_ = value;
          onChanged();
        } else {
          debugOptionsBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.xla.DebugOptions debug_options = 2;</code>
       */
      public Builder setDebugOptions(
          xla.Xla.DebugOptions.Builder builderForValue) {
        if (debugOptionsBuilder_ == null) {
          debugOptions_ = builderForValue.build();
          onChanged();
        } else {
          debugOptionsBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.xla.DebugOptions debug_options = 2;</code>
       */
      public Builder mergeDebugOptions(xla.Xla.DebugOptions value) {
        if (debugOptionsBuilder_ == null) {
          if (debugOptions_ != null) {
            debugOptions_ =
              xla.Xla.DebugOptions.newBuilder(debugOptions_).mergeFrom(value).buildPartial();
          } else {
            debugOptions_ = value;
          }
          onChanged();
        } else {
          debugOptionsBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.xla.DebugOptions debug_options = 2;</code>
       */
      public Builder clearDebugOptions() {
        if (debugOptionsBuilder_ == null) {
          debugOptions_ = null;
          onChanged();
        } else {
          debugOptions_ = null;
          debugOptionsBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.xla.DebugOptions debug_options = 2;</code>
       */
      public xla.Xla.DebugOptions.Builder getDebugOptionsBuilder() {
        
        onChanged();
        return getDebugOptionsFieldBuilder().getBuilder();
      }
      /**
       * <code>.xla.DebugOptions debug_options = 2;</code>
       */
      public xla.Xla.DebugOptionsOrBuilder getDebugOptionsOrBuilder() {
        if (debugOptionsBuilder_ != null) {
          return debugOptionsBuilder_.getMessageOrBuilder();
        } else {
          return debugOptions_ == null ?
              xla.Xla.DebugOptions.getDefaultInstance() : debugOptions_;
        }
      }
      /**
       * <code>.xla.DebugOptions debug_options = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.Xla.DebugOptions, xla.Xla.DebugOptions.Builder, xla.Xla.DebugOptionsOrBuilder> 
          getDebugOptionsFieldBuilder() {
        if (debugOptionsBuilder_ == null) {
          debugOptionsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              xla.Xla.DebugOptions, xla.Xla.DebugOptions.Builder, xla.Xla.DebugOptionsOrBuilder>(
                  getDebugOptions(),
                  getParentForChildren(),
                  isClean());
          debugOptions_ = null;
        }
        return debugOptionsBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

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


      // @@protoc_insertion_point(builder_scope:xla.ComputationGraphStatsRequest)
    }

    // @@protoc_insertion_point(class_scope:xla.ComputationGraphStatsRequest)
    private static final xla.Xla.ComputationGraphStatsRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new xla.Xla.ComputationGraphStatsRequest();
    }

    public static xla.Xla.ComputationGraphStatsRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public xla.Xla.ComputationGraphStatsRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ComputationStatsResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:xla.ComputationStatsResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.xla.ComputationStats stats = 1;</code>
     */
    boolean hasStats();
    /**
     * <code>.xla.ComputationStats stats = 1;</code>
     */
    xla.XlaData.ComputationStats getStats();
    /**
     * <code>.xla.ComputationStats stats = 1;</code>
     */
    xla.XlaData.ComputationStatsOrBuilder getStatsOrBuilder();
  }
  /**
   * Protobuf type {@code xla.ComputationStatsResponse}
   */
  public  static final class ComputationStatsResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:xla.ComputationStatsResponse)
      ComputationStatsResponseOrBuilder {
    // Use ComputationStatsResponse.newBuilder() to construct.
    private ComputationStatsResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ComputationStatsResponse() {
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private ComputationStatsResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              xla.XlaData.ComputationStats.Builder subBuilder = null;
              if (stats_ != null) {
                subBuilder = stats_.toBuilder();
              }
              stats_ = input.readMessage(xla.XlaData.ComputationStats.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(stats_);
                stats_ = 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 {
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return xla.Xla.internal_static_xla_ComputationStatsResponse_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return xla.Xla.internal_static_xla_ComputationStatsResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              xla.Xla.ComputationStatsResponse.class, xla.Xla.ComputationStatsResponse.Builder.class);
    }

    public static final int STATS_FIELD_NUMBER = 1;
    private xla.XlaData.ComputationStats stats_;
    /**
     * <code>.xla.ComputationStats stats = 1;</code>
     */
    public boolean hasStats() {
      return stats_ != null;
    }
    /**
     * <code>.xla.ComputationStats stats = 1;</code>
     */
    public xla.XlaData.ComputationStats getStats() {
      return stats_ == null ? xla.XlaData.ComputationStats.getDefaultInstance() : stats_;
    }
    /**
     * <code>.xla.ComputationStats stats = 1;</code>
     */
    public xla.XlaData.ComputationStatsOrBuilder getStatsOrBuilder() {
      return getStats();
    }

    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 (stats_ != null) {
        output.writeMessage(1, getStats());
      }
    }

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

      size = 0;
      if (stats_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getStats());
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof xla.Xla.ComputationStatsResponse)) {
        return super.equals(obj);
      }
      xla.Xla.ComputationStatsResponse other = (xla.Xla.ComputationStatsResponse) obj;

      boolean result = true;
      result = result && (hasStats() == other.hasStats());
      if (hasStats()) {
        result = result && getStats()
            .equals(other.getStats());
      }
      return result;
    }

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

    public static xla.Xla.ComputationStatsResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.ComputationStatsResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.ComputationStatsResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.ComputationStatsResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.ComputationStatsResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.ComputationStatsResponse 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 xla.Xla.ComputationStatsResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static xla.Xla.ComputationStatsResponse 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 xla.Xla.ComputationStatsResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.ComputationStatsResponse 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(xla.Xla.ComputationStatsResponse 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 xla.ComputationStatsResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:xla.ComputationStatsResponse)
        xla.Xla.ComputationStatsResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return xla.Xla.internal_static_xla_ComputationStatsResponse_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return xla.Xla.internal_static_xla_ComputationStatsResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                xla.Xla.ComputationStatsResponse.class, xla.Xla.ComputationStatsResponse.Builder.class);
      }

      // Construct using xla.Xla.ComputationStatsResponse.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 (statsBuilder_ == null) {
          stats_ = null;
        } else {
          stats_ = null;
          statsBuilder_ = null;
        }
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return xla.Xla.internal_static_xla_ComputationStatsResponse_descriptor;
      }

      public xla.Xla.ComputationStatsResponse getDefaultInstanceForType() {
        return xla.Xla.ComputationStatsResponse.getDefaultInstance();
      }

      public xla.Xla.ComputationStatsResponse build() {
        xla.Xla.ComputationStatsResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public xla.Xla.ComputationStatsResponse buildPartial() {
        xla.Xla.ComputationStatsResponse result = new xla.Xla.ComputationStatsResponse(this);
        if (statsBuilder_ == null) {
          result.stats_ = stats_;
        } else {
          result.stats_ = statsBuilder_.build();
        }
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof xla.Xla.ComputationStatsResponse) {
          return mergeFrom((xla.Xla.ComputationStatsResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(xla.Xla.ComputationStatsResponse other) {
        if (other == xla.Xla.ComputationStatsResponse.getDefaultInstance()) return this;
        if (other.hasStats()) {
          mergeStats(other.getStats());
        }
        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 {
        xla.Xla.ComputationStatsResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (xla.Xla.ComputationStatsResponse) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private xla.XlaData.ComputationStats stats_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.XlaData.ComputationStats, xla.XlaData.ComputationStats.Builder, xla.XlaData.ComputationStatsOrBuilder> statsBuilder_;
      /**
       * <code>.xla.ComputationStats stats = 1;</code>
       */
      public boolean hasStats() {
        return statsBuilder_ != null || stats_ != null;
      }
      /**
       * <code>.xla.ComputationStats stats = 1;</code>
       */
      public xla.XlaData.ComputationStats getStats() {
        if (statsBuilder_ == null) {
          return stats_ == null ? xla.XlaData.ComputationStats.getDefaultInstance() : stats_;
        } else {
          return statsBuilder_.getMessage();
        }
      }
      /**
       * <code>.xla.ComputationStats stats = 1;</code>
       */
      public Builder setStats(xla.XlaData.ComputationStats value) {
        if (statsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          stats_ = value;
          onChanged();
        } else {
          statsBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.xla.ComputationStats stats = 1;</code>
       */
      public Builder setStats(
          xla.XlaData.ComputationStats.Builder builderForValue) {
        if (statsBuilder_ == null) {
          stats_ = builderForValue.build();
          onChanged();
        } else {
          statsBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.xla.ComputationStats stats = 1;</code>
       */
      public Builder mergeStats(xla.XlaData.ComputationStats value) {
        if (statsBuilder_ == null) {
          if (stats_ != null) {
            stats_ =
              xla.XlaData.ComputationStats.newBuilder(stats_).mergeFrom(value).buildPartial();
          } else {
            stats_ = value;
          }
          onChanged();
        } else {
          statsBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.xla.ComputationStats stats = 1;</code>
       */
      public Builder clearStats() {
        if (statsBuilder_ == null) {
          stats_ = null;
          onChanged();
        } else {
          stats_ = null;
          statsBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.xla.ComputationStats stats = 1;</code>
       */
      public xla.XlaData.ComputationStats.Builder getStatsBuilder() {
        
        onChanged();
        return getStatsFieldBuilder().getBuilder();
      }
      /**
       * <code>.xla.ComputationStats stats = 1;</code>
       */
      public xla.XlaData.ComputationStatsOrBuilder getStatsOrBuilder() {
        if (statsBuilder_ != null) {
          return statsBuilder_.getMessageOrBuilder();
        } else {
          return stats_ == null ?
              xla.XlaData.ComputationStats.getDefaultInstance() : stats_;
        }
      }
      /**
       * <code>.xla.ComputationStats stats = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.XlaData.ComputationStats, xla.XlaData.ComputationStats.Builder, xla.XlaData.ComputationStatsOrBuilder> 
          getStatsFieldBuilder() {
        if (statsBuilder_ == null) {
          statsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              xla.XlaData.ComputationStats, xla.XlaData.ComputationStats.Builder, xla.XlaData.ComputationStatsOrBuilder>(
                  getStats(),
                  getParentForChildren(),
                  isClean());
          stats_ = null;
        }
        return statsBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

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


      // @@protoc_insertion_point(builder_scope:xla.ComputationStatsResponse)
    }

    // @@protoc_insertion_point(class_scope:xla.ComputationStatsResponse)
    private static final xla.Xla.ComputationStatsResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new xla.Xla.ComputationStatsResponse();
    }

    public static xla.Xla.ComputationStatsResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public xla.Xla.ComputationStatsResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ComputationRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:xla.ComputationRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>string name = 1;</code>
     */
    java.lang.String getName();
    /**
     * <code>string name = 1;</code>
     */
    com.google.protobuf.ByteString
        getNameBytes();
  }
  /**
   * Protobuf type {@code xla.ComputationRequest}
   */
  public  static final class ComputationRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:xla.ComputationRequest)
      ComputationRequestOrBuilder {
    // Use ComputationRequest.newBuilder() to construct.
    private ComputationRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ComputationRequest() {
      name_ = "";
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private ComputationRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

              name_ = 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 {
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return xla.Xla.internal_static_xla_ComputationRequest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return xla.Xla.internal_static_xla_ComputationRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              xla.Xla.ComputationRequest.class, xla.Xla.ComputationRequest.Builder.class);
    }

    public static final int NAME_FIELD_NUMBER = 1;
    private volatile java.lang.Object name_;
    /**
     * <code>string name = 1;</code>
     */
    public java.lang.String getName() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        name_ = s;
        return s;
      }
    }
    /**
     * <code>string name = 1;</code>
     */
    public com.google.protobuf.ByteString
        getNameBytes() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    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 (!getNameBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
      }
    }

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

      size = 0;
      if (!getNameBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof xla.Xla.ComputationRequest)) {
        return super.equals(obj);
      }
      xla.Xla.ComputationRequest other = (xla.Xla.ComputationRequest) obj;

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

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

    public static xla.Xla.ComputationRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.ComputationRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.ComputationRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.ComputationRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.ComputationRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.ComputationRequest 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 xla.Xla.ComputationRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static xla.Xla.ComputationRequest 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 xla.Xla.ComputationRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.ComputationRequest 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(xla.Xla.ComputationRequest 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 xla.ComputationRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:xla.ComputationRequest)
        xla.Xla.ComputationRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return xla.Xla.internal_static_xla_ComputationRequest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return xla.Xla.internal_static_xla_ComputationRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                xla.Xla.ComputationRequest.class, xla.Xla.ComputationRequest.Builder.class);
      }

      // Construct using xla.Xla.ComputationRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return xla.Xla.internal_static_xla_ComputationRequest_descriptor;
      }

      public xla.Xla.ComputationRequest getDefaultInstanceForType() {
        return xla.Xla.ComputationRequest.getDefaultInstance();
      }

      public xla.Xla.ComputationRequest build() {
        xla.Xla.ComputationRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public xla.Xla.ComputationRequest buildPartial() {
        xla.Xla.ComputationRequest result = new xla.Xla.ComputationRequest(this);
        result.name_ = name_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof xla.Xla.ComputationRequest) {
          return mergeFrom((xla.Xla.ComputationRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(xla.Xla.ComputationRequest other) {
        if (other == xla.Xla.ComputationRequest.getDefaultInstance()) return this;
        if (!other.getName().isEmpty()) {
          name_ = other.name_;
          onChanged();
        }
        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 {
        xla.Xla.ComputationRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (xla.Xla.ComputationRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object name_ = "";
      /**
       * <code>string name = 1;</code>
       */
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          name_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string name = 1;</code>
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string name = 1;</code>
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        name_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string name = 1;</code>
       */
      public Builder clearName() {
        
        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      /**
       * <code>string name = 1;</code>
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        name_ = value;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

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


      // @@protoc_insertion_point(builder_scope:xla.ComputationRequest)
    }

    // @@protoc_insertion_point(class_scope:xla.ComputationRequest)
    private static final xla.Xla.ComputationRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new xla.Xla.ComputationRequest();
    }

    public static xla.Xla.ComputationRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public xla.Xla.ComputationRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ComputationResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:xla.ComputationResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.xla.ComputationHandle computation = 1;</code>
     */
    boolean hasComputation();
    /**
     * <code>.xla.ComputationHandle computation = 1;</code>
     */
    xla.XlaData.ComputationHandle getComputation();
    /**
     * <code>.xla.ComputationHandle computation = 1;</code>
     */
    xla.XlaData.ComputationHandleOrBuilder getComputationOrBuilder();
  }
  /**
   * Protobuf type {@code xla.ComputationResponse}
   */
  public  static final class ComputationResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:xla.ComputationResponse)
      ComputationResponseOrBuilder {
    // Use ComputationResponse.newBuilder() to construct.
    private ComputationResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ComputationResponse() {
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private ComputationResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              xla.XlaData.ComputationHandle.Builder subBuilder = null;
              if (computation_ != null) {
                subBuilder = computation_.toBuilder();
              }
              computation_ = input.readMessage(xla.XlaData.ComputationHandle.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(computation_);
                computation_ = 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 {
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return xla.Xla.internal_static_xla_ComputationResponse_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return xla.Xla.internal_static_xla_ComputationResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              xla.Xla.ComputationResponse.class, xla.Xla.ComputationResponse.Builder.class);
    }

    public static final int COMPUTATION_FIELD_NUMBER = 1;
    private xla.XlaData.ComputationHandle computation_;
    /**
     * <code>.xla.ComputationHandle computation = 1;</code>
     */
    public boolean hasComputation() {
      return computation_ != null;
    }
    /**
     * <code>.xla.ComputationHandle computation = 1;</code>
     */
    public xla.XlaData.ComputationHandle getComputation() {
      return computation_ == null ? xla.XlaData.ComputationHandle.getDefaultInstance() : computation_;
    }
    /**
     * <code>.xla.ComputationHandle computation = 1;</code>
     */
    public xla.XlaData.ComputationHandleOrBuilder getComputationOrBuilder() {
      return getComputation();
    }

    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 (computation_ != null) {
        output.writeMessage(1, getComputation());
      }
    }

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

      size = 0;
      if (computation_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getComputation());
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof xla.Xla.ComputationResponse)) {
        return super.equals(obj);
      }
      xla.Xla.ComputationResponse other = (xla.Xla.ComputationResponse) obj;

      boolean result = true;
      result = result && (hasComputation() == other.hasComputation());
      if (hasComputation()) {
        result = result && getComputation()
            .equals(other.getComputation());
      }
      return result;
    }

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

    public static xla.Xla.ComputationResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.ComputationResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.ComputationResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.ComputationResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.ComputationResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.ComputationResponse 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 xla.Xla.ComputationResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static xla.Xla.ComputationResponse 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 xla.Xla.ComputationResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.ComputationResponse 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(xla.Xla.ComputationResponse 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 xla.ComputationResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:xla.ComputationResponse)
        xla.Xla.ComputationResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return xla.Xla.internal_static_xla_ComputationResponse_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return xla.Xla.internal_static_xla_ComputationResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                xla.Xla.ComputationResponse.class, xla.Xla.ComputationResponse.Builder.class);
      }

      // Construct using xla.Xla.ComputationResponse.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 (computationBuilder_ == null) {
          computation_ = null;
        } else {
          computation_ = null;
          computationBuilder_ = null;
        }
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return xla.Xla.internal_static_xla_ComputationResponse_descriptor;
      }

      public xla.Xla.ComputationResponse getDefaultInstanceForType() {
        return xla.Xla.ComputationResponse.getDefaultInstance();
      }

      public xla.Xla.ComputationResponse build() {
        xla.Xla.ComputationResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public xla.Xla.ComputationResponse buildPartial() {
        xla.Xla.ComputationResponse result = new xla.Xla.ComputationResponse(this);
        if (computationBuilder_ == null) {
          result.computation_ = computation_;
        } else {
          result.computation_ = computationBuilder_.build();
        }
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof xla.Xla.ComputationResponse) {
          return mergeFrom((xla.Xla.ComputationResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(xla.Xla.ComputationResponse other) {
        if (other == xla.Xla.ComputationResponse.getDefaultInstance()) return this;
        if (other.hasComputation()) {
          mergeComputation(other.getComputation());
        }
        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 {
        xla.Xla.ComputationResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (xla.Xla.ComputationResponse) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private xla.XlaData.ComputationHandle computation_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.XlaData.ComputationHandle, xla.XlaData.ComputationHandle.Builder, xla.XlaData.ComputationHandleOrBuilder> computationBuilder_;
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      public boolean hasComputation() {
        return computationBuilder_ != null || computation_ != null;
      }
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      public xla.XlaData.ComputationHandle getComputation() {
        if (computationBuilder_ == null) {
          return computation_ == null ? xla.XlaData.ComputationHandle.getDefaultInstance() : computation_;
        } else {
          return computationBuilder_.getMessage();
        }
      }
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      public Builder setComputation(xla.XlaData.ComputationHandle value) {
        if (computationBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          computation_ = value;
          onChanged();
        } else {
          computationBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      public Builder setComputation(
          xla.XlaData.ComputationHandle.Builder builderForValue) {
        if (computationBuilder_ == null) {
          computation_ = builderForValue.build();
          onChanged();
        } else {
          computationBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      public Builder mergeComputation(xla.XlaData.ComputationHandle value) {
        if (computationBuilder_ == null) {
          if (computation_ != null) {
            computation_ =
              xla.XlaData.ComputationHandle.newBuilder(computation_).mergeFrom(value).buildPartial();
          } else {
            computation_ = value;
          }
          onChanged();
        } else {
          computationBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      public Builder clearComputation() {
        if (computationBuilder_ == null) {
          computation_ = null;
          onChanged();
        } else {
          computation_ = null;
          computationBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      public xla.XlaData.ComputationHandle.Builder getComputationBuilder() {
        
        onChanged();
        return getComputationFieldBuilder().getBuilder();
      }
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      public xla.XlaData.ComputationHandleOrBuilder getComputationOrBuilder() {
        if (computationBuilder_ != null) {
          return computationBuilder_.getMessageOrBuilder();
        } else {
          return computation_ == null ?
              xla.XlaData.ComputationHandle.getDefaultInstance() : computation_;
        }
      }
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.XlaData.ComputationHandle, xla.XlaData.ComputationHandle.Builder, xla.XlaData.ComputationHandleOrBuilder> 
          getComputationFieldBuilder() {
        if (computationBuilder_ == null) {
          computationBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              xla.XlaData.ComputationHandle, xla.XlaData.ComputationHandle.Builder, xla.XlaData.ComputationHandleOrBuilder>(
                  getComputation(),
                  getParentForChildren(),
                  isClean());
          computation_ = null;
        }
        return computationBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

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


      // @@protoc_insertion_point(builder_scope:xla.ComputationResponse)
    }

    // @@protoc_insertion_point(class_scope:xla.ComputationResponse)
    private static final xla.Xla.ComputationResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new xla.Xla.ComputationResponse();
    }

    public static xla.Xla.ComputationResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public xla.Xla.ComputationResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface CreateChannelHandleRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:xla.CreateChannelHandleRequest)
      com.google.protobuf.MessageOrBuilder {
  }
  /**
   * Protobuf type {@code xla.CreateChannelHandleRequest}
   */
  public  static final class CreateChannelHandleRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:xla.CreateChannelHandleRequest)
      CreateChannelHandleRequestOrBuilder {
    // Use CreateChannelHandleRequest.newBuilder() to construct.
    private CreateChannelHandleRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private CreateChannelHandleRequest() {
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private CreateChannelHandleRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(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 {
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return xla.Xla.internal_static_xla_CreateChannelHandleRequest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return xla.Xla.internal_static_xla_CreateChannelHandleRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              xla.Xla.CreateChannelHandleRequest.class, xla.Xla.CreateChannelHandleRequest.Builder.class);
    }

    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 {
    }

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

      size = 0;
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof xla.Xla.CreateChannelHandleRequest)) {
        return super.equals(obj);
      }
      xla.Xla.CreateChannelHandleRequest other = (xla.Xla.CreateChannelHandleRequest) obj;

      boolean result = true;
      return result;
    }

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

    public static xla.Xla.CreateChannelHandleRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.CreateChannelHandleRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.CreateChannelHandleRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.CreateChannelHandleRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.CreateChannelHandleRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.CreateChannelHandleRequest 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 xla.Xla.CreateChannelHandleRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static xla.Xla.CreateChannelHandleRequest 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 xla.Xla.CreateChannelHandleRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.CreateChannelHandleRequest 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(xla.Xla.CreateChannelHandleRequest 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 xla.CreateChannelHandleRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:xla.CreateChannelHandleRequest)
        xla.Xla.CreateChannelHandleRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return xla.Xla.internal_static_xla_CreateChannelHandleRequest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return xla.Xla.internal_static_xla_CreateChannelHandleRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                xla.Xla.CreateChannelHandleRequest.class, xla.Xla.CreateChannelHandleRequest.Builder.class);
      }

      // Construct using xla.Xla.CreateChannelHandleRequest.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();
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return xla.Xla.internal_static_xla_CreateChannelHandleRequest_descriptor;
      }

      public xla.Xla.CreateChannelHandleRequest getDefaultInstanceForType() {
        return xla.Xla.CreateChannelHandleRequest.getDefaultInstance();
      }

      public xla.Xla.CreateChannelHandleRequest build() {
        xla.Xla.CreateChannelHandleRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public xla.Xla.CreateChannelHandleRequest buildPartial() {
        xla.Xla.CreateChannelHandleRequest result = new xla.Xla.CreateChannelHandleRequest(this);
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof xla.Xla.CreateChannelHandleRequest) {
          return mergeFrom((xla.Xla.CreateChannelHandleRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(xla.Xla.CreateChannelHandleRequest other) {
        if (other == xla.Xla.CreateChannelHandleRequest.getDefaultInstance()) return this;
        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 {
        xla.Xla.CreateChannelHandleRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (xla.Xla.CreateChannelHandleRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

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


      // @@protoc_insertion_point(builder_scope:xla.CreateChannelHandleRequest)
    }

    // @@protoc_insertion_point(class_scope:xla.CreateChannelHandleRequest)
    private static final xla.Xla.CreateChannelHandleRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new xla.Xla.CreateChannelHandleRequest();
    }

    public static xla.Xla.CreateChannelHandleRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public xla.Xla.CreateChannelHandleRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface CreateChannelHandleResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:xla.CreateChannelHandleResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.xla.ChannelHandle channel = 1;</code>
     */
    boolean hasChannel();
    /**
     * <code>.xla.ChannelHandle channel = 1;</code>
     */
    xla.XlaData.ChannelHandle getChannel();
    /**
     * <code>.xla.ChannelHandle channel = 1;</code>
     */
    xla.XlaData.ChannelHandleOrBuilder getChannelOrBuilder();
  }
  /**
   * Protobuf type {@code xla.CreateChannelHandleResponse}
   */
  public  static final class CreateChannelHandleResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:xla.CreateChannelHandleResponse)
      CreateChannelHandleResponseOrBuilder {
    // Use CreateChannelHandleResponse.newBuilder() to construct.
    private CreateChannelHandleResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private CreateChannelHandleResponse() {
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private CreateChannelHandleResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              xla.XlaData.ChannelHandle.Builder subBuilder = null;
              if (channel_ != null) {
                subBuilder = channel_.toBuilder();
              }
              channel_ = input.readMessage(xla.XlaData.ChannelHandle.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(channel_);
                channel_ = 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 {
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return xla.Xla.internal_static_xla_CreateChannelHandleResponse_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return xla.Xla.internal_static_xla_CreateChannelHandleResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              xla.Xla.CreateChannelHandleResponse.class, xla.Xla.CreateChannelHandleResponse.Builder.class);
    }

    public static final int CHANNEL_FIELD_NUMBER = 1;
    private xla.XlaData.ChannelHandle channel_;
    /**
     * <code>.xla.ChannelHandle channel = 1;</code>
     */
    public boolean hasChannel() {
      return channel_ != null;
    }
    /**
     * <code>.xla.ChannelHandle channel = 1;</code>
     */
    public xla.XlaData.ChannelHandle getChannel() {
      return channel_ == null ? xla.XlaData.ChannelHandle.getDefaultInstance() : channel_;
    }
    /**
     * <code>.xla.ChannelHandle channel = 1;</code>
     */
    public xla.XlaData.ChannelHandleOrBuilder getChannelOrBuilder() {
      return getChannel();
    }

    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 (channel_ != null) {
        output.writeMessage(1, getChannel());
      }
    }

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

      size = 0;
      if (channel_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getChannel());
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof xla.Xla.CreateChannelHandleResponse)) {
        return super.equals(obj);
      }
      xla.Xla.CreateChannelHandleResponse other = (xla.Xla.CreateChannelHandleResponse) obj;

      boolean result = true;
      result = result && (hasChannel() == other.hasChannel());
      if (hasChannel()) {
        result = result && getChannel()
            .equals(other.getChannel());
      }
      return result;
    }

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

    public static xla.Xla.CreateChannelHandleResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.CreateChannelHandleResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.CreateChannelHandleResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.CreateChannelHandleResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.CreateChannelHandleResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.CreateChannelHandleResponse 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 xla.Xla.CreateChannelHandleResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static xla.Xla.CreateChannelHandleResponse 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 xla.Xla.CreateChannelHandleResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.CreateChannelHandleResponse 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(xla.Xla.CreateChannelHandleResponse 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 xla.CreateChannelHandleResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:xla.CreateChannelHandleResponse)
        xla.Xla.CreateChannelHandleResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return xla.Xla.internal_static_xla_CreateChannelHandleResponse_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return xla.Xla.internal_static_xla_CreateChannelHandleResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                xla.Xla.CreateChannelHandleResponse.class, xla.Xla.CreateChannelHandleResponse.Builder.class);
      }

      // Construct using xla.Xla.CreateChannelHandleResponse.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 (channelBuilder_ == null) {
          channel_ = null;
        } else {
          channel_ = null;
          channelBuilder_ = null;
        }
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return xla.Xla.internal_static_xla_CreateChannelHandleResponse_descriptor;
      }

      public xla.Xla.CreateChannelHandleResponse getDefaultInstanceForType() {
        return xla.Xla.CreateChannelHandleResponse.getDefaultInstance();
      }

      public xla.Xla.CreateChannelHandleResponse build() {
        xla.Xla.CreateChannelHandleResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public xla.Xla.CreateChannelHandleResponse buildPartial() {
        xla.Xla.CreateChannelHandleResponse result = new xla.Xla.CreateChannelHandleResponse(this);
        if (channelBuilder_ == null) {
          result.channel_ = channel_;
        } else {
          result.channel_ = channelBuilder_.build();
        }
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof xla.Xla.CreateChannelHandleResponse) {
          return mergeFrom((xla.Xla.CreateChannelHandleResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(xla.Xla.CreateChannelHandleResponse other) {
        if (other == xla.Xla.CreateChannelHandleResponse.getDefaultInstance()) return this;
        if (other.hasChannel()) {
          mergeChannel(other.getChannel());
        }
        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 {
        xla.Xla.CreateChannelHandleResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (xla.Xla.CreateChannelHandleResponse) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private xla.XlaData.ChannelHandle channel_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.XlaData.ChannelHandle, xla.XlaData.ChannelHandle.Builder, xla.XlaData.ChannelHandleOrBuilder> channelBuilder_;
      /**
       * <code>.xla.ChannelHandle channel = 1;</code>
       */
      public boolean hasChannel() {
        return channelBuilder_ != null || channel_ != null;
      }
      /**
       * <code>.xla.ChannelHandle channel = 1;</code>
       */
      public xla.XlaData.ChannelHandle getChannel() {
        if (channelBuilder_ == null) {
          return channel_ == null ? xla.XlaData.ChannelHandle.getDefaultInstance() : channel_;
        } else {
          return channelBuilder_.getMessage();
        }
      }
      /**
       * <code>.xla.ChannelHandle channel = 1;</code>
       */
      public Builder setChannel(xla.XlaData.ChannelHandle value) {
        if (channelBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          channel_ = value;
          onChanged();
        } else {
          channelBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.xla.ChannelHandle channel = 1;</code>
       */
      public Builder setChannel(
          xla.XlaData.ChannelHandle.Builder builderForValue) {
        if (channelBuilder_ == null) {
          channel_ = builderForValue.build();
          onChanged();
        } else {
          channelBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.xla.ChannelHandle channel = 1;</code>
       */
      public Builder mergeChannel(xla.XlaData.ChannelHandle value) {
        if (channelBuilder_ == null) {
          if (channel_ != null) {
            channel_ =
              xla.XlaData.ChannelHandle.newBuilder(channel_).mergeFrom(value).buildPartial();
          } else {
            channel_ = value;
          }
          onChanged();
        } else {
          channelBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.xla.ChannelHandle channel = 1;</code>
       */
      public Builder clearChannel() {
        if (channelBuilder_ == null) {
          channel_ = null;
          onChanged();
        } else {
          channel_ = null;
          channelBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.xla.ChannelHandle channel = 1;</code>
       */
      public xla.XlaData.ChannelHandle.Builder getChannelBuilder() {
        
        onChanged();
        return getChannelFieldBuilder().getBuilder();
      }
      /**
       * <code>.xla.ChannelHandle channel = 1;</code>
       */
      public xla.XlaData.ChannelHandleOrBuilder getChannelOrBuilder() {
        if (channelBuilder_ != null) {
          return channelBuilder_.getMessageOrBuilder();
        } else {
          return channel_ == null ?
              xla.XlaData.ChannelHandle.getDefaultInstance() : channel_;
        }
      }
      /**
       * <code>.xla.ChannelHandle channel = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.XlaData.ChannelHandle, xla.XlaData.ChannelHandle.Builder, xla.XlaData.ChannelHandleOrBuilder> 
          getChannelFieldBuilder() {
        if (channelBuilder_ == null) {
          channelBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              xla.XlaData.ChannelHandle, xla.XlaData.ChannelHandle.Builder, xla.XlaData.ChannelHandleOrBuilder>(
                  getChannel(),
                  getParentForChildren(),
                  isClean());
          channel_ = null;
        }
        return channelBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

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


      // @@protoc_insertion_point(builder_scope:xla.CreateChannelHandleResponse)
    }

    // @@protoc_insertion_point(class_scope:xla.CreateChannelHandleResponse)
    private static final xla.Xla.CreateChannelHandleResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new xla.Xla.CreateChannelHandleResponse();
    }

    public static xla.Xla.CreateChannelHandleResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public xla.Xla.CreateChannelHandleResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface UnregisterRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:xla.UnregisterRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.xla.GlobalDataHandle data = 1;</code>
     */
    boolean hasData();
    /**
     * <code>.xla.GlobalDataHandle data = 1;</code>
     */
    xla.XlaData.GlobalDataHandle getData();
    /**
     * <code>.xla.GlobalDataHandle data = 1;</code>
     */
    xla.XlaData.GlobalDataHandleOrBuilder getDataOrBuilder();
  }
  /**
   * Protobuf type {@code xla.UnregisterRequest}
   */
  public  static final class UnregisterRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:xla.UnregisterRequest)
      UnregisterRequestOrBuilder {
    // Use UnregisterRequest.newBuilder() to construct.
    private UnregisterRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private UnregisterRequest() {
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private UnregisterRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              xla.XlaData.GlobalDataHandle.Builder subBuilder = null;
              if (data_ != null) {
                subBuilder = data_.toBuilder();
              }
              data_ = input.readMessage(xla.XlaData.GlobalDataHandle.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(data_);
                data_ = 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 {
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return xla.Xla.internal_static_xla_UnregisterRequest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return xla.Xla.internal_static_xla_UnregisterRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              xla.Xla.UnregisterRequest.class, xla.Xla.UnregisterRequest.Builder.class);
    }

    public static final int DATA_FIELD_NUMBER = 1;
    private xla.XlaData.GlobalDataHandle data_;
    /**
     * <code>.xla.GlobalDataHandle data = 1;</code>
     */
    public boolean hasData() {
      return data_ != null;
    }
    /**
     * <code>.xla.GlobalDataHandle data = 1;</code>
     */
    public xla.XlaData.GlobalDataHandle getData() {
      return data_ == null ? xla.XlaData.GlobalDataHandle.getDefaultInstance() : data_;
    }
    /**
     * <code>.xla.GlobalDataHandle data = 1;</code>
     */
    public xla.XlaData.GlobalDataHandleOrBuilder getDataOrBuilder() {
      return getData();
    }

    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 (data_ != null) {
        output.writeMessage(1, getData());
      }
    }

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

      size = 0;
      if (data_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getData());
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof xla.Xla.UnregisterRequest)) {
        return super.equals(obj);
      }
      xla.Xla.UnregisterRequest other = (xla.Xla.UnregisterRequest) obj;

      boolean result = true;
      result = result && (hasData() == other.hasData());
      if (hasData()) {
        result = result && getData()
            .equals(other.getData());
      }
      return result;
    }

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

    public static xla.Xla.UnregisterRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.UnregisterRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.UnregisterRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.UnregisterRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.UnregisterRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.UnregisterRequest 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 xla.Xla.UnregisterRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static xla.Xla.UnregisterRequest 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 xla.Xla.UnregisterRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.UnregisterRequest 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(xla.Xla.UnregisterRequest 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 xla.UnregisterRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:xla.UnregisterRequest)
        xla.Xla.UnregisterRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return xla.Xla.internal_static_xla_UnregisterRequest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return xla.Xla.internal_static_xla_UnregisterRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                xla.Xla.UnregisterRequest.class, xla.Xla.UnregisterRequest.Builder.class);
      }

      // Construct using xla.Xla.UnregisterRequest.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 (dataBuilder_ == null) {
          data_ = null;
        } else {
          data_ = null;
          dataBuilder_ = null;
        }
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return xla.Xla.internal_static_xla_UnregisterRequest_descriptor;
      }

      public xla.Xla.UnregisterRequest getDefaultInstanceForType() {
        return xla.Xla.UnregisterRequest.getDefaultInstance();
      }

      public xla.Xla.UnregisterRequest build() {
        xla.Xla.UnregisterRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public xla.Xla.UnregisterRequest buildPartial() {
        xla.Xla.UnregisterRequest result = new xla.Xla.UnregisterRequest(this);
        if (dataBuilder_ == null) {
          result.data_ = data_;
        } else {
          result.data_ = dataBuilder_.build();
        }
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof xla.Xla.UnregisterRequest) {
          return mergeFrom((xla.Xla.UnregisterRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(xla.Xla.UnregisterRequest other) {
        if (other == xla.Xla.UnregisterRequest.getDefaultInstance()) return this;
        if (other.hasData()) {
          mergeData(other.getData());
        }
        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 {
        xla.Xla.UnregisterRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (xla.Xla.UnregisterRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private xla.XlaData.GlobalDataHandle data_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.XlaData.GlobalDataHandle, xla.XlaData.GlobalDataHandle.Builder, xla.XlaData.GlobalDataHandleOrBuilder> dataBuilder_;
      /**
       * <code>.xla.GlobalDataHandle data = 1;</code>
       */
      public boolean hasData() {
        return dataBuilder_ != null || data_ != null;
      }
      /**
       * <code>.xla.GlobalDataHandle data = 1;</code>
       */
      public xla.XlaData.GlobalDataHandle getData() {
        if (dataBuilder_ == null) {
          return data_ == null ? xla.XlaData.GlobalDataHandle.getDefaultInstance() : data_;
        } else {
          return dataBuilder_.getMessage();
        }
      }
      /**
       * <code>.xla.GlobalDataHandle data = 1;</code>
       */
      public Builder setData(xla.XlaData.GlobalDataHandle value) {
        if (dataBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          data_ = value;
          onChanged();
        } else {
          dataBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.xla.GlobalDataHandle data = 1;</code>
       */
      public Builder setData(
          xla.XlaData.GlobalDataHandle.Builder builderForValue) {
        if (dataBuilder_ == null) {
          data_ = builderForValue.build();
          onChanged();
        } else {
          dataBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.xla.GlobalDataHandle data = 1;</code>
       */
      public Builder mergeData(xla.XlaData.GlobalDataHandle value) {
        if (dataBuilder_ == null) {
          if (data_ != null) {
            data_ =
              xla.XlaData.GlobalDataHandle.newBuilder(data_).mergeFrom(value).buildPartial();
          } else {
            data_ = value;
          }
          onChanged();
        } else {
          dataBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.xla.GlobalDataHandle data = 1;</code>
       */
      public Builder clearData() {
        if (dataBuilder_ == null) {
          data_ = null;
          onChanged();
        } else {
          data_ = null;
          dataBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.xla.GlobalDataHandle data = 1;</code>
       */
      public xla.XlaData.GlobalDataHandle.Builder getDataBuilder() {
        
        onChanged();
        return getDataFieldBuilder().getBuilder();
      }
      /**
       * <code>.xla.GlobalDataHandle data = 1;</code>
       */
      public xla.XlaData.GlobalDataHandleOrBuilder getDataOrBuilder() {
        if (dataBuilder_ != null) {
          return dataBuilder_.getMessageOrBuilder();
        } else {
          return data_ == null ?
              xla.XlaData.GlobalDataHandle.getDefaultInstance() : data_;
        }
      }
      /**
       * <code>.xla.GlobalDataHandle data = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.XlaData.GlobalDataHandle, xla.XlaData.GlobalDataHandle.Builder, xla.XlaData.GlobalDataHandleOrBuilder> 
          getDataFieldBuilder() {
        if (dataBuilder_ == null) {
          dataBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              xla.XlaData.GlobalDataHandle, xla.XlaData.GlobalDataHandle.Builder, xla.XlaData.GlobalDataHandleOrBuilder>(
                  getData(),
                  getParentForChildren(),
                  isClean());
          data_ = null;
        }
        return dataBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

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


      // @@protoc_insertion_point(builder_scope:xla.UnregisterRequest)
    }

    // @@protoc_insertion_point(class_scope:xla.UnregisterRequest)
    private static final xla.Xla.UnregisterRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new xla.Xla.UnregisterRequest();
    }

    public static xla.Xla.UnregisterRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public xla.Xla.UnregisterRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface UnregisterResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:xla.UnregisterResponse)
      com.google.protobuf.MessageOrBuilder {
  }
  /**
   * Protobuf type {@code xla.UnregisterResponse}
   */
  public  static final class UnregisterResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:xla.UnregisterResponse)
      UnregisterResponseOrBuilder {
    // Use UnregisterResponse.newBuilder() to construct.
    private UnregisterResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private UnregisterResponse() {
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private UnregisterResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(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 {
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return xla.Xla.internal_static_xla_UnregisterResponse_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return xla.Xla.internal_static_xla_UnregisterResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              xla.Xla.UnregisterResponse.class, xla.Xla.UnregisterResponse.Builder.class);
    }

    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 {
    }

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

      size = 0;
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof xla.Xla.UnregisterResponse)) {
        return super.equals(obj);
      }
      xla.Xla.UnregisterResponse other = (xla.Xla.UnregisterResponse) obj;

      boolean result = true;
      return result;
    }

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

    public static xla.Xla.UnregisterResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.UnregisterResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.UnregisterResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.UnregisterResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.UnregisterResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.UnregisterResponse 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 xla.Xla.UnregisterResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static xla.Xla.UnregisterResponse 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 xla.Xla.UnregisterResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.UnregisterResponse 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(xla.Xla.UnregisterResponse 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 xla.UnregisterResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:xla.UnregisterResponse)
        xla.Xla.UnregisterResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return xla.Xla.internal_static_xla_UnregisterResponse_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return xla.Xla.internal_static_xla_UnregisterResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                xla.Xla.UnregisterResponse.class, xla.Xla.UnregisterResponse.Builder.class);
      }

      // Construct using xla.Xla.UnregisterResponse.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();
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return xla.Xla.internal_static_xla_UnregisterResponse_descriptor;
      }

      public xla.Xla.UnregisterResponse getDefaultInstanceForType() {
        return xla.Xla.UnregisterResponse.getDefaultInstance();
      }

      public xla.Xla.UnregisterResponse build() {
        xla.Xla.UnregisterResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public xla.Xla.UnregisterResponse buildPartial() {
        xla.Xla.UnregisterResponse result = new xla.Xla.UnregisterResponse(this);
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof xla.Xla.UnregisterResponse) {
          return mergeFrom((xla.Xla.UnregisterResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(xla.Xla.UnregisterResponse other) {
        if (other == xla.Xla.UnregisterResponse.getDefaultInstance()) return this;
        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 {
        xla.Xla.UnregisterResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (xla.Xla.UnregisterResponse) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

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


      // @@protoc_insertion_point(builder_scope:xla.UnregisterResponse)
    }

    // @@protoc_insertion_point(class_scope:xla.UnregisterResponse)
    private static final xla.Xla.UnregisterResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new xla.Xla.UnregisterResponse();
    }

    public static xla.Xla.UnregisterResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public xla.Xla.UnregisterResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SetReturnValueRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:xla.SetReturnValueRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.xla.ComputationHandle computation = 1;</code>
     */
    boolean hasComputation();
    /**
     * <code>.xla.ComputationHandle computation = 1;</code>
     */
    xla.XlaData.ComputationHandle getComputation();
    /**
     * <code>.xla.ComputationHandle computation = 1;</code>
     */
    xla.XlaData.ComputationHandleOrBuilder getComputationOrBuilder();

    /**
     * <code>.xla.ComputationDataHandle operand = 2;</code>
     */
    boolean hasOperand();
    /**
     * <code>.xla.ComputationDataHandle operand = 2;</code>
     */
    xla.XlaData.ComputationDataHandle getOperand();
    /**
     * <code>.xla.ComputationDataHandle operand = 2;</code>
     */
    xla.XlaData.ComputationDataHandleOrBuilder getOperandOrBuilder();
  }
  /**
   * Protobuf type {@code xla.SetReturnValueRequest}
   */
  public  static final class SetReturnValueRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:xla.SetReturnValueRequest)
      SetReturnValueRequestOrBuilder {
    // Use SetReturnValueRequest.newBuilder() to construct.
    private SetReturnValueRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private SetReturnValueRequest() {
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private SetReturnValueRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              xla.XlaData.ComputationHandle.Builder subBuilder = null;
              if (computation_ != null) {
                subBuilder = computation_.toBuilder();
              }
              computation_ = input.readMessage(xla.XlaData.ComputationHandle.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(computation_);
                computation_ = subBuilder.buildPartial();
              }

              break;
            }
            case 18: {
              xla.XlaData.ComputationDataHandle.Builder subBuilder = null;
              if (operand_ != null) {
                subBuilder = operand_.toBuilder();
              }
              operand_ = input.readMessage(xla.XlaData.ComputationDataHandle.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(operand_);
                operand_ = 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 {
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return xla.Xla.internal_static_xla_SetReturnValueRequest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return xla.Xla.internal_static_xla_SetReturnValueRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              xla.Xla.SetReturnValueRequest.class, xla.Xla.SetReturnValueRequest.Builder.class);
    }

    public static final int COMPUTATION_FIELD_NUMBER = 1;
    private xla.XlaData.ComputationHandle computation_;
    /**
     * <code>.xla.ComputationHandle computation = 1;</code>
     */
    public boolean hasComputation() {
      return computation_ != null;
    }
    /**
     * <code>.xla.ComputationHandle computation = 1;</code>
     */
    public xla.XlaData.ComputationHandle getComputation() {
      return computation_ == null ? xla.XlaData.ComputationHandle.getDefaultInstance() : computation_;
    }
    /**
     * <code>.xla.ComputationHandle computation = 1;</code>
     */
    public xla.XlaData.ComputationHandleOrBuilder getComputationOrBuilder() {
      return getComputation();
    }

    public static final int OPERAND_FIELD_NUMBER = 2;
    private xla.XlaData.ComputationDataHandle operand_;
    /**
     * <code>.xla.ComputationDataHandle operand = 2;</code>
     */
    public boolean hasOperand() {
      return operand_ != null;
    }
    /**
     * <code>.xla.ComputationDataHandle operand = 2;</code>
     */
    public xla.XlaData.ComputationDataHandle getOperand() {
      return operand_ == null ? xla.XlaData.ComputationDataHandle.getDefaultInstance() : operand_;
    }
    /**
     * <code>.xla.ComputationDataHandle operand = 2;</code>
     */
    public xla.XlaData.ComputationDataHandleOrBuilder getOperandOrBuilder() {
      return getOperand();
    }

    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 (computation_ != null) {
        output.writeMessage(1, getComputation());
      }
      if (operand_ != null) {
        output.writeMessage(2, getOperand());
      }
    }

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

      size = 0;
      if (computation_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getComputation());
      }
      if (operand_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getOperand());
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof xla.Xla.SetReturnValueRequest)) {
        return super.equals(obj);
      }
      xla.Xla.SetReturnValueRequest other = (xla.Xla.SetReturnValueRequest) obj;

      boolean result = true;
      result = result && (hasComputation() == other.hasComputation());
      if (hasComputation()) {
        result = result && getComputation()
            .equals(other.getComputation());
      }
      result = result && (hasOperand() == other.hasOperand());
      if (hasOperand()) {
        result = result && getOperand()
            .equals(other.getOperand());
      }
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasComputation()) {
        hash = (37 * hash) + COMPUTATION_FIELD_NUMBER;
        hash = (53 * hash) + getComputation().hashCode();
      }
      if (hasOperand()) {
        hash = (37 * hash) + OPERAND_FIELD_NUMBER;
        hash = (53 * hash) + getOperand().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static xla.Xla.SetReturnValueRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.SetReturnValueRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.SetReturnValueRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.SetReturnValueRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.SetReturnValueRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.SetReturnValueRequest 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 xla.Xla.SetReturnValueRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static xla.Xla.SetReturnValueRequest 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 xla.Xla.SetReturnValueRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.SetReturnValueRequest 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(xla.Xla.SetReturnValueRequest 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 xla.SetReturnValueRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:xla.SetReturnValueRequest)
        xla.Xla.SetReturnValueRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return xla.Xla.internal_static_xla_SetReturnValueRequest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return xla.Xla.internal_static_xla_SetReturnValueRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                xla.Xla.SetReturnValueRequest.class, xla.Xla.SetReturnValueRequest.Builder.class);
      }

      // Construct using xla.Xla.SetReturnValueRequest.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 (computationBuilder_ == null) {
          computation_ = null;
        } else {
          computation_ = null;
          computationBuilder_ = null;
        }
        if (operandBuilder_ == null) {
          operand_ = null;
        } else {
          operand_ = null;
          operandBuilder_ = null;
        }
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return xla.Xla.internal_static_xla_SetReturnValueRequest_descriptor;
      }

      public xla.Xla.SetReturnValueRequest getDefaultInstanceForType() {
        return xla.Xla.SetReturnValueRequest.getDefaultInstance();
      }

      public xla.Xla.SetReturnValueRequest build() {
        xla.Xla.SetReturnValueRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public xla.Xla.SetReturnValueRequest buildPartial() {
        xla.Xla.SetReturnValueRequest result = new xla.Xla.SetReturnValueRequest(this);
        if (computationBuilder_ == null) {
          result.computation_ = computation_;
        } else {
          result.computation_ = computationBuilder_.build();
        }
        if (operandBuilder_ == null) {
          result.operand_ = operand_;
        } else {
          result.operand_ = operandBuilder_.build();
        }
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof xla.Xla.SetReturnValueRequest) {
          return mergeFrom((xla.Xla.SetReturnValueRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(xla.Xla.SetReturnValueRequest other) {
        if (other == xla.Xla.SetReturnValueRequest.getDefaultInstance()) return this;
        if (other.hasComputation()) {
          mergeComputation(other.getComputation());
        }
        if (other.hasOperand()) {
          mergeOperand(other.getOperand());
        }
        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 {
        xla.Xla.SetReturnValueRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (xla.Xla.SetReturnValueRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private xla.XlaData.ComputationHandle computation_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.XlaData.ComputationHandle, xla.XlaData.ComputationHandle.Builder, xla.XlaData.ComputationHandleOrBuilder> computationBuilder_;
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      public boolean hasComputation() {
        return computationBuilder_ != null || computation_ != null;
      }
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      public xla.XlaData.ComputationHandle getComputation() {
        if (computationBuilder_ == null) {
          return computation_ == null ? xla.XlaData.ComputationHandle.getDefaultInstance() : computation_;
        } else {
          return computationBuilder_.getMessage();
        }
      }
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      public Builder setComputation(xla.XlaData.ComputationHandle value) {
        if (computationBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          computation_ = value;
          onChanged();
        } else {
          computationBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      public Builder setComputation(
          xla.XlaData.ComputationHandle.Builder builderForValue) {
        if (computationBuilder_ == null) {
          computation_ = builderForValue.build();
          onChanged();
        } else {
          computationBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      public Builder mergeComputation(xla.XlaData.ComputationHandle value) {
        if (computationBuilder_ == null) {
          if (computation_ != null) {
            computation_ =
              xla.XlaData.ComputationHandle.newBuilder(computation_).mergeFrom(value).buildPartial();
          } else {
            computation_ = value;
          }
          onChanged();
        } else {
          computationBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      public Builder clearComputation() {
        if (computationBuilder_ == null) {
          computation_ = null;
          onChanged();
        } else {
          computation_ = null;
          computationBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      public xla.XlaData.ComputationHandle.Builder getComputationBuilder() {
        
        onChanged();
        return getComputationFieldBuilder().getBuilder();
      }
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      public xla.XlaData.ComputationHandleOrBuilder getComputationOrBuilder() {
        if (computationBuilder_ != null) {
          return computationBuilder_.getMessageOrBuilder();
        } else {
          return computation_ == null ?
              xla.XlaData.ComputationHandle.getDefaultInstance() : computation_;
        }
      }
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.XlaData.ComputationHandle, xla.XlaData.ComputationHandle.Builder, xla.XlaData.ComputationHandleOrBuilder> 
          getComputationFieldBuilder() {
        if (computationBuilder_ == null) {
          computationBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              xla.XlaData.ComputationHandle, xla.XlaData.ComputationHandle.Builder, xla.XlaData.ComputationHandleOrBuilder>(
                  getComputation(),
                  getParentForChildren(),
                  isClean());
          computation_ = null;
        }
        return computationBuilder_;
      }

      private xla.XlaData.ComputationDataHandle operand_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.XlaData.ComputationDataHandle, xla.XlaData.ComputationDataHandle.Builder, xla.XlaData.ComputationDataHandleOrBuilder> operandBuilder_;
      /**
       * <code>.xla.ComputationDataHandle operand = 2;</code>
       */
      public boolean hasOperand() {
        return operandBuilder_ != null || operand_ != null;
      }
      /**
       * <code>.xla.ComputationDataHandle operand = 2;</code>
       */
      public xla.XlaData.ComputationDataHandle getOperand() {
        if (operandBuilder_ == null) {
          return operand_ == null ? xla.XlaData.ComputationDataHandle.getDefaultInstance() : operand_;
        } else {
          return operandBuilder_.getMessage();
        }
      }
      /**
       * <code>.xla.ComputationDataHandle operand = 2;</code>
       */
      public Builder setOperand(xla.XlaData.ComputationDataHandle value) {
        if (operandBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          operand_ = value;
          onChanged();
        } else {
          operandBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.xla.ComputationDataHandle operand = 2;</code>
       */
      public Builder setOperand(
          xla.XlaData.ComputationDataHandle.Builder builderForValue) {
        if (operandBuilder_ == null) {
          operand_ = builderForValue.build();
          onChanged();
        } else {
          operandBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.xla.ComputationDataHandle operand = 2;</code>
       */
      public Builder mergeOperand(xla.XlaData.ComputationDataHandle value) {
        if (operandBuilder_ == null) {
          if (operand_ != null) {
            operand_ =
              xla.XlaData.ComputationDataHandle.newBuilder(operand_).mergeFrom(value).buildPartial();
          } else {
            operand_ = value;
          }
          onChanged();
        } else {
          operandBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.xla.ComputationDataHandle operand = 2;</code>
       */
      public Builder clearOperand() {
        if (operandBuilder_ == null) {
          operand_ = null;
          onChanged();
        } else {
          operand_ = null;
          operandBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.xla.ComputationDataHandle operand = 2;</code>
       */
      public xla.XlaData.ComputationDataHandle.Builder getOperandBuilder() {
        
        onChanged();
        return getOperandFieldBuilder().getBuilder();
      }
      /**
       * <code>.xla.ComputationDataHandle operand = 2;</code>
       */
      public xla.XlaData.ComputationDataHandleOrBuilder getOperandOrBuilder() {
        if (operandBuilder_ != null) {
          return operandBuilder_.getMessageOrBuilder();
        } else {
          return operand_ == null ?
              xla.XlaData.ComputationDataHandle.getDefaultInstance() : operand_;
        }
      }
      /**
       * <code>.xla.ComputationDataHandle operand = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.XlaData.ComputationDataHandle, xla.XlaData.ComputationDataHandle.Builder, xla.XlaData.ComputationDataHandleOrBuilder> 
          getOperandFieldBuilder() {
        if (operandBuilder_ == null) {
          operandBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              xla.XlaData.ComputationDataHandle, xla.XlaData.ComputationDataHandle.Builder, xla.XlaData.ComputationDataHandleOrBuilder>(
                  getOperand(),
                  getParentForChildren(),
                  isClean());
          operand_ = null;
        }
        return operandBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

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


      // @@protoc_insertion_point(builder_scope:xla.SetReturnValueRequest)
    }

    // @@protoc_insertion_point(class_scope:xla.SetReturnValueRequest)
    private static final xla.Xla.SetReturnValueRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new xla.Xla.SetReturnValueRequest();
    }

    public static xla.Xla.SetReturnValueRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public xla.Xla.SetReturnValueRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SetReturnValueResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:xla.SetReturnValueResponse)
      com.google.protobuf.MessageOrBuilder {
  }
  /**
   * Protobuf type {@code xla.SetReturnValueResponse}
   */
  public  static final class SetReturnValueResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:xla.SetReturnValueResponse)
      SetReturnValueResponseOrBuilder {
    // Use SetReturnValueResponse.newBuilder() to construct.
    private SetReturnValueResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private SetReturnValueResponse() {
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private SetReturnValueResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(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 {
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return xla.Xla.internal_static_xla_SetReturnValueResponse_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return xla.Xla.internal_static_xla_SetReturnValueResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              xla.Xla.SetReturnValueResponse.class, xla.Xla.SetReturnValueResponse.Builder.class);
    }

    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 {
    }

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

      size = 0;
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof xla.Xla.SetReturnValueResponse)) {
        return super.equals(obj);
      }
      xla.Xla.SetReturnValueResponse other = (xla.Xla.SetReturnValueResponse) obj;

      boolean result = true;
      return result;
    }

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

    public static xla.Xla.SetReturnValueResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.SetReturnValueResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.SetReturnValueResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.SetReturnValueResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.SetReturnValueResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.SetReturnValueResponse 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 xla.Xla.SetReturnValueResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static xla.Xla.SetReturnValueResponse 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 xla.Xla.SetReturnValueResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.SetReturnValueResponse 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(xla.Xla.SetReturnValueResponse 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 xla.SetReturnValueResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:xla.SetReturnValueResponse)
        xla.Xla.SetReturnValueResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return xla.Xla.internal_static_xla_SetReturnValueResponse_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return xla.Xla.internal_static_xla_SetReturnValueResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                xla.Xla.SetReturnValueResponse.class, xla.Xla.SetReturnValueResponse.Builder.class);
      }

      // Construct using xla.Xla.SetReturnValueResponse.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();
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return xla.Xla.internal_static_xla_SetReturnValueResponse_descriptor;
      }

      public xla.Xla.SetReturnValueResponse getDefaultInstanceForType() {
        return xla.Xla.SetReturnValueResponse.getDefaultInstance();
      }

      public xla.Xla.SetReturnValueResponse build() {
        xla.Xla.SetReturnValueResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public xla.Xla.SetReturnValueResponse buildPartial() {
        xla.Xla.SetReturnValueResponse result = new xla.Xla.SetReturnValueResponse(this);
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof xla.Xla.SetReturnValueResponse) {
          return mergeFrom((xla.Xla.SetReturnValueResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(xla.Xla.SetReturnValueResponse other) {
        if (other == xla.Xla.SetReturnValueResponse.getDefaultInstance()) return this;
        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 {
        xla.Xla.SetReturnValueResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (xla.Xla.SetReturnValueResponse) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

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


      // @@protoc_insertion_point(builder_scope:xla.SetReturnValueResponse)
    }

    // @@protoc_insertion_point(class_scope:xla.SetReturnValueResponse)
    private static final xla.Xla.SetReturnValueResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new xla.Xla.SetReturnValueResponse();
    }

    public static xla.Xla.SetReturnValueResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public xla.Xla.SetReturnValueResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ExecuteRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:xla.ExecuteRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.xla.ComputationHandle computation = 1;</code>
     */
    boolean hasComputation();
    /**
     * <code>.xla.ComputationHandle computation = 1;</code>
     */
    xla.XlaData.ComputationHandle getComputation();
    /**
     * <code>.xla.ComputationHandle computation = 1;</code>
     */
    xla.XlaData.ComputationHandleOrBuilder getComputationOrBuilder();

    /**
     * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
     */
    java.util.List<xla.XlaData.GlobalDataHandle> 
        getArgumentsList();
    /**
     * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
     */
    xla.XlaData.GlobalDataHandle getArguments(int index);
    /**
     * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
     */
    int getArgumentsCount();
    /**
     * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
     */
    java.util.List<? extends xla.XlaData.GlobalDataHandleOrBuilder> 
        getArgumentsOrBuilderList();
    /**
     * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
     */
    xla.XlaData.GlobalDataHandleOrBuilder getArgumentsOrBuilder(
        int index);

    /**
     * <pre>
     * Options that affect how XLA compiles and runs code to service this request.
     * </pre>
     *
     * <code>.xla.ExecutionOptions execution_options = 5;</code>
     */
    boolean hasExecutionOptions();
    /**
     * <pre>
     * Options that affect how XLA compiles and runs code to service this request.
     * </pre>
     *
     * <code>.xla.ExecutionOptions execution_options = 5;</code>
     */
    xla.Xla.ExecutionOptions getExecutionOptions();
    /**
     * <pre>
     * Options that affect how XLA compiles and runs code to service this request.
     * </pre>
     *
     * <code>.xla.ExecutionOptions execution_options = 5;</code>
     */
    xla.Xla.ExecutionOptionsOrBuilder getExecutionOptionsOrBuilder();
  }
  /**
   * Protobuf type {@code xla.ExecuteRequest}
   */
  public  static final class ExecuteRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:xla.ExecuteRequest)
      ExecuteRequestOrBuilder {
    // Use ExecuteRequest.newBuilder() to construct.
    private ExecuteRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ExecuteRequest() {
      arguments_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private ExecuteRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              xla.XlaData.ComputationHandle.Builder subBuilder = null;
              if (computation_ != null) {
                subBuilder = computation_.toBuilder();
              }
              computation_ = input.readMessage(xla.XlaData.ComputationHandle.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(computation_);
                computation_ = subBuilder.buildPartial();
              }

              break;
            }
            case 18: {
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                arguments_ = new java.util.ArrayList<xla.XlaData.GlobalDataHandle>();
                mutable_bitField0_ |= 0x00000002;
              }
              arguments_.add(
                  input.readMessage(xla.XlaData.GlobalDataHandle.parser(), extensionRegistry));
              break;
            }
            case 42: {
              xla.Xla.ExecutionOptions.Builder subBuilder = null;
              if (executionOptions_ != null) {
                subBuilder = executionOptions_.toBuilder();
              }
              executionOptions_ = input.readMessage(xla.Xla.ExecutionOptions.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(executionOptions_);
                executionOptions_ = 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 {
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          arguments_ = java.util.Collections.unmodifiableList(arguments_);
        }
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return xla.Xla.internal_static_xla_ExecuteRequest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return xla.Xla.internal_static_xla_ExecuteRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              xla.Xla.ExecuteRequest.class, xla.Xla.ExecuteRequest.Builder.class);
    }

    private int bitField0_;
    public static final int COMPUTATION_FIELD_NUMBER = 1;
    private xla.XlaData.ComputationHandle computation_;
    /**
     * <code>.xla.ComputationHandle computation = 1;</code>
     */
    public boolean hasComputation() {
      return computation_ != null;
    }
    /**
     * <code>.xla.ComputationHandle computation = 1;</code>
     */
    public xla.XlaData.ComputationHandle getComputation() {
      return computation_ == null ? xla.XlaData.ComputationHandle.getDefaultInstance() : computation_;
    }
    /**
     * <code>.xla.ComputationHandle computation = 1;</code>
     */
    public xla.XlaData.ComputationHandleOrBuilder getComputationOrBuilder() {
      return getComputation();
    }

    public static final int ARGUMENTS_FIELD_NUMBER = 2;
    private java.util.List<xla.XlaData.GlobalDataHandle> arguments_;
    /**
     * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
     */
    public java.util.List<xla.XlaData.GlobalDataHandle> getArgumentsList() {
      return arguments_;
    }
    /**
     * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
     */
    public java.util.List<? extends xla.XlaData.GlobalDataHandleOrBuilder> 
        getArgumentsOrBuilderList() {
      return arguments_;
    }
    /**
     * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
     */
    public int getArgumentsCount() {
      return arguments_.size();
    }
    /**
     * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
     */
    public xla.XlaData.GlobalDataHandle getArguments(int index) {
      return arguments_.get(index);
    }
    /**
     * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
     */
    public xla.XlaData.GlobalDataHandleOrBuilder getArgumentsOrBuilder(
        int index) {
      return arguments_.get(index);
    }

    public static final int EXECUTION_OPTIONS_FIELD_NUMBER = 5;
    private xla.Xla.ExecutionOptions executionOptions_;
    /**
     * <pre>
     * Options that affect how XLA compiles and runs code to service this request.
     * </pre>
     *
     * <code>.xla.ExecutionOptions execution_options = 5;</code>
     */
    public boolean hasExecutionOptions() {
      return executionOptions_ != null;
    }
    /**
     * <pre>
     * Options that affect how XLA compiles and runs code to service this request.
     * </pre>
     *
     * <code>.xla.ExecutionOptions execution_options = 5;</code>
     */
    public xla.Xla.ExecutionOptions getExecutionOptions() {
      return executionOptions_ == null ? xla.Xla.ExecutionOptions.getDefaultInstance() : executionOptions_;
    }
    /**
     * <pre>
     * Options that affect how XLA compiles and runs code to service this request.
     * </pre>
     *
     * <code>.xla.ExecutionOptions execution_options = 5;</code>
     */
    public xla.Xla.ExecutionOptionsOrBuilder getExecutionOptionsOrBuilder() {
      return getExecutionOptions();
    }

    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 (computation_ != null) {
        output.writeMessage(1, getComputation());
      }
      for (int i = 0; i < arguments_.size(); i++) {
        output.writeMessage(2, arguments_.get(i));
      }
      if (executionOptions_ != null) {
        output.writeMessage(5, getExecutionOptions());
      }
    }

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

      size = 0;
      if (computation_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getComputation());
      }
      for (int i = 0; i < arguments_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, arguments_.get(i));
      }
      if (executionOptions_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, getExecutionOptions());
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof xla.Xla.ExecuteRequest)) {
        return super.equals(obj);
      }
      xla.Xla.ExecuteRequest other = (xla.Xla.ExecuteRequest) obj;

      boolean result = true;
      result = result && (hasComputation() == other.hasComputation());
      if (hasComputation()) {
        result = result && getComputation()
            .equals(other.getComputation());
      }
      result = result && getArgumentsList()
          .equals(other.getArgumentsList());
      result = result && (hasExecutionOptions() == other.hasExecutionOptions());
      if (hasExecutionOptions()) {
        result = result && getExecutionOptions()
            .equals(other.getExecutionOptions());
      }
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasComputation()) {
        hash = (37 * hash) + COMPUTATION_FIELD_NUMBER;
        hash = (53 * hash) + getComputation().hashCode();
      }
      if (getArgumentsCount() > 0) {
        hash = (37 * hash) + ARGUMENTS_FIELD_NUMBER;
        hash = (53 * hash) + getArgumentsList().hashCode();
      }
      if (hasExecutionOptions()) {
        hash = (37 * hash) + EXECUTION_OPTIONS_FIELD_NUMBER;
        hash = (53 * hash) + getExecutionOptions().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static xla.Xla.ExecuteRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.ExecuteRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.ExecuteRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.ExecuteRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.ExecuteRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.ExecuteRequest 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 xla.Xla.ExecuteRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static xla.Xla.ExecuteRequest 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 xla.Xla.ExecuteRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.ExecuteRequest 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(xla.Xla.ExecuteRequest 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 xla.ExecuteRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:xla.ExecuteRequest)
        xla.Xla.ExecuteRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return xla.Xla.internal_static_xla_ExecuteRequest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return xla.Xla.internal_static_xla_ExecuteRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                xla.Xla.ExecuteRequest.class, xla.Xla.ExecuteRequest.Builder.class);
      }

      // Construct using xla.Xla.ExecuteRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getArgumentsFieldBuilder();
        }
      }
      public Builder clear() {
        super.clear();
        if (computationBuilder_ == null) {
          computation_ = null;
        } else {
          computation_ = null;
          computationBuilder_ = null;
        }
        if (argumentsBuilder_ == null) {
          arguments_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
        } else {
          argumentsBuilder_.clear();
        }
        if (executionOptionsBuilder_ == null) {
          executionOptions_ = null;
        } else {
          executionOptions_ = null;
          executionOptionsBuilder_ = null;
        }
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return xla.Xla.internal_static_xla_ExecuteRequest_descriptor;
      }

      public xla.Xla.ExecuteRequest getDefaultInstanceForType() {
        return xla.Xla.ExecuteRequest.getDefaultInstance();
      }

      public xla.Xla.ExecuteRequest build() {
        xla.Xla.ExecuteRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public xla.Xla.ExecuteRequest buildPartial() {
        xla.Xla.ExecuteRequest result = new xla.Xla.ExecuteRequest(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (computationBuilder_ == null) {
          result.computation_ = computation_;
        } else {
          result.computation_ = computationBuilder_.build();
        }
        if (argumentsBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            arguments_ = java.util.Collections.unmodifiableList(arguments_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.arguments_ = arguments_;
        } else {
          result.arguments_ = argumentsBuilder_.build();
        }
        if (executionOptionsBuilder_ == null) {
          result.executionOptions_ = executionOptions_;
        } else {
          result.executionOptions_ = executionOptionsBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof xla.Xla.ExecuteRequest) {
          return mergeFrom((xla.Xla.ExecuteRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(xla.Xla.ExecuteRequest other) {
        if (other == xla.Xla.ExecuteRequest.getDefaultInstance()) return this;
        if (other.hasComputation()) {
          mergeComputation(other.getComputation());
        }
        if (argumentsBuilder_ == null) {
          if (!other.arguments_.isEmpty()) {
            if (arguments_.isEmpty()) {
              arguments_ = other.arguments_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureArgumentsIsMutable();
              arguments_.addAll(other.arguments_);
            }
            onChanged();
          }
        } else {
          if (!other.arguments_.isEmpty()) {
            if (argumentsBuilder_.isEmpty()) {
              argumentsBuilder_.dispose();
              argumentsBuilder_ = null;
              arguments_ = other.arguments_;
              bitField0_ = (bitField0_ & ~0x00000002);
              argumentsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getArgumentsFieldBuilder() : null;
            } else {
              argumentsBuilder_.addAllMessages(other.arguments_);
            }
          }
        }
        if (other.hasExecutionOptions()) {
          mergeExecutionOptions(other.getExecutionOptions());
        }
        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 {
        xla.Xla.ExecuteRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (xla.Xla.ExecuteRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private xla.XlaData.ComputationHandle computation_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.XlaData.ComputationHandle, xla.XlaData.ComputationHandle.Builder, xla.XlaData.ComputationHandleOrBuilder> computationBuilder_;
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      public boolean hasComputation() {
        return computationBuilder_ != null || computation_ != null;
      }
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      public xla.XlaData.ComputationHandle getComputation() {
        if (computationBuilder_ == null) {
          return computation_ == null ? xla.XlaData.ComputationHandle.getDefaultInstance() : computation_;
        } else {
          return computationBuilder_.getMessage();
        }
      }
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      public Builder setComputation(xla.XlaData.ComputationHandle value) {
        if (computationBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          computation_ = value;
          onChanged();
        } else {
          computationBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      public Builder setComputation(
          xla.XlaData.ComputationHandle.Builder builderForValue) {
        if (computationBuilder_ == null) {
          computation_ = builderForValue.build();
          onChanged();
        } else {
          computationBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      public Builder mergeComputation(xla.XlaData.ComputationHandle value) {
        if (computationBuilder_ == null) {
          if (computation_ != null) {
            computation_ =
              xla.XlaData.ComputationHandle.newBuilder(computation_).mergeFrom(value).buildPartial();
          } else {
            computation_ = value;
          }
          onChanged();
        } else {
          computationBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      public Builder clearComputation() {
        if (computationBuilder_ == null) {
          computation_ = null;
          onChanged();
        } else {
          computation_ = null;
          computationBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      public xla.XlaData.ComputationHandle.Builder getComputationBuilder() {
        
        onChanged();
        return getComputationFieldBuilder().getBuilder();
      }
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      public xla.XlaData.ComputationHandleOrBuilder getComputationOrBuilder() {
        if (computationBuilder_ != null) {
          return computationBuilder_.getMessageOrBuilder();
        } else {
          return computation_ == null ?
              xla.XlaData.ComputationHandle.getDefaultInstance() : computation_;
        }
      }
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.XlaData.ComputationHandle, xla.XlaData.ComputationHandle.Builder, xla.XlaData.ComputationHandleOrBuilder> 
          getComputationFieldBuilder() {
        if (computationBuilder_ == null) {
          computationBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              xla.XlaData.ComputationHandle, xla.XlaData.ComputationHandle.Builder, xla.XlaData.ComputationHandleOrBuilder>(
                  getComputation(),
                  getParentForChildren(),
                  isClean());
          computation_ = null;
        }
        return computationBuilder_;
      }

      private java.util.List<xla.XlaData.GlobalDataHandle> arguments_ =
        java.util.Collections.emptyList();
      private void ensureArgumentsIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          arguments_ = new java.util.ArrayList<xla.XlaData.GlobalDataHandle>(arguments_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          xla.XlaData.GlobalDataHandle, xla.XlaData.GlobalDataHandle.Builder, xla.XlaData.GlobalDataHandleOrBuilder> argumentsBuilder_;

      /**
       * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
       */
      public java.util.List<xla.XlaData.GlobalDataHandle> getArgumentsList() {
        if (argumentsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(arguments_);
        } else {
          return argumentsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
       */
      public int getArgumentsCount() {
        if (argumentsBuilder_ == null) {
          return arguments_.size();
        } else {
          return argumentsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
       */
      public xla.XlaData.GlobalDataHandle getArguments(int index) {
        if (argumentsBuilder_ == null) {
          return arguments_.get(index);
        } else {
          return argumentsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
       */
      public Builder setArguments(
          int index, xla.XlaData.GlobalDataHandle value) {
        if (argumentsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureArgumentsIsMutable();
          arguments_.set(index, value);
          onChanged();
        } else {
          argumentsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
       */
      public Builder setArguments(
          int index, xla.XlaData.GlobalDataHandle.Builder builderForValue) {
        if (argumentsBuilder_ == null) {
          ensureArgumentsIsMutable();
          arguments_.set(index, builderForValue.build());
          onChanged();
        } else {
          argumentsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
       */
      public Builder addArguments(xla.XlaData.GlobalDataHandle value) {
        if (argumentsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureArgumentsIsMutable();
          arguments_.add(value);
          onChanged();
        } else {
          argumentsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
       */
      public Builder addArguments(
          int index, xla.XlaData.GlobalDataHandle value) {
        if (argumentsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureArgumentsIsMutable();
          arguments_.add(index, value);
          onChanged();
        } else {
          argumentsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
       */
      public Builder addArguments(
          xla.XlaData.GlobalDataHandle.Builder builderForValue) {
        if (argumentsBuilder_ == null) {
          ensureArgumentsIsMutable();
          arguments_.add(builderForValue.build());
          onChanged();
        } else {
          argumentsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
       */
      public Builder addArguments(
          int index, xla.XlaData.GlobalDataHandle.Builder builderForValue) {
        if (argumentsBuilder_ == null) {
          ensureArgumentsIsMutable();
          arguments_.add(index, builderForValue.build());
          onChanged();
        } else {
          argumentsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
       */
      public Builder addAllArguments(
          java.lang.Iterable<? extends xla.XlaData.GlobalDataHandle> values) {
        if (argumentsBuilder_ == null) {
          ensureArgumentsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, arguments_);
          onChanged();
        } else {
          argumentsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
       */
      public Builder clearArguments() {
        if (argumentsBuilder_ == null) {
          arguments_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          argumentsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
       */
      public Builder removeArguments(int index) {
        if (argumentsBuilder_ == null) {
          ensureArgumentsIsMutable();
          arguments_.remove(index);
          onChanged();
        } else {
          argumentsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
       */
      public xla.XlaData.GlobalDataHandle.Builder getArgumentsBuilder(
          int index) {
        return getArgumentsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
       */
      public xla.XlaData.GlobalDataHandleOrBuilder getArgumentsOrBuilder(
          int index) {
        if (argumentsBuilder_ == null) {
          return arguments_.get(index);  } else {
          return argumentsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
       */
      public java.util.List<? extends xla.XlaData.GlobalDataHandleOrBuilder> 
           getArgumentsOrBuilderList() {
        if (argumentsBuilder_ != null) {
          return argumentsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(arguments_);
        }
      }
      /**
       * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
       */
      public xla.XlaData.GlobalDataHandle.Builder addArgumentsBuilder() {
        return getArgumentsFieldBuilder().addBuilder(
            xla.XlaData.GlobalDataHandle.getDefaultInstance());
      }
      /**
       * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
       */
      public xla.XlaData.GlobalDataHandle.Builder addArgumentsBuilder(
          int index) {
        return getArgumentsFieldBuilder().addBuilder(
            index, xla.XlaData.GlobalDataHandle.getDefaultInstance());
      }
      /**
       * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
       */
      public java.util.List<xla.XlaData.GlobalDataHandle.Builder> 
           getArgumentsBuilderList() {
        return getArgumentsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          xla.XlaData.GlobalDataHandle, xla.XlaData.GlobalDataHandle.Builder, xla.XlaData.GlobalDataHandleOrBuilder> 
          getArgumentsFieldBuilder() {
        if (argumentsBuilder_ == null) {
          argumentsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              xla.XlaData.GlobalDataHandle, xla.XlaData.GlobalDataHandle.Builder, xla.XlaData.GlobalDataHandleOrBuilder>(
                  arguments_,
                  ((bitField0_ & 0x00000002) == 0x00000002),
                  getParentForChildren(),
                  isClean());
          arguments_ = null;
        }
        return argumentsBuilder_;
      }

      private xla.Xla.ExecutionOptions executionOptions_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.Xla.ExecutionOptions, xla.Xla.ExecutionOptions.Builder, xla.Xla.ExecutionOptionsOrBuilder> executionOptionsBuilder_;
      /**
       * <pre>
       * Options that affect how XLA compiles and runs code to service this request.
       * </pre>
       *
       * <code>.xla.ExecutionOptions execution_options = 5;</code>
       */
      public boolean hasExecutionOptions() {
        return executionOptionsBuilder_ != null || executionOptions_ != null;
      }
      /**
       * <pre>
       * Options that affect how XLA compiles and runs code to service this request.
       * </pre>
       *
       * <code>.xla.ExecutionOptions execution_options = 5;</code>
       */
      public xla.Xla.ExecutionOptions getExecutionOptions() {
        if (executionOptionsBuilder_ == null) {
          return executionOptions_ == null ? xla.Xla.ExecutionOptions.getDefaultInstance() : executionOptions_;
        } else {
          return executionOptionsBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Options that affect how XLA compiles and runs code to service this request.
       * </pre>
       *
       * <code>.xla.ExecutionOptions execution_options = 5;</code>
       */
      public Builder setExecutionOptions(xla.Xla.ExecutionOptions value) {
        if (executionOptionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          executionOptions_ = value;
          onChanged();
        } else {
          executionOptionsBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       * Options that affect how XLA compiles and runs code to service this request.
       * </pre>
       *
       * <code>.xla.ExecutionOptions execution_options = 5;</code>
       */
      public Builder setExecutionOptions(
          xla.Xla.ExecutionOptions.Builder builderForValue) {
        if (executionOptionsBuilder_ == null) {
          executionOptions_ = builderForValue.build();
          onChanged();
        } else {
          executionOptionsBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       * Options that affect how XLA compiles and runs code to service this request.
       * </pre>
       *
       * <code>.xla.ExecutionOptions execution_options = 5;</code>
       */
      public Builder mergeExecutionOptions(xla.Xla.ExecutionOptions value) {
        if (executionOptionsBuilder_ == null) {
          if (executionOptions_ != null) {
            executionOptions_ =
              xla.Xla.ExecutionOptions.newBuilder(executionOptions_).mergeFrom(value).buildPartial();
          } else {
            executionOptions_ = value;
          }
          onChanged();
        } else {
          executionOptionsBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       * Options that affect how XLA compiles and runs code to service this request.
       * </pre>
       *
       * <code>.xla.ExecutionOptions execution_options = 5;</code>
       */
      public Builder clearExecutionOptions() {
        if (executionOptionsBuilder_ == null) {
          executionOptions_ = null;
          onChanged();
        } else {
          executionOptions_ = null;
          executionOptionsBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       * Options that affect how XLA compiles and runs code to service this request.
       * </pre>
       *
       * <code>.xla.ExecutionOptions execution_options = 5;</code>
       */
      public xla.Xla.ExecutionOptions.Builder getExecutionOptionsBuilder() {
        
        onChanged();
        return getExecutionOptionsFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Options that affect how XLA compiles and runs code to service this request.
       * </pre>
       *
       * <code>.xla.ExecutionOptions execution_options = 5;</code>
       */
      public xla.Xla.ExecutionOptionsOrBuilder getExecutionOptionsOrBuilder() {
        if (executionOptionsBuilder_ != null) {
          return executionOptionsBuilder_.getMessageOrBuilder();
        } else {
          return executionOptions_ == null ?
              xla.Xla.ExecutionOptions.getDefaultInstance() : executionOptions_;
        }
      }
      /**
       * <pre>
       * Options that affect how XLA compiles and runs code to service this request.
       * </pre>
       *
       * <code>.xla.ExecutionOptions execution_options = 5;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.Xla.ExecutionOptions, xla.Xla.ExecutionOptions.Builder, xla.Xla.ExecutionOptionsOrBuilder> 
          getExecutionOptionsFieldBuilder() {
        if (executionOptionsBuilder_ == null) {
          executionOptionsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              xla.Xla.ExecutionOptions, xla.Xla.ExecutionOptions.Builder, xla.Xla.ExecutionOptionsOrBuilder>(
                  getExecutionOptions(),
                  getParentForChildren(),
                  isClean());
          executionOptions_ = null;
        }
        return executionOptionsBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

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


      // @@protoc_insertion_point(builder_scope:xla.ExecuteRequest)
    }

    // @@protoc_insertion_point(class_scope:xla.ExecuteRequest)
    private static final xla.Xla.ExecuteRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new xla.Xla.ExecuteRequest();
    }

    public static xla.Xla.ExecuteRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public xla.Xla.ExecuteRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ExecuteGraphRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:xla.ExecuteGraphRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.xla.HloModuleProto computation = 1;</code>
     */
    boolean hasComputation();
    /**
     * <code>.xla.HloModuleProto computation = 1;</code>
     */
    xla.Hlo.HloModuleProto getComputation();
    /**
     * <code>.xla.HloModuleProto computation = 1;</code>
     */
    xla.Hlo.HloModuleProtoOrBuilder getComputationOrBuilder();

    /**
     * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
     */
    java.util.List<xla.XlaData.GlobalDataHandle> 
        getArgumentsList();
    /**
     * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
     */
    xla.XlaData.GlobalDataHandle getArguments(int index);
    /**
     * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
     */
    int getArgumentsCount();
    /**
     * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
     */
    java.util.List<? extends xla.XlaData.GlobalDataHandleOrBuilder> 
        getArgumentsOrBuilderList();
    /**
     * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
     */
    xla.XlaData.GlobalDataHandleOrBuilder getArgumentsOrBuilder(
        int index);

    /**
     * <pre>
     * Options that affect how XLA compiles and runs code to service this request.
     * </pre>
     *
     * <code>.xla.ExecutionOptions execution_options = 3;</code>
     */
    boolean hasExecutionOptions();
    /**
     * <pre>
     * Options that affect how XLA compiles and runs code to service this request.
     * </pre>
     *
     * <code>.xla.ExecutionOptions execution_options = 3;</code>
     */
    xla.Xla.ExecutionOptions getExecutionOptions();
    /**
     * <pre>
     * Options that affect how XLA compiles and runs code to service this request.
     * </pre>
     *
     * <code>.xla.ExecutionOptions execution_options = 3;</code>
     */
    xla.Xla.ExecutionOptionsOrBuilder getExecutionOptionsOrBuilder();
  }
  /**
   * Protobuf type {@code xla.ExecuteGraphRequest}
   */
  public  static final class ExecuteGraphRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:xla.ExecuteGraphRequest)
      ExecuteGraphRequestOrBuilder {
    // Use ExecuteGraphRequest.newBuilder() to construct.
    private ExecuteGraphRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ExecuteGraphRequest() {
      arguments_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private ExecuteGraphRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              xla.Hlo.HloModuleProto.Builder subBuilder = null;
              if (computation_ != null) {
                subBuilder = computation_.toBuilder();
              }
              computation_ = input.readMessage(xla.Hlo.HloModuleProto.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(computation_);
                computation_ = subBuilder.buildPartial();
              }

              break;
            }
            case 18: {
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                arguments_ = new java.util.ArrayList<xla.XlaData.GlobalDataHandle>();
                mutable_bitField0_ |= 0x00000002;
              }
              arguments_.add(
                  input.readMessage(xla.XlaData.GlobalDataHandle.parser(), extensionRegistry));
              break;
            }
            case 26: {
              xla.Xla.ExecutionOptions.Builder subBuilder = null;
              if (executionOptions_ != null) {
                subBuilder = executionOptions_.toBuilder();
              }
              executionOptions_ = input.readMessage(xla.Xla.ExecutionOptions.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(executionOptions_);
                executionOptions_ = 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 {
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          arguments_ = java.util.Collections.unmodifiableList(arguments_);
        }
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return xla.Xla.internal_static_xla_ExecuteGraphRequest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return xla.Xla.internal_static_xla_ExecuteGraphRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              xla.Xla.ExecuteGraphRequest.class, xla.Xla.ExecuteGraphRequest.Builder.class);
    }

    private int bitField0_;
    public static final int COMPUTATION_FIELD_NUMBER = 1;
    private xla.Hlo.HloModuleProto computation_;
    /**
     * <code>.xla.HloModuleProto computation = 1;</code>
     */
    public boolean hasComputation() {
      return computation_ != null;
    }
    /**
     * <code>.xla.HloModuleProto computation = 1;</code>
     */
    public xla.Hlo.HloModuleProto getComputation() {
      return computation_ == null ? xla.Hlo.HloModuleProto.getDefaultInstance() : computation_;
    }
    /**
     * <code>.xla.HloModuleProto computation = 1;</code>
     */
    public xla.Hlo.HloModuleProtoOrBuilder getComputationOrBuilder() {
      return getComputation();
    }

    public static final int ARGUMENTS_FIELD_NUMBER = 2;
    private java.util.List<xla.XlaData.GlobalDataHandle> arguments_;
    /**
     * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
     */
    public java.util.List<xla.XlaData.GlobalDataHandle> getArgumentsList() {
      return arguments_;
    }
    /**
     * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
     */
    public java.util.List<? extends xla.XlaData.GlobalDataHandleOrBuilder> 
        getArgumentsOrBuilderList() {
      return arguments_;
    }
    /**
     * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
     */
    public int getArgumentsCount() {
      return arguments_.size();
    }
    /**
     * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
     */
    public xla.XlaData.GlobalDataHandle getArguments(int index) {
      return arguments_.get(index);
    }
    /**
     * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
     */
    public xla.XlaData.GlobalDataHandleOrBuilder getArgumentsOrBuilder(
        int index) {
      return arguments_.get(index);
    }

    public static final int EXECUTION_OPTIONS_FIELD_NUMBER = 3;
    private xla.Xla.ExecutionOptions executionOptions_;
    /**
     * <pre>
     * Options that affect how XLA compiles and runs code to service this request.
     * </pre>
     *
     * <code>.xla.ExecutionOptions execution_options = 3;</code>
     */
    public boolean hasExecutionOptions() {
      return executionOptions_ != null;
    }
    /**
     * <pre>
     * Options that affect how XLA compiles and runs code to service this request.
     * </pre>
     *
     * <code>.xla.ExecutionOptions execution_options = 3;</code>
     */
    public xla.Xla.ExecutionOptions getExecutionOptions() {
      return executionOptions_ == null ? xla.Xla.ExecutionOptions.getDefaultInstance() : executionOptions_;
    }
    /**
     * <pre>
     * Options that affect how XLA compiles and runs code to service this request.
     * </pre>
     *
     * <code>.xla.ExecutionOptions execution_options = 3;</code>
     */
    public xla.Xla.ExecutionOptionsOrBuilder getExecutionOptionsOrBuilder() {
      return getExecutionOptions();
    }

    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 (computation_ != null) {
        output.writeMessage(1, getComputation());
      }
      for (int i = 0; i < arguments_.size(); i++) {
        output.writeMessage(2, arguments_.get(i));
      }
      if (executionOptions_ != null) {
        output.writeMessage(3, getExecutionOptions());
      }
    }

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

      size = 0;
      if (computation_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getComputation());
      }
      for (int i = 0; i < arguments_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, arguments_.get(i));
      }
      if (executionOptions_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getExecutionOptions());
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof xla.Xla.ExecuteGraphRequest)) {
        return super.equals(obj);
      }
      xla.Xla.ExecuteGraphRequest other = (xla.Xla.ExecuteGraphRequest) obj;

      boolean result = true;
      result = result && (hasComputation() == other.hasComputation());
      if (hasComputation()) {
        result = result && getComputation()
            .equals(other.getComputation());
      }
      result = result && getArgumentsList()
          .equals(other.getArgumentsList());
      result = result && (hasExecutionOptions() == other.hasExecutionOptions());
      if (hasExecutionOptions()) {
        result = result && getExecutionOptions()
            .equals(other.getExecutionOptions());
      }
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasComputation()) {
        hash = (37 * hash) + COMPUTATION_FIELD_NUMBER;
        hash = (53 * hash) + getComputation().hashCode();
      }
      if (getArgumentsCount() > 0) {
        hash = (37 * hash) + ARGUMENTS_FIELD_NUMBER;
        hash = (53 * hash) + getArgumentsList().hashCode();
      }
      if (hasExecutionOptions()) {
        hash = (37 * hash) + EXECUTION_OPTIONS_FIELD_NUMBER;
        hash = (53 * hash) + getExecutionOptions().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static xla.Xla.ExecuteGraphRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.ExecuteGraphRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.ExecuteGraphRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.ExecuteGraphRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.ExecuteGraphRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.ExecuteGraphRequest 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 xla.Xla.ExecuteGraphRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static xla.Xla.ExecuteGraphRequest 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 xla.Xla.ExecuteGraphRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.ExecuteGraphRequest 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(xla.Xla.ExecuteGraphRequest 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 xla.ExecuteGraphRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:xla.ExecuteGraphRequest)
        xla.Xla.ExecuteGraphRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return xla.Xla.internal_static_xla_ExecuteGraphRequest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return xla.Xla.internal_static_xla_ExecuteGraphRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                xla.Xla.ExecuteGraphRequest.class, xla.Xla.ExecuteGraphRequest.Builder.class);
      }

      // Construct using xla.Xla.ExecuteGraphRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getArgumentsFieldBuilder();
        }
      }
      public Builder clear() {
        super.clear();
        if (computationBuilder_ == null) {
          computation_ = null;
        } else {
          computation_ = null;
          computationBuilder_ = null;
        }
        if (argumentsBuilder_ == null) {
          arguments_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
        } else {
          argumentsBuilder_.clear();
        }
        if (executionOptionsBuilder_ == null) {
          executionOptions_ = null;
        } else {
          executionOptions_ = null;
          executionOptionsBuilder_ = null;
        }
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return xla.Xla.internal_static_xla_ExecuteGraphRequest_descriptor;
      }

      public xla.Xla.ExecuteGraphRequest getDefaultInstanceForType() {
        return xla.Xla.ExecuteGraphRequest.getDefaultInstance();
      }

      public xla.Xla.ExecuteGraphRequest build() {
        xla.Xla.ExecuteGraphRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public xla.Xla.ExecuteGraphRequest buildPartial() {
        xla.Xla.ExecuteGraphRequest result = new xla.Xla.ExecuteGraphRequest(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (computationBuilder_ == null) {
          result.computation_ = computation_;
        } else {
          result.computation_ = computationBuilder_.build();
        }
        if (argumentsBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            arguments_ = java.util.Collections.unmodifiableList(arguments_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.arguments_ = arguments_;
        } else {
          result.arguments_ = argumentsBuilder_.build();
        }
        if (executionOptionsBuilder_ == null) {
          result.executionOptions_ = executionOptions_;
        } else {
          result.executionOptions_ = executionOptionsBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof xla.Xla.ExecuteGraphRequest) {
          return mergeFrom((xla.Xla.ExecuteGraphRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(xla.Xla.ExecuteGraphRequest other) {
        if (other == xla.Xla.ExecuteGraphRequest.getDefaultInstance()) return this;
        if (other.hasComputation()) {
          mergeComputation(other.getComputation());
        }
        if (argumentsBuilder_ == null) {
          if (!other.arguments_.isEmpty()) {
            if (arguments_.isEmpty()) {
              arguments_ = other.arguments_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureArgumentsIsMutable();
              arguments_.addAll(other.arguments_);
            }
            onChanged();
          }
        } else {
          if (!other.arguments_.isEmpty()) {
            if (argumentsBuilder_.isEmpty()) {
              argumentsBuilder_.dispose();
              argumentsBuilder_ = null;
              arguments_ = other.arguments_;
              bitField0_ = (bitField0_ & ~0x00000002);
              argumentsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getArgumentsFieldBuilder() : null;
            } else {
              argumentsBuilder_.addAllMessages(other.arguments_);
            }
          }
        }
        if (other.hasExecutionOptions()) {
          mergeExecutionOptions(other.getExecutionOptions());
        }
        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 {
        xla.Xla.ExecuteGraphRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (xla.Xla.ExecuteGraphRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private xla.Hlo.HloModuleProto computation_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.Hlo.HloModuleProto, xla.Hlo.HloModuleProto.Builder, xla.Hlo.HloModuleProtoOrBuilder> computationBuilder_;
      /**
       * <code>.xla.HloModuleProto computation = 1;</code>
       */
      public boolean hasComputation() {
        return computationBuilder_ != null || computation_ != null;
      }
      /**
       * <code>.xla.HloModuleProto computation = 1;</code>
       */
      public xla.Hlo.HloModuleProto getComputation() {
        if (computationBuilder_ == null) {
          return computation_ == null ? xla.Hlo.HloModuleProto.getDefaultInstance() : computation_;
        } else {
          return computationBuilder_.getMessage();
        }
      }
      /**
       * <code>.xla.HloModuleProto computation = 1;</code>
       */
      public Builder setComputation(xla.Hlo.HloModuleProto value) {
        if (computationBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          computation_ = value;
          onChanged();
        } else {
          computationBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.xla.HloModuleProto computation = 1;</code>
       */
      public Builder setComputation(
          xla.Hlo.HloModuleProto.Builder builderForValue) {
        if (computationBuilder_ == null) {
          computation_ = builderForValue.build();
          onChanged();
        } else {
          computationBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.xla.HloModuleProto computation = 1;</code>
       */
      public Builder mergeComputation(xla.Hlo.HloModuleProto value) {
        if (computationBuilder_ == null) {
          if (computation_ != null) {
            computation_ =
              xla.Hlo.HloModuleProto.newBuilder(computation_).mergeFrom(value).buildPartial();
          } else {
            computation_ = value;
          }
          onChanged();
        } else {
          computationBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.xla.HloModuleProto computation = 1;</code>
       */
      public Builder clearComputation() {
        if (computationBuilder_ == null) {
          computation_ = null;
          onChanged();
        } else {
          computation_ = null;
          computationBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.xla.HloModuleProto computation = 1;</code>
       */
      public xla.Hlo.HloModuleProto.Builder getComputationBuilder() {
        
        onChanged();
        return getComputationFieldBuilder().getBuilder();
      }
      /**
       * <code>.xla.HloModuleProto computation = 1;</code>
       */
      public xla.Hlo.HloModuleProtoOrBuilder getComputationOrBuilder() {
        if (computationBuilder_ != null) {
          return computationBuilder_.getMessageOrBuilder();
        } else {
          return computation_ == null ?
              xla.Hlo.HloModuleProto.getDefaultInstance() : computation_;
        }
      }
      /**
       * <code>.xla.HloModuleProto computation = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.Hlo.HloModuleProto, xla.Hlo.HloModuleProto.Builder, xla.Hlo.HloModuleProtoOrBuilder> 
          getComputationFieldBuilder() {
        if (computationBuilder_ == null) {
          computationBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              xla.Hlo.HloModuleProto, xla.Hlo.HloModuleProto.Builder, xla.Hlo.HloModuleProtoOrBuilder>(
                  getComputation(),
                  getParentForChildren(),
                  isClean());
          computation_ = null;
        }
        return computationBuilder_;
      }

      private java.util.List<xla.XlaData.GlobalDataHandle> arguments_ =
        java.util.Collections.emptyList();
      private void ensureArgumentsIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          arguments_ = new java.util.ArrayList<xla.XlaData.GlobalDataHandle>(arguments_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          xla.XlaData.GlobalDataHandle, xla.XlaData.GlobalDataHandle.Builder, xla.XlaData.GlobalDataHandleOrBuilder> argumentsBuilder_;

      /**
       * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
       */
      public java.util.List<xla.XlaData.GlobalDataHandle> getArgumentsList() {
        if (argumentsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(arguments_);
        } else {
          return argumentsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
       */
      public int getArgumentsCount() {
        if (argumentsBuilder_ == null) {
          return arguments_.size();
        } else {
          return argumentsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
       */
      public xla.XlaData.GlobalDataHandle getArguments(int index) {
        if (argumentsBuilder_ == null) {
          return arguments_.get(index);
        } else {
          return argumentsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
       */
      public Builder setArguments(
          int index, xla.XlaData.GlobalDataHandle value) {
        if (argumentsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureArgumentsIsMutable();
          arguments_.set(index, value);
          onChanged();
        } else {
          argumentsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
       */
      public Builder setArguments(
          int index, xla.XlaData.GlobalDataHandle.Builder builderForValue) {
        if (argumentsBuilder_ == null) {
          ensureArgumentsIsMutable();
          arguments_.set(index, builderForValue.build());
          onChanged();
        } else {
          argumentsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
       */
      public Builder addArguments(xla.XlaData.GlobalDataHandle value) {
        if (argumentsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureArgumentsIsMutable();
          arguments_.add(value);
          onChanged();
        } else {
          argumentsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
       */
      public Builder addArguments(
          int index, xla.XlaData.GlobalDataHandle value) {
        if (argumentsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureArgumentsIsMutable();
          arguments_.add(index, value);
          onChanged();
        } else {
          argumentsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
       */
      public Builder addArguments(
          xla.XlaData.GlobalDataHandle.Builder builderForValue) {
        if (argumentsBuilder_ == null) {
          ensureArgumentsIsMutable();
          arguments_.add(builderForValue.build());
          onChanged();
        } else {
          argumentsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
       */
      public Builder addArguments(
          int index, xla.XlaData.GlobalDataHandle.Builder builderForValue) {
        if (argumentsBuilder_ == null) {
          ensureArgumentsIsMutable();
          arguments_.add(index, builderForValue.build());
          onChanged();
        } else {
          argumentsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
       */
      public Builder addAllArguments(
          java.lang.Iterable<? extends xla.XlaData.GlobalDataHandle> values) {
        if (argumentsBuilder_ == null) {
          ensureArgumentsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, arguments_);
          onChanged();
        } else {
          argumentsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
       */
      public Builder clearArguments() {
        if (argumentsBuilder_ == null) {
          arguments_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          argumentsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
       */
      public Builder removeArguments(int index) {
        if (argumentsBuilder_ == null) {
          ensureArgumentsIsMutable();
          arguments_.remove(index);
          onChanged();
        } else {
          argumentsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
       */
      public xla.XlaData.GlobalDataHandle.Builder getArgumentsBuilder(
          int index) {
        return getArgumentsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
       */
      public xla.XlaData.GlobalDataHandleOrBuilder getArgumentsOrBuilder(
          int index) {
        if (argumentsBuilder_ == null) {
          return arguments_.get(index);  } else {
          return argumentsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
       */
      public java.util.List<? extends xla.XlaData.GlobalDataHandleOrBuilder> 
           getArgumentsOrBuilderList() {
        if (argumentsBuilder_ != null) {
          return argumentsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(arguments_);
        }
      }
      /**
       * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
       */
      public xla.XlaData.GlobalDataHandle.Builder addArgumentsBuilder() {
        return getArgumentsFieldBuilder().addBuilder(
            xla.XlaData.GlobalDataHandle.getDefaultInstance());
      }
      /**
       * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
       */
      public xla.XlaData.GlobalDataHandle.Builder addArgumentsBuilder(
          int index) {
        return getArgumentsFieldBuilder().addBuilder(
            index, xla.XlaData.GlobalDataHandle.getDefaultInstance());
      }
      /**
       * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
       */
      public java.util.List<xla.XlaData.GlobalDataHandle.Builder> 
           getArgumentsBuilderList() {
        return getArgumentsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          xla.XlaData.GlobalDataHandle, xla.XlaData.GlobalDataHandle.Builder, xla.XlaData.GlobalDataHandleOrBuilder> 
          getArgumentsFieldBuilder() {
        if (argumentsBuilder_ == null) {
          argumentsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              xla.XlaData.GlobalDataHandle, xla.XlaData.GlobalDataHandle.Builder, xla.XlaData.GlobalDataHandleOrBuilder>(
                  arguments_,
                  ((bitField0_ & 0x00000002) == 0x00000002),
                  getParentForChildren(),
                  isClean());
          arguments_ = null;
        }
        return argumentsBuilder_;
      }

      private xla.Xla.ExecutionOptions executionOptions_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.Xla.ExecutionOptions, xla.Xla.ExecutionOptions.Builder, xla.Xla.ExecutionOptionsOrBuilder> executionOptionsBuilder_;
      /**
       * <pre>
       * Options that affect how XLA compiles and runs code to service this request.
       * </pre>
       *
       * <code>.xla.ExecutionOptions execution_options = 3;</code>
       */
      public boolean hasExecutionOptions() {
        return executionOptionsBuilder_ != null || executionOptions_ != null;
      }
      /**
       * <pre>
       * Options that affect how XLA compiles and runs code to service this request.
       * </pre>
       *
       * <code>.xla.ExecutionOptions execution_options = 3;</code>
       */
      public xla.Xla.ExecutionOptions getExecutionOptions() {
        if (executionOptionsBuilder_ == null) {
          return executionOptions_ == null ? xla.Xla.ExecutionOptions.getDefaultInstance() : executionOptions_;
        } else {
          return executionOptionsBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Options that affect how XLA compiles and runs code to service this request.
       * </pre>
       *
       * <code>.xla.ExecutionOptions execution_options = 3;</code>
       */
      public Builder setExecutionOptions(xla.Xla.ExecutionOptions value) {
        if (executionOptionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          executionOptions_ = value;
          onChanged();
        } else {
          executionOptionsBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       * Options that affect how XLA compiles and runs code to service this request.
       * </pre>
       *
       * <code>.xla.ExecutionOptions execution_options = 3;</code>
       */
      public Builder setExecutionOptions(
          xla.Xla.ExecutionOptions.Builder builderForValue) {
        if (executionOptionsBuilder_ == null) {
          executionOptions_ = builderForValue.build();
          onChanged();
        } else {
          executionOptionsBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       * Options that affect how XLA compiles and runs code to service this request.
       * </pre>
       *
       * <code>.xla.ExecutionOptions execution_options = 3;</code>
       */
      public Builder mergeExecutionOptions(xla.Xla.ExecutionOptions value) {
        if (executionOptionsBuilder_ == null) {
          if (executionOptions_ != null) {
            executionOptions_ =
              xla.Xla.ExecutionOptions.newBuilder(executionOptions_).mergeFrom(value).buildPartial();
          } else {
            executionOptions_ = value;
          }
          onChanged();
        } else {
          executionOptionsBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       * Options that affect how XLA compiles and runs code to service this request.
       * </pre>
       *
       * <code>.xla.ExecutionOptions execution_options = 3;</code>
       */
      public Builder clearExecutionOptions() {
        if (executionOptionsBuilder_ == null) {
          executionOptions_ = null;
          onChanged();
        } else {
          executionOptions_ = null;
          executionOptionsBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       * Options that affect how XLA compiles and runs code to service this request.
       * </pre>
       *
       * <code>.xla.ExecutionOptions execution_options = 3;</code>
       */
      public xla.Xla.ExecutionOptions.Builder getExecutionOptionsBuilder() {
        
        onChanged();
        return getExecutionOptionsFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Options that affect how XLA compiles and runs code to service this request.
       * </pre>
       *
       * <code>.xla.ExecutionOptions execution_options = 3;</code>
       */
      public xla.Xla.ExecutionOptionsOrBuilder getExecutionOptionsOrBuilder() {
        if (executionOptionsBuilder_ != null) {
          return executionOptionsBuilder_.getMessageOrBuilder();
        } else {
          return executionOptions_ == null ?
              xla.Xla.ExecutionOptions.getDefaultInstance() : executionOptions_;
        }
      }
      /**
       * <pre>
       * Options that affect how XLA compiles and runs code to service this request.
       * </pre>
       *
       * <code>.xla.ExecutionOptions execution_options = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.Xla.ExecutionOptions, xla.Xla.ExecutionOptions.Builder, xla.Xla.ExecutionOptionsOrBuilder> 
          getExecutionOptionsFieldBuilder() {
        if (executionOptionsBuilder_ == null) {
          executionOptionsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              xla.Xla.ExecutionOptions, xla.Xla.ExecutionOptions.Builder, xla.Xla.ExecutionOptionsOrBuilder>(
                  getExecutionOptions(),
                  getParentForChildren(),
                  isClean());
          executionOptions_ = null;
        }
        return executionOptionsBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

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


      // @@protoc_insertion_point(builder_scope:xla.ExecuteGraphRequest)
    }

    // @@protoc_insertion_point(class_scope:xla.ExecuteGraphRequest)
    private static final xla.Xla.ExecuteGraphRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new xla.Xla.ExecuteGraphRequest();
    }

    public static xla.Xla.ExecuteGraphRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public xla.Xla.ExecuteGraphRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ExecuteParallelRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:xla.ExecuteParallelRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated .xla.ExecuteRequest requests = 1;</code>
     */
    java.util.List<xla.Xla.ExecuteRequest> 
        getRequestsList();
    /**
     * <code>repeated .xla.ExecuteRequest requests = 1;</code>
     */
    xla.Xla.ExecuteRequest getRequests(int index);
    /**
     * <code>repeated .xla.ExecuteRequest requests = 1;</code>
     */
    int getRequestsCount();
    /**
     * <code>repeated .xla.ExecuteRequest requests = 1;</code>
     */
    java.util.List<? extends xla.Xla.ExecuteRequestOrBuilder> 
        getRequestsOrBuilderList();
    /**
     * <code>repeated .xla.ExecuteRequest requests = 1;</code>
     */
    xla.Xla.ExecuteRequestOrBuilder getRequestsOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code xla.ExecuteParallelRequest}
   */
  public  static final class ExecuteParallelRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:xla.ExecuteParallelRequest)
      ExecuteParallelRequestOrBuilder {
    // Use ExecuteParallelRequest.newBuilder() to construct.
    private ExecuteParallelRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ExecuteParallelRequest() {
      requests_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private ExecuteParallelRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                requests_ = new java.util.ArrayList<xla.Xla.ExecuteRequest>();
                mutable_bitField0_ |= 0x00000001;
              }
              requests_.add(
                  input.readMessage(xla.Xla.ExecuteRequest.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)) {
          requests_ = java.util.Collections.unmodifiableList(requests_);
        }
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return xla.Xla.internal_static_xla_ExecuteParallelRequest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return xla.Xla.internal_static_xla_ExecuteParallelRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              xla.Xla.ExecuteParallelRequest.class, xla.Xla.ExecuteParallelRequest.Builder.class);
    }

    public static final int REQUESTS_FIELD_NUMBER = 1;
    private java.util.List<xla.Xla.ExecuteRequest> requests_;
    /**
     * <code>repeated .xla.ExecuteRequest requests = 1;</code>
     */
    public java.util.List<xla.Xla.ExecuteRequest> getRequestsList() {
      return requests_;
    }
    /**
     * <code>repeated .xla.ExecuteRequest requests = 1;</code>
     */
    public java.util.List<? extends xla.Xla.ExecuteRequestOrBuilder> 
        getRequestsOrBuilderList() {
      return requests_;
    }
    /**
     * <code>repeated .xla.ExecuteRequest requests = 1;</code>
     */
    public int getRequestsCount() {
      return requests_.size();
    }
    /**
     * <code>repeated .xla.ExecuteRequest requests = 1;</code>
     */
    public xla.Xla.ExecuteRequest getRequests(int index) {
      return requests_.get(index);
    }
    /**
     * <code>repeated .xla.ExecuteRequest requests = 1;</code>
     */
    public xla.Xla.ExecuteRequestOrBuilder getRequestsOrBuilder(
        int index) {
      return requests_.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 < requests_.size(); i++) {
        output.writeMessage(1, requests_.get(i));
      }
    }

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

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

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof xla.Xla.ExecuteParallelRequest)) {
        return super.equals(obj);
      }
      xla.Xla.ExecuteParallelRequest other = (xla.Xla.ExecuteParallelRequest) obj;

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

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

    public static xla.Xla.ExecuteParallelRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.ExecuteParallelRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.ExecuteParallelRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.ExecuteParallelRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.ExecuteParallelRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.ExecuteParallelRequest 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 xla.Xla.ExecuteParallelRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static xla.Xla.ExecuteParallelRequest 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 xla.Xla.ExecuteParallelRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.ExecuteParallelRequest 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(xla.Xla.ExecuteParallelRequest 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 xla.ExecuteParallelRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:xla.ExecuteParallelRequest)
        xla.Xla.ExecuteParallelRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return xla.Xla.internal_static_xla_ExecuteParallelRequest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return xla.Xla.internal_static_xla_ExecuteParallelRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                xla.Xla.ExecuteParallelRequest.class, xla.Xla.ExecuteParallelRequest.Builder.class);
      }

      // Construct using xla.Xla.ExecuteParallelRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return xla.Xla.internal_static_xla_ExecuteParallelRequest_descriptor;
      }

      public xla.Xla.ExecuteParallelRequest getDefaultInstanceForType() {
        return xla.Xla.ExecuteParallelRequest.getDefaultInstance();
      }

      public xla.Xla.ExecuteParallelRequest build() {
        xla.Xla.ExecuteParallelRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public xla.Xla.ExecuteParallelRequest buildPartial() {
        xla.Xla.ExecuteParallelRequest result = new xla.Xla.ExecuteParallelRequest(this);
        int from_bitField0_ = bitField0_;
        if (requestsBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            requests_ = java.util.Collections.unmodifiableList(requests_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.requests_ = requests_;
        } else {
          result.requests_ = requestsBuilder_.build();
        }
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof xla.Xla.ExecuteParallelRequest) {
          return mergeFrom((xla.Xla.ExecuteParallelRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(xla.Xla.ExecuteParallelRequest other) {
        if (other == xla.Xla.ExecuteParallelRequest.getDefaultInstance()) return this;
        if (requestsBuilder_ == null) {
          if (!other.requests_.isEmpty()) {
            if (requests_.isEmpty()) {
              requests_ = other.requests_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureRequestsIsMutable();
              requests_.addAll(other.requests_);
            }
            onChanged();
          }
        } else {
          if (!other.requests_.isEmpty()) {
            if (requestsBuilder_.isEmpty()) {
              requestsBuilder_.dispose();
              requestsBuilder_ = null;
              requests_ = other.requests_;
              bitField0_ = (bitField0_ & ~0x00000001);
              requestsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getRequestsFieldBuilder() : null;
            } else {
              requestsBuilder_.addAllMessages(other.requests_);
            }
          }
        }
        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 {
        xla.Xla.ExecuteParallelRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (xla.Xla.ExecuteParallelRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.util.List<xla.Xla.ExecuteRequest> requests_ =
        java.util.Collections.emptyList();
      private void ensureRequestsIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          requests_ = new java.util.ArrayList<xla.Xla.ExecuteRequest>(requests_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          xla.Xla.ExecuteRequest, xla.Xla.ExecuteRequest.Builder, xla.Xla.ExecuteRequestOrBuilder> requestsBuilder_;

      /**
       * <code>repeated .xla.ExecuteRequest requests = 1;</code>
       */
      public java.util.List<xla.Xla.ExecuteRequest> getRequestsList() {
        if (requestsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(requests_);
        } else {
          return requestsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .xla.ExecuteRequest requests = 1;</code>
       */
      public int getRequestsCount() {
        if (requestsBuilder_ == null) {
          return requests_.size();
        } else {
          return requestsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .xla.ExecuteRequest requests = 1;</code>
       */
      public xla.Xla.ExecuteRequest getRequests(int index) {
        if (requestsBuilder_ == null) {
          return requests_.get(index);
        } else {
          return requestsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .xla.ExecuteRequest requests = 1;</code>
       */
      public Builder setRequests(
          int index, xla.Xla.ExecuteRequest value) {
        if (requestsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureRequestsIsMutable();
          requests_.set(index, value);
          onChanged();
        } else {
          requestsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .xla.ExecuteRequest requests = 1;</code>
       */
      public Builder setRequests(
          int index, xla.Xla.ExecuteRequest.Builder builderForValue) {
        if (requestsBuilder_ == null) {
          ensureRequestsIsMutable();
          requests_.set(index, builderForValue.build());
          onChanged();
        } else {
          requestsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .xla.ExecuteRequest requests = 1;</code>
       */
      public Builder addRequests(xla.Xla.ExecuteRequest value) {
        if (requestsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureRequestsIsMutable();
          requests_.add(value);
          onChanged();
        } else {
          requestsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .xla.ExecuteRequest requests = 1;</code>
       */
      public Builder addRequests(
          int index, xla.Xla.ExecuteRequest value) {
        if (requestsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureRequestsIsMutable();
          requests_.add(index, value);
          onChanged();
        } else {
          requestsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .xla.ExecuteRequest requests = 1;</code>
       */
      public Builder addRequests(
          xla.Xla.ExecuteRequest.Builder builderForValue) {
        if (requestsBuilder_ == null) {
          ensureRequestsIsMutable();
          requests_.add(builderForValue.build());
          onChanged();
        } else {
          requestsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .xla.ExecuteRequest requests = 1;</code>
       */
      public Builder addRequests(
          int index, xla.Xla.ExecuteRequest.Builder builderForValue) {
        if (requestsBuilder_ == null) {
          ensureRequestsIsMutable();
          requests_.add(index, builderForValue.build());
          onChanged();
        } else {
          requestsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .xla.ExecuteRequest requests = 1;</code>
       */
      public Builder addAllRequests(
          java.lang.Iterable<? extends xla.Xla.ExecuteRequest> values) {
        if (requestsBuilder_ == null) {
          ensureRequestsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, requests_);
          onChanged();
        } else {
          requestsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .xla.ExecuteRequest requests = 1;</code>
       */
      public Builder clearRequests() {
        if (requestsBuilder_ == null) {
          requests_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          requestsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .xla.ExecuteRequest requests = 1;</code>
       */
      public Builder removeRequests(int index) {
        if (requestsBuilder_ == null) {
          ensureRequestsIsMutable();
          requests_.remove(index);
          onChanged();
        } else {
          requestsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .xla.ExecuteRequest requests = 1;</code>
       */
      public xla.Xla.ExecuteRequest.Builder getRequestsBuilder(
          int index) {
        return getRequestsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .xla.ExecuteRequest requests = 1;</code>
       */
      public xla.Xla.ExecuteRequestOrBuilder getRequestsOrBuilder(
          int index) {
        if (requestsBuilder_ == null) {
          return requests_.get(index);  } else {
          return requestsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .xla.ExecuteRequest requests = 1;</code>
       */
      public java.util.List<? extends xla.Xla.ExecuteRequestOrBuilder> 
           getRequestsOrBuilderList() {
        if (requestsBuilder_ != null) {
          return requestsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(requests_);
        }
      }
      /**
       * <code>repeated .xla.ExecuteRequest requests = 1;</code>
       */
      public xla.Xla.ExecuteRequest.Builder addRequestsBuilder() {
        return getRequestsFieldBuilder().addBuilder(
            xla.Xla.ExecuteRequest.getDefaultInstance());
      }
      /**
       * <code>repeated .xla.ExecuteRequest requests = 1;</code>
       */
      public xla.Xla.ExecuteRequest.Builder addRequestsBuilder(
          int index) {
        return getRequestsFieldBuilder().addBuilder(
            index, xla.Xla.ExecuteRequest.getDefaultInstance());
      }
      /**
       * <code>repeated .xla.ExecuteRequest requests = 1;</code>
       */
      public java.util.List<xla.Xla.ExecuteRequest.Builder> 
           getRequestsBuilderList() {
        return getRequestsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          xla.Xla.ExecuteRequest, xla.Xla.ExecuteRequest.Builder, xla.Xla.ExecuteRequestOrBuilder> 
          getRequestsFieldBuilder() {
        if (requestsBuilder_ == null) {
          requestsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              xla.Xla.ExecuteRequest, xla.Xla.ExecuteRequest.Builder, xla.Xla.ExecuteRequestOrBuilder>(
                  requests_,
                  ((bitField0_ & 0x00000001) == 0x00000001),
                  getParentForChildren(),
                  isClean());
          requests_ = null;
        }
        return requestsBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

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


      // @@protoc_insertion_point(builder_scope:xla.ExecuteParallelRequest)
    }

    // @@protoc_insertion_point(class_scope:xla.ExecuteParallelRequest)
    private static final xla.Xla.ExecuteParallelRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new xla.Xla.ExecuteParallelRequest();
    }

    public static xla.Xla.ExecuteParallelRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public xla.Xla.ExecuteParallelRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ExecuteGraphParallelRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:xla.ExecuteGraphParallelRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated .xla.ExecuteGraphRequest requests = 1;</code>
     */
    java.util.List<xla.Xla.ExecuteGraphRequest> 
        getRequestsList();
    /**
     * <code>repeated .xla.ExecuteGraphRequest requests = 1;</code>
     */
    xla.Xla.ExecuteGraphRequest getRequests(int index);
    /**
     * <code>repeated .xla.ExecuteGraphRequest requests = 1;</code>
     */
    int getRequestsCount();
    /**
     * <code>repeated .xla.ExecuteGraphRequest requests = 1;</code>
     */
    java.util.List<? extends xla.Xla.ExecuteGraphRequestOrBuilder> 
        getRequestsOrBuilderList();
    /**
     * <code>repeated .xla.ExecuteGraphRequest requests = 1;</code>
     */
    xla.Xla.ExecuteGraphRequestOrBuilder getRequestsOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code xla.ExecuteGraphParallelRequest}
   */
  public  static final class ExecuteGraphParallelRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:xla.ExecuteGraphParallelRequest)
      ExecuteGraphParallelRequestOrBuilder {
    // Use ExecuteGraphParallelRequest.newBuilder() to construct.
    private ExecuteGraphParallelRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ExecuteGraphParallelRequest() {
      requests_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private ExecuteGraphParallelRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                requests_ = new java.util.ArrayList<xla.Xla.ExecuteGraphRequest>();
                mutable_bitField0_ |= 0x00000001;
              }
              requests_.add(
                  input.readMessage(xla.Xla.ExecuteGraphRequest.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)) {
          requests_ = java.util.Collections.unmodifiableList(requests_);
        }
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return xla.Xla.internal_static_xla_ExecuteGraphParallelRequest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return xla.Xla.internal_static_xla_ExecuteGraphParallelRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              xla.Xla.ExecuteGraphParallelRequest.class, xla.Xla.ExecuteGraphParallelRequest.Builder.class);
    }

    public static final int REQUESTS_FIELD_NUMBER = 1;
    private java.util.List<xla.Xla.ExecuteGraphRequest> requests_;
    /**
     * <code>repeated .xla.ExecuteGraphRequest requests = 1;</code>
     */
    public java.util.List<xla.Xla.ExecuteGraphRequest> getRequestsList() {
      return requests_;
    }
    /**
     * <code>repeated .xla.ExecuteGraphRequest requests = 1;</code>
     */
    public java.util.List<? extends xla.Xla.ExecuteGraphRequestOrBuilder> 
        getRequestsOrBuilderList() {
      return requests_;
    }
    /**
     * <code>repeated .xla.ExecuteGraphRequest requests = 1;</code>
     */
    public int getRequestsCount() {
      return requests_.size();
    }
    /**
     * <code>repeated .xla.ExecuteGraphRequest requests = 1;</code>
     */
    public xla.Xla.ExecuteGraphRequest getRequests(int index) {
      return requests_.get(index);
    }
    /**
     * <code>repeated .xla.ExecuteGraphRequest requests = 1;</code>
     */
    public xla.Xla.ExecuteGraphRequestOrBuilder getRequestsOrBuilder(
        int index) {
      return requests_.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 < requests_.size(); i++) {
        output.writeMessage(1, requests_.get(i));
      }
    }

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

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

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof xla.Xla.ExecuteGraphParallelRequest)) {
        return super.equals(obj);
      }
      xla.Xla.ExecuteGraphParallelRequest other = (xla.Xla.ExecuteGraphParallelRequest) obj;

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

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

    public static xla.Xla.ExecuteGraphParallelRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.ExecuteGraphParallelRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.ExecuteGraphParallelRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.ExecuteGraphParallelRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.ExecuteGraphParallelRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.ExecuteGraphParallelRequest 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 xla.Xla.ExecuteGraphParallelRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static xla.Xla.ExecuteGraphParallelRequest 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 xla.Xla.ExecuteGraphParallelRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.ExecuteGraphParallelRequest 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(xla.Xla.ExecuteGraphParallelRequest 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 xla.ExecuteGraphParallelRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:xla.ExecuteGraphParallelRequest)
        xla.Xla.ExecuteGraphParallelRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return xla.Xla.internal_static_xla_ExecuteGraphParallelRequest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return xla.Xla.internal_static_xla_ExecuteGraphParallelRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                xla.Xla.ExecuteGraphParallelRequest.class, xla.Xla.ExecuteGraphParallelRequest.Builder.class);
      }

      // Construct using xla.Xla.ExecuteGraphParallelRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return xla.Xla.internal_static_xla_ExecuteGraphParallelRequest_descriptor;
      }

      public xla.Xla.ExecuteGraphParallelRequest getDefaultInstanceForType() {
        return xla.Xla.ExecuteGraphParallelRequest.getDefaultInstance();
      }

      public xla.Xla.ExecuteGraphParallelRequest build() {
        xla.Xla.ExecuteGraphParallelRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public xla.Xla.ExecuteGraphParallelRequest buildPartial() {
        xla.Xla.ExecuteGraphParallelRequest result = new xla.Xla.ExecuteGraphParallelRequest(this);
        int from_bitField0_ = bitField0_;
        if (requestsBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            requests_ = java.util.Collections.unmodifiableList(requests_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.requests_ = requests_;
        } else {
          result.requests_ = requestsBuilder_.build();
        }
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof xla.Xla.ExecuteGraphParallelRequest) {
          return mergeFrom((xla.Xla.ExecuteGraphParallelRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(xla.Xla.ExecuteGraphParallelRequest other) {
        if (other == xla.Xla.ExecuteGraphParallelRequest.getDefaultInstance()) return this;
        if (requestsBuilder_ == null) {
          if (!other.requests_.isEmpty()) {
            if (requests_.isEmpty()) {
              requests_ = other.requests_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureRequestsIsMutable();
              requests_.addAll(other.requests_);
            }
            onChanged();
          }
        } else {
          if (!other.requests_.isEmpty()) {
            if (requestsBuilder_.isEmpty()) {
              requestsBuilder_.dispose();
              requestsBuilder_ = null;
              requests_ = other.requests_;
              bitField0_ = (bitField0_ & ~0x00000001);
              requestsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getRequestsFieldBuilder() : null;
            } else {
              requestsBuilder_.addAllMessages(other.requests_);
            }
          }
        }
        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 {
        xla.Xla.ExecuteGraphParallelRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (xla.Xla.ExecuteGraphParallelRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.util.List<xla.Xla.ExecuteGraphRequest> requests_ =
        java.util.Collections.emptyList();
      private void ensureRequestsIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          requests_ = new java.util.ArrayList<xla.Xla.ExecuteGraphRequest>(requests_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          xla.Xla.ExecuteGraphRequest, xla.Xla.ExecuteGraphRequest.Builder, xla.Xla.ExecuteGraphRequestOrBuilder> requestsBuilder_;

      /**
       * <code>repeated .xla.ExecuteGraphRequest requests = 1;</code>
       */
      public java.util.List<xla.Xla.ExecuteGraphRequest> getRequestsList() {
        if (requestsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(requests_);
        } else {
          return requestsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .xla.ExecuteGraphRequest requests = 1;</code>
       */
      public int getRequestsCount() {
        if (requestsBuilder_ == null) {
          return requests_.size();
        } else {
          return requestsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .xla.ExecuteGraphRequest requests = 1;</code>
       */
      public xla.Xla.ExecuteGraphRequest getRequests(int index) {
        if (requestsBuilder_ == null) {
          return requests_.get(index);
        } else {
          return requestsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .xla.ExecuteGraphRequest requests = 1;</code>
       */
      public Builder setRequests(
          int index, xla.Xla.ExecuteGraphRequest value) {
        if (requestsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureRequestsIsMutable();
          requests_.set(index, value);
          onChanged();
        } else {
          requestsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .xla.ExecuteGraphRequest requests = 1;</code>
       */
      public Builder setRequests(
          int index, xla.Xla.ExecuteGraphRequest.Builder builderForValue) {
        if (requestsBuilder_ == null) {
          ensureRequestsIsMutable();
          requests_.set(index, builderForValue.build());
          onChanged();
        } else {
          requestsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .xla.ExecuteGraphRequest requests = 1;</code>
       */
      public Builder addRequests(xla.Xla.ExecuteGraphRequest value) {
        if (requestsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureRequestsIsMutable();
          requests_.add(value);
          onChanged();
        } else {
          requestsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .xla.ExecuteGraphRequest requests = 1;</code>
       */
      public Builder addRequests(
          int index, xla.Xla.ExecuteGraphRequest value) {
        if (requestsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureRequestsIsMutable();
          requests_.add(index, value);
          onChanged();
        } else {
          requestsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .xla.ExecuteGraphRequest requests = 1;</code>
       */
      public Builder addRequests(
          xla.Xla.ExecuteGraphRequest.Builder builderForValue) {
        if (requestsBuilder_ == null) {
          ensureRequestsIsMutable();
          requests_.add(builderForValue.build());
          onChanged();
        } else {
          requestsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .xla.ExecuteGraphRequest requests = 1;</code>
       */
      public Builder addRequests(
          int index, xla.Xla.ExecuteGraphRequest.Builder builderForValue) {
        if (requestsBuilder_ == null) {
          ensureRequestsIsMutable();
          requests_.add(index, builderForValue.build());
          onChanged();
        } else {
          requestsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .xla.ExecuteGraphRequest requests = 1;</code>
       */
      public Builder addAllRequests(
          java.lang.Iterable<? extends xla.Xla.ExecuteGraphRequest> values) {
        if (requestsBuilder_ == null) {
          ensureRequestsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, requests_);
          onChanged();
        } else {
          requestsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .xla.ExecuteGraphRequest requests = 1;</code>
       */
      public Builder clearRequests() {
        if (requestsBuilder_ == null) {
          requests_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          requestsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .xla.ExecuteGraphRequest requests = 1;</code>
       */
      public Builder removeRequests(int index) {
        if (requestsBuilder_ == null) {
          ensureRequestsIsMutable();
          requests_.remove(index);
          onChanged();
        } else {
          requestsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .xla.ExecuteGraphRequest requests = 1;</code>
       */
      public xla.Xla.ExecuteGraphRequest.Builder getRequestsBuilder(
          int index) {
        return getRequestsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .xla.ExecuteGraphRequest requests = 1;</code>
       */
      public xla.Xla.ExecuteGraphRequestOrBuilder getRequestsOrBuilder(
          int index) {
        if (requestsBuilder_ == null) {
          return requests_.get(index);  } else {
          return requestsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .xla.ExecuteGraphRequest requests = 1;</code>
       */
      public java.util.List<? extends xla.Xla.ExecuteGraphRequestOrBuilder> 
           getRequestsOrBuilderList() {
        if (requestsBuilder_ != null) {
          return requestsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(requests_);
        }
      }
      /**
       * <code>repeated .xla.ExecuteGraphRequest requests = 1;</code>
       */
      public xla.Xla.ExecuteGraphRequest.Builder addRequestsBuilder() {
        return getRequestsFieldBuilder().addBuilder(
            xla.Xla.ExecuteGraphRequest.getDefaultInstance());
      }
      /**
       * <code>repeated .xla.ExecuteGraphRequest requests = 1;</code>
       */
      public xla.Xla.ExecuteGraphRequest.Builder addRequestsBuilder(
          int index) {
        return getRequestsFieldBuilder().addBuilder(
            index, xla.Xla.ExecuteGraphRequest.getDefaultInstance());
      }
      /**
       * <code>repeated .xla.ExecuteGraphRequest requests = 1;</code>
       */
      public java.util.List<xla.Xla.ExecuteGraphRequest.Builder> 
           getRequestsBuilderList() {
        return getRequestsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          xla.Xla.ExecuteGraphRequest, xla.Xla.ExecuteGraphRequest.Builder, xla.Xla.ExecuteGraphRequestOrBuilder> 
          getRequestsFieldBuilder() {
        if (requestsBuilder_ == null) {
          requestsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              xla.Xla.ExecuteGraphRequest, xla.Xla.ExecuteGraphRequest.Builder, xla.Xla.ExecuteGraphRequestOrBuilder>(
                  requests_,
                  ((bitField0_ & 0x00000001) == 0x00000001),
                  getParentForChildren(),
                  isClean());
          requests_ = null;
        }
        return requestsBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

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


      // @@protoc_insertion_point(builder_scope:xla.ExecuteGraphParallelRequest)
    }

    // @@protoc_insertion_point(class_scope:xla.ExecuteGraphParallelRequest)
    private static final xla.Xla.ExecuteGraphParallelRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new xla.Xla.ExecuteGraphParallelRequest();
    }

    public static xla.Xla.ExecuteGraphParallelRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public xla.Xla.ExecuteGraphParallelRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ExecuteResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:xla.ExecuteResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.xla.GlobalDataHandle output = 1;</code>
     */
    boolean hasOutput();
    /**
     * <code>.xla.GlobalDataHandle output = 1;</code>
     */
    xla.XlaData.GlobalDataHandle getOutput();
    /**
     * <code>.xla.GlobalDataHandle output = 1;</code>
     */
    xla.XlaData.GlobalDataHandleOrBuilder getOutputOrBuilder();

    /**
     * <code>.xla.ExecutionProfile profile = 2;</code>
     */
    boolean hasProfile();
    /**
     * <code>.xla.ExecutionProfile profile = 2;</code>
     */
    xla.XlaData.ExecutionProfile getProfile();
    /**
     * <code>.xla.ExecutionProfile profile = 2;</code>
     */
    xla.XlaData.ExecutionProfileOrBuilder getProfileOrBuilder();
  }
  /**
   * Protobuf type {@code xla.ExecuteResponse}
   */
  public  static final class ExecuteResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:xla.ExecuteResponse)
      ExecuteResponseOrBuilder {
    // Use ExecuteResponse.newBuilder() to construct.
    private ExecuteResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ExecuteResponse() {
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private ExecuteResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              xla.XlaData.GlobalDataHandle.Builder subBuilder = null;
              if (output_ != null) {
                subBuilder = output_.toBuilder();
              }
              output_ = input.readMessage(xla.XlaData.GlobalDataHandle.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(output_);
                output_ = subBuilder.buildPartial();
              }

              break;
            }
            case 18: {
              xla.XlaData.ExecutionProfile.Builder subBuilder = null;
              if (profile_ != null) {
                subBuilder = profile_.toBuilder();
              }
              profile_ = input.readMessage(xla.XlaData.ExecutionProfile.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(profile_);
                profile_ = 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 {
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return xla.Xla.internal_static_xla_ExecuteResponse_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return xla.Xla.internal_static_xla_ExecuteResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              xla.Xla.ExecuteResponse.class, xla.Xla.ExecuteResponse.Builder.class);
    }

    public static final int OUTPUT_FIELD_NUMBER = 1;
    private xla.XlaData.GlobalDataHandle output_;
    /**
     * <code>.xla.GlobalDataHandle output = 1;</code>
     */
    public boolean hasOutput() {
      return output_ != null;
    }
    /**
     * <code>.xla.GlobalDataHandle output = 1;</code>
     */
    public xla.XlaData.GlobalDataHandle getOutput() {
      return output_ == null ? xla.XlaData.GlobalDataHandle.getDefaultInstance() : output_;
    }
    /**
     * <code>.xla.GlobalDataHandle output = 1;</code>
     */
    public xla.XlaData.GlobalDataHandleOrBuilder getOutputOrBuilder() {
      return getOutput();
    }

    public static final int PROFILE_FIELD_NUMBER = 2;
    private xla.XlaData.ExecutionProfile profile_;
    /**
     * <code>.xla.ExecutionProfile profile = 2;</code>
     */
    public boolean hasProfile() {
      return profile_ != null;
    }
    /**
     * <code>.xla.ExecutionProfile profile = 2;</code>
     */
    public xla.XlaData.ExecutionProfile getProfile() {
      return profile_ == null ? xla.XlaData.ExecutionProfile.getDefaultInstance() : profile_;
    }
    /**
     * <code>.xla.ExecutionProfile profile = 2;</code>
     */
    public xla.XlaData.ExecutionProfileOrBuilder getProfileOrBuilder() {
      return getProfile();
    }

    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 (output_ != null) {
        output.writeMessage(1, getOutput());
      }
      if (profile_ != null) {
        output.writeMessage(2, getProfile());
      }
    }

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

      size = 0;
      if (output_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getOutput());
      }
      if (profile_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getProfile());
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof xla.Xla.ExecuteResponse)) {
        return super.equals(obj);
      }
      xla.Xla.ExecuteResponse other = (xla.Xla.ExecuteResponse) obj;

      boolean result = true;
      result = result && (hasOutput() == other.hasOutput());
      if (hasOutput()) {
        result = result && getOutput()
            .equals(other.getOutput());
      }
      result = result && (hasProfile() == other.hasProfile());
      if (hasProfile()) {
        result = result && getProfile()
            .equals(other.getProfile());
      }
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasOutput()) {
        hash = (37 * hash) + OUTPUT_FIELD_NUMBER;
        hash = (53 * hash) + getOutput().hashCode();
      }
      if (hasProfile()) {
        hash = (37 * hash) + PROFILE_FIELD_NUMBER;
        hash = (53 * hash) + getProfile().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static xla.Xla.ExecuteResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.ExecuteResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.ExecuteResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.ExecuteResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.ExecuteResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.ExecuteResponse 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 xla.Xla.ExecuteResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static xla.Xla.ExecuteResponse 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 xla.Xla.ExecuteResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.ExecuteResponse 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(xla.Xla.ExecuteResponse 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 xla.ExecuteResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:xla.ExecuteResponse)
        xla.Xla.ExecuteResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return xla.Xla.internal_static_xla_ExecuteResponse_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return xla.Xla.internal_static_xla_ExecuteResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                xla.Xla.ExecuteResponse.class, xla.Xla.ExecuteResponse.Builder.class);
      }

      // Construct using xla.Xla.ExecuteResponse.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 (outputBuilder_ == null) {
          output_ = null;
        } else {
          output_ = null;
          outputBuilder_ = null;
        }
        if (profileBuilder_ == null) {
          profile_ = null;
        } else {
          profile_ = null;
          profileBuilder_ = null;
        }
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return xla.Xla.internal_static_xla_ExecuteResponse_descriptor;
      }

      public xla.Xla.ExecuteResponse getDefaultInstanceForType() {
        return xla.Xla.ExecuteResponse.getDefaultInstance();
      }

      public xla.Xla.ExecuteResponse build() {
        xla.Xla.ExecuteResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public xla.Xla.ExecuteResponse buildPartial() {
        xla.Xla.ExecuteResponse result = new xla.Xla.ExecuteResponse(this);
        if (outputBuilder_ == null) {
          result.output_ = output_;
        } else {
          result.output_ = outputBuilder_.build();
        }
        if (profileBuilder_ == null) {
          result.profile_ = profile_;
        } else {
          result.profile_ = profileBuilder_.build();
        }
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof xla.Xla.ExecuteResponse) {
          return mergeFrom((xla.Xla.ExecuteResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(xla.Xla.ExecuteResponse other) {
        if (other == xla.Xla.ExecuteResponse.getDefaultInstance()) return this;
        if (other.hasOutput()) {
          mergeOutput(other.getOutput());
        }
        if (other.hasProfile()) {
          mergeProfile(other.getProfile());
        }
        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 {
        xla.Xla.ExecuteResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (xla.Xla.ExecuteResponse) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private xla.XlaData.GlobalDataHandle output_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.XlaData.GlobalDataHandle, xla.XlaData.GlobalDataHandle.Builder, xla.XlaData.GlobalDataHandleOrBuilder> outputBuilder_;
      /**
       * <code>.xla.GlobalDataHandle output = 1;</code>
       */
      public boolean hasOutput() {
        return outputBuilder_ != null || output_ != null;
      }
      /**
       * <code>.xla.GlobalDataHandle output = 1;</code>
       */
      public xla.XlaData.GlobalDataHandle getOutput() {
        if (outputBuilder_ == null) {
          return output_ == null ? xla.XlaData.GlobalDataHandle.getDefaultInstance() : output_;
        } else {
          return outputBuilder_.getMessage();
        }
      }
      /**
       * <code>.xla.GlobalDataHandle output = 1;</code>
       */
      public Builder setOutput(xla.XlaData.GlobalDataHandle value) {
        if (outputBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          output_ = value;
          onChanged();
        } else {
          outputBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.xla.GlobalDataHandle output = 1;</code>
       */
      public Builder setOutput(
          xla.XlaData.GlobalDataHandle.Builder builderForValue) {
        if (outputBuilder_ == null) {
          output_ = builderForValue.build();
          onChanged();
        } else {
          outputBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.xla.GlobalDataHandle output = 1;</code>
       */
      public Builder mergeOutput(xla.XlaData.GlobalDataHandle value) {
        if (outputBuilder_ == null) {
          if (output_ != null) {
            output_ =
              xla.XlaData.GlobalDataHandle.newBuilder(output_).mergeFrom(value).buildPartial();
          } else {
            output_ = value;
          }
          onChanged();
        } else {
          outputBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.xla.GlobalDataHandle output = 1;</code>
       */
      public Builder clearOutput() {
        if (outputBuilder_ == null) {
          output_ = null;
          onChanged();
        } else {
          output_ = null;
          outputBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.xla.GlobalDataHandle output = 1;</code>
       */
      public xla.XlaData.GlobalDataHandle.Builder getOutputBuilder() {
        
        onChanged();
        return getOutputFieldBuilder().getBuilder();
      }
      /**
       * <code>.xla.GlobalDataHandle output = 1;</code>
       */
      public xla.XlaData.GlobalDataHandleOrBuilder getOutputOrBuilder() {
        if (outputBuilder_ != null) {
          return outputBuilder_.getMessageOrBuilder();
        } else {
          return output_ == null ?
              xla.XlaData.GlobalDataHandle.getDefaultInstance() : output_;
        }
      }
      /**
       * <code>.xla.GlobalDataHandle output = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.XlaData.GlobalDataHandle, xla.XlaData.GlobalDataHandle.Builder, xla.XlaData.GlobalDataHandleOrBuilder> 
          getOutputFieldBuilder() {
        if (outputBuilder_ == null) {
          outputBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              xla.XlaData.GlobalDataHandle, xla.XlaData.GlobalDataHandle.Builder, xla.XlaData.GlobalDataHandleOrBuilder>(
                  getOutput(),
                  getParentForChildren(),
                  isClean());
          output_ = null;
        }
        return outputBuilder_;
      }

      private xla.XlaData.ExecutionProfile profile_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.XlaData.ExecutionProfile, xla.XlaData.ExecutionProfile.Builder, xla.XlaData.ExecutionProfileOrBuilder> profileBuilder_;
      /**
       * <code>.xla.ExecutionProfile profile = 2;</code>
       */
      public boolean hasProfile() {
        return profileBuilder_ != null || profile_ != null;
      }
      /**
       * <code>.xla.ExecutionProfile profile = 2;</code>
       */
      public xla.XlaData.ExecutionProfile getProfile() {
        if (profileBuilder_ == null) {
          return profile_ == null ? xla.XlaData.ExecutionProfile.getDefaultInstance() : profile_;
        } else {
          return profileBuilder_.getMessage();
        }
      }
      /**
       * <code>.xla.ExecutionProfile profile = 2;</code>
       */
      public Builder setProfile(xla.XlaData.ExecutionProfile value) {
        if (profileBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          profile_ = value;
          onChanged();
        } else {
          profileBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.xla.ExecutionProfile profile = 2;</code>
       */
      public Builder setProfile(
          xla.XlaData.ExecutionProfile.Builder builderForValue) {
        if (profileBuilder_ == null) {
          profile_ = builderForValue.build();
          onChanged();
        } else {
          profileBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.xla.ExecutionProfile profile = 2;</code>
       */
      public Builder mergeProfile(xla.XlaData.ExecutionProfile value) {
        if (profileBuilder_ == null) {
          if (profile_ != null) {
            profile_ =
              xla.XlaData.ExecutionProfile.newBuilder(profile_).mergeFrom(value).buildPartial();
          } else {
            profile_ = value;
          }
          onChanged();
        } else {
          profileBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.xla.ExecutionProfile profile = 2;</code>
       */
      public Builder clearProfile() {
        if (profileBuilder_ == null) {
          profile_ = null;
          onChanged();
        } else {
          profile_ = null;
          profileBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.xla.ExecutionProfile profile = 2;</code>
       */
      public xla.XlaData.ExecutionProfile.Builder getProfileBuilder() {
        
        onChanged();
        return getProfileFieldBuilder().getBuilder();
      }
      /**
       * <code>.xla.ExecutionProfile profile = 2;</code>
       */
      public xla.XlaData.ExecutionProfileOrBuilder getProfileOrBuilder() {
        if (profileBuilder_ != null) {
          return profileBuilder_.getMessageOrBuilder();
        } else {
          return profile_ == null ?
              xla.XlaData.ExecutionProfile.getDefaultInstance() : profile_;
        }
      }
      /**
       * <code>.xla.ExecutionProfile profile = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.XlaData.ExecutionProfile, xla.XlaData.ExecutionProfile.Builder, xla.XlaData.ExecutionProfileOrBuilder> 
          getProfileFieldBuilder() {
        if (profileBuilder_ == null) {
          profileBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              xla.XlaData.ExecutionProfile, xla.XlaData.ExecutionProfile.Builder, xla.XlaData.ExecutionProfileOrBuilder>(
                  getProfile(),
                  getParentForChildren(),
                  isClean());
          profile_ = null;
        }
        return profileBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

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


      // @@protoc_insertion_point(builder_scope:xla.ExecuteResponse)
    }

    // @@protoc_insertion_point(class_scope:xla.ExecuteResponse)
    private static final xla.Xla.ExecuteResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new xla.Xla.ExecuteResponse();
    }

    public static xla.Xla.ExecuteResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public xla.Xla.ExecuteResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ExecuteParallelResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:xla.ExecuteParallelResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated .xla.ExecuteResponse responses = 1;</code>
     */
    java.util.List<xla.Xla.ExecuteResponse> 
        getResponsesList();
    /**
     * <code>repeated .xla.ExecuteResponse responses = 1;</code>
     */
    xla.Xla.ExecuteResponse getResponses(int index);
    /**
     * <code>repeated .xla.ExecuteResponse responses = 1;</code>
     */
    int getResponsesCount();
    /**
     * <code>repeated .xla.ExecuteResponse responses = 1;</code>
     */
    java.util.List<? extends xla.Xla.ExecuteResponseOrBuilder> 
        getResponsesOrBuilderList();
    /**
     * <code>repeated .xla.ExecuteResponse responses = 1;</code>
     */
    xla.Xla.ExecuteResponseOrBuilder getResponsesOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code xla.ExecuteParallelResponse}
   */
  public  static final class ExecuteParallelResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:xla.ExecuteParallelResponse)
      ExecuteParallelResponseOrBuilder {
    // Use ExecuteParallelResponse.newBuilder() to construct.
    private ExecuteParallelResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ExecuteParallelResponse() {
      responses_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private ExecuteParallelResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                responses_ = new java.util.ArrayList<xla.Xla.ExecuteResponse>();
                mutable_bitField0_ |= 0x00000001;
              }
              responses_.add(
                  input.readMessage(xla.Xla.ExecuteResponse.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)) {
          responses_ = java.util.Collections.unmodifiableList(responses_);
        }
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return xla.Xla.internal_static_xla_ExecuteParallelResponse_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return xla.Xla.internal_static_xla_ExecuteParallelResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              xla.Xla.ExecuteParallelResponse.class, xla.Xla.ExecuteParallelResponse.Builder.class);
    }

    public static final int RESPONSES_FIELD_NUMBER = 1;
    private java.util.List<xla.Xla.ExecuteResponse> responses_;
    /**
     * <code>repeated .xla.ExecuteResponse responses = 1;</code>
     */
    public java.util.List<xla.Xla.ExecuteResponse> getResponsesList() {
      return responses_;
    }
    /**
     * <code>repeated .xla.ExecuteResponse responses = 1;</code>
     */
    public java.util.List<? extends xla.Xla.ExecuteResponseOrBuilder> 
        getResponsesOrBuilderList() {
      return responses_;
    }
    /**
     * <code>repeated .xla.ExecuteResponse responses = 1;</code>
     */
    public int getResponsesCount() {
      return responses_.size();
    }
    /**
     * <code>repeated .xla.ExecuteResponse responses = 1;</code>
     */
    public xla.Xla.ExecuteResponse getResponses(int index) {
      return responses_.get(index);
    }
    /**
     * <code>repeated .xla.ExecuteResponse responses = 1;</code>
     */
    public xla.Xla.ExecuteResponseOrBuilder getResponsesOrBuilder(
        int index) {
      return responses_.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 < responses_.size(); i++) {
        output.writeMessage(1, responses_.get(i));
      }
    }

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

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

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof xla.Xla.ExecuteParallelResponse)) {
        return super.equals(obj);
      }
      xla.Xla.ExecuteParallelResponse other = (xla.Xla.ExecuteParallelResponse) obj;

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

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

    public static xla.Xla.ExecuteParallelResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.ExecuteParallelResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.ExecuteParallelResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.ExecuteParallelResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.ExecuteParallelResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.ExecuteParallelResponse 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 xla.Xla.ExecuteParallelResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static xla.Xla.ExecuteParallelResponse 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 xla.Xla.ExecuteParallelResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.ExecuteParallelResponse 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(xla.Xla.ExecuteParallelResponse 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 xla.ExecuteParallelResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:xla.ExecuteParallelResponse)
        xla.Xla.ExecuteParallelResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return xla.Xla.internal_static_xla_ExecuteParallelResponse_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return xla.Xla.internal_static_xla_ExecuteParallelResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                xla.Xla.ExecuteParallelResponse.class, xla.Xla.ExecuteParallelResponse.Builder.class);
      }

      // Construct using xla.Xla.ExecuteParallelResponse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return xla.Xla.internal_static_xla_ExecuteParallelResponse_descriptor;
      }

      public xla.Xla.ExecuteParallelResponse getDefaultInstanceForType() {
        return xla.Xla.ExecuteParallelResponse.getDefaultInstance();
      }

      public xla.Xla.ExecuteParallelResponse build() {
        xla.Xla.ExecuteParallelResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public xla.Xla.ExecuteParallelResponse buildPartial() {
        xla.Xla.ExecuteParallelResponse result = new xla.Xla.ExecuteParallelResponse(this);
        int from_bitField0_ = bitField0_;
        if (responsesBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            responses_ = java.util.Collections.unmodifiableList(responses_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.responses_ = responses_;
        } else {
          result.responses_ = responsesBuilder_.build();
        }
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof xla.Xla.ExecuteParallelResponse) {
          return mergeFrom((xla.Xla.ExecuteParallelResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(xla.Xla.ExecuteParallelResponse other) {
        if (other == xla.Xla.ExecuteParallelResponse.getDefaultInstance()) return this;
        if (responsesBuilder_ == null) {
          if (!other.responses_.isEmpty()) {
            if (responses_.isEmpty()) {
              responses_ = other.responses_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureResponsesIsMutable();
              responses_.addAll(other.responses_);
            }
            onChanged();
          }
        } else {
          if (!other.responses_.isEmpty()) {
            if (responsesBuilder_.isEmpty()) {
              responsesBuilder_.dispose();
              responsesBuilder_ = null;
              responses_ = other.responses_;
              bitField0_ = (bitField0_ & ~0x00000001);
              responsesBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getResponsesFieldBuilder() : null;
            } else {
              responsesBuilder_.addAllMessages(other.responses_);
            }
          }
        }
        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 {
        xla.Xla.ExecuteParallelResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (xla.Xla.ExecuteParallelResponse) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.util.List<xla.Xla.ExecuteResponse> responses_ =
        java.util.Collections.emptyList();
      private void ensureResponsesIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          responses_ = new java.util.ArrayList<xla.Xla.ExecuteResponse>(responses_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          xla.Xla.ExecuteResponse, xla.Xla.ExecuteResponse.Builder, xla.Xla.ExecuteResponseOrBuilder> responsesBuilder_;

      /**
       * <code>repeated .xla.ExecuteResponse responses = 1;</code>
       */
      public java.util.List<xla.Xla.ExecuteResponse> getResponsesList() {
        if (responsesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(responses_);
        } else {
          return responsesBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .xla.ExecuteResponse responses = 1;</code>
       */
      public int getResponsesCount() {
        if (responsesBuilder_ == null) {
          return responses_.size();
        } else {
          return responsesBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .xla.ExecuteResponse responses = 1;</code>
       */
      public xla.Xla.ExecuteResponse getResponses(int index) {
        if (responsesBuilder_ == null) {
          return responses_.get(index);
        } else {
          return responsesBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .xla.ExecuteResponse responses = 1;</code>
       */
      public Builder setResponses(
          int index, xla.Xla.ExecuteResponse value) {
        if (responsesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureResponsesIsMutable();
          responses_.set(index, value);
          onChanged();
        } else {
          responsesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .xla.ExecuteResponse responses = 1;</code>
       */
      public Builder setResponses(
          int index, xla.Xla.ExecuteResponse.Builder builderForValue) {
        if (responsesBuilder_ == null) {
          ensureResponsesIsMutable();
          responses_.set(index, builderForValue.build());
          onChanged();
        } else {
          responsesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .xla.ExecuteResponse responses = 1;</code>
       */
      public Builder addResponses(xla.Xla.ExecuteResponse value) {
        if (responsesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureResponsesIsMutable();
          responses_.add(value);
          onChanged();
        } else {
          responsesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .xla.ExecuteResponse responses = 1;</code>
       */
      public Builder addResponses(
          int index, xla.Xla.ExecuteResponse value) {
        if (responsesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureResponsesIsMutable();
          responses_.add(index, value);
          onChanged();
        } else {
          responsesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .xla.ExecuteResponse responses = 1;</code>
       */
      public Builder addResponses(
          xla.Xla.ExecuteResponse.Builder builderForValue) {
        if (responsesBuilder_ == null) {
          ensureResponsesIsMutable();
          responses_.add(builderForValue.build());
          onChanged();
        } else {
          responsesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .xla.ExecuteResponse responses = 1;</code>
       */
      public Builder addResponses(
          int index, xla.Xla.ExecuteResponse.Builder builderForValue) {
        if (responsesBuilder_ == null) {
          ensureResponsesIsMutable();
          responses_.add(index, builderForValue.build());
          onChanged();
        } else {
          responsesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .xla.ExecuteResponse responses = 1;</code>
       */
      public Builder addAllResponses(
          java.lang.Iterable<? extends xla.Xla.ExecuteResponse> values) {
        if (responsesBuilder_ == null) {
          ensureResponsesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, responses_);
          onChanged();
        } else {
          responsesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .xla.ExecuteResponse responses = 1;</code>
       */
      public Builder clearResponses() {
        if (responsesBuilder_ == null) {
          responses_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          responsesBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .xla.ExecuteResponse responses = 1;</code>
       */
      public Builder removeResponses(int index) {
        if (responsesBuilder_ == null) {
          ensureResponsesIsMutable();
          responses_.remove(index);
          onChanged();
        } else {
          responsesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .xla.ExecuteResponse responses = 1;</code>
       */
      public xla.Xla.ExecuteResponse.Builder getResponsesBuilder(
          int index) {
        return getResponsesFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .xla.ExecuteResponse responses = 1;</code>
       */
      public xla.Xla.ExecuteResponseOrBuilder getResponsesOrBuilder(
          int index) {
        if (responsesBuilder_ == null) {
          return responses_.get(index);  } else {
          return responsesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .xla.ExecuteResponse responses = 1;</code>
       */
      public java.util.List<? extends xla.Xla.ExecuteResponseOrBuilder> 
           getResponsesOrBuilderList() {
        if (responsesBuilder_ != null) {
          return responsesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(responses_);
        }
      }
      /**
       * <code>repeated .xla.ExecuteResponse responses = 1;</code>
       */
      public xla.Xla.ExecuteResponse.Builder addResponsesBuilder() {
        return getResponsesFieldBuilder().addBuilder(
            xla.Xla.ExecuteResponse.getDefaultInstance());
      }
      /**
       * <code>repeated .xla.ExecuteResponse responses = 1;</code>
       */
      public xla.Xla.ExecuteResponse.Builder addResponsesBuilder(
          int index) {
        return getResponsesFieldBuilder().addBuilder(
            index, xla.Xla.ExecuteResponse.getDefaultInstance());
      }
      /**
       * <code>repeated .xla.ExecuteResponse responses = 1;</code>
       */
      public java.util.List<xla.Xla.ExecuteResponse.Builder> 
           getResponsesBuilderList() {
        return getResponsesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          xla.Xla.ExecuteResponse, xla.Xla.ExecuteResponse.Builder, xla.Xla.ExecuteResponseOrBuilder> 
          getResponsesFieldBuilder() {
        if (responsesBuilder_ == null) {
          responsesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              xla.Xla.ExecuteResponse, xla.Xla.ExecuteResponse.Builder, xla.Xla.ExecuteResponseOrBuilder>(
                  responses_,
                  ((bitField0_ & 0x00000001) == 0x00000001),
                  getParentForChildren(),
                  isClean());
          responses_ = null;
        }
        return responsesBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

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


      // @@protoc_insertion_point(builder_scope:xla.ExecuteParallelResponse)
    }

    // @@protoc_insertion_point(class_scope:xla.ExecuteParallelResponse)
    private static final xla.Xla.ExecuteParallelResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new xla.Xla.ExecuteParallelResponse();
    }

    public static xla.Xla.ExecuteParallelResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public xla.Xla.ExecuteParallelResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ExecuteAsyncRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:xla.ExecuteAsyncRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.xla.ComputationHandle computation = 1;</code>
     */
    boolean hasComputation();
    /**
     * <code>.xla.ComputationHandle computation = 1;</code>
     */
    xla.XlaData.ComputationHandle getComputation();
    /**
     * <code>.xla.ComputationHandle computation = 1;</code>
     */
    xla.XlaData.ComputationHandleOrBuilder getComputationOrBuilder();

    /**
     * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
     */
    java.util.List<xla.XlaData.GlobalDataHandle> 
        getArgumentsList();
    /**
     * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
     */
    xla.XlaData.GlobalDataHandle getArguments(int index);
    /**
     * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
     */
    int getArgumentsCount();
    /**
     * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
     */
    java.util.List<? extends xla.XlaData.GlobalDataHandleOrBuilder> 
        getArgumentsOrBuilderList();
    /**
     * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
     */
    xla.XlaData.GlobalDataHandleOrBuilder getArgumentsOrBuilder(
        int index);

    /**
     * <pre>
     * Options that affect how XLA compiles and runs code to service this request.
     * </pre>
     *
     * <code>.xla.ExecutionOptions execution_options = 6;</code>
     */
    boolean hasExecutionOptions();
    /**
     * <pre>
     * Options that affect how XLA compiles and runs code to service this request.
     * </pre>
     *
     * <code>.xla.ExecutionOptions execution_options = 6;</code>
     */
    xla.Xla.ExecutionOptions getExecutionOptions();
    /**
     * <pre>
     * Options that affect how XLA compiles and runs code to service this request.
     * </pre>
     *
     * <code>.xla.ExecutionOptions execution_options = 6;</code>
     */
    xla.Xla.ExecutionOptionsOrBuilder getExecutionOptionsOrBuilder();
  }
  /**
   * Protobuf type {@code xla.ExecuteAsyncRequest}
   */
  public  static final class ExecuteAsyncRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:xla.ExecuteAsyncRequest)
      ExecuteAsyncRequestOrBuilder {
    // Use ExecuteAsyncRequest.newBuilder() to construct.
    private ExecuteAsyncRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ExecuteAsyncRequest() {
      arguments_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private ExecuteAsyncRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              xla.XlaData.ComputationHandle.Builder subBuilder = null;
              if (computation_ != null) {
                subBuilder = computation_.toBuilder();
              }
              computation_ = input.readMessage(xla.XlaData.ComputationHandle.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(computation_);
                computation_ = subBuilder.buildPartial();
              }

              break;
            }
            case 18: {
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                arguments_ = new java.util.ArrayList<xla.XlaData.GlobalDataHandle>();
                mutable_bitField0_ |= 0x00000002;
              }
              arguments_.add(
                  input.readMessage(xla.XlaData.GlobalDataHandle.parser(), extensionRegistry));
              break;
            }
            case 50: {
              xla.Xla.ExecutionOptions.Builder subBuilder = null;
              if (executionOptions_ != null) {
                subBuilder = executionOptions_.toBuilder();
              }
              executionOptions_ = input.readMessage(xla.Xla.ExecutionOptions.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(executionOptions_);
                executionOptions_ = 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 {
        if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
          arguments_ = java.util.Collections.unmodifiableList(arguments_);
        }
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return xla.Xla.internal_static_xla_ExecuteAsyncRequest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return xla.Xla.internal_static_xla_ExecuteAsyncRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              xla.Xla.ExecuteAsyncRequest.class, xla.Xla.ExecuteAsyncRequest.Builder.class);
    }

    private int bitField0_;
    public static final int COMPUTATION_FIELD_NUMBER = 1;
    private xla.XlaData.ComputationHandle computation_;
    /**
     * <code>.xla.ComputationHandle computation = 1;</code>
     */
    public boolean hasComputation() {
      return computation_ != null;
    }
    /**
     * <code>.xla.ComputationHandle computation = 1;</code>
     */
    public xla.XlaData.ComputationHandle getComputation() {
      return computation_ == null ? xla.XlaData.ComputationHandle.getDefaultInstance() : computation_;
    }
    /**
     * <code>.xla.ComputationHandle computation = 1;</code>
     */
    public xla.XlaData.ComputationHandleOrBuilder getComputationOrBuilder() {
      return getComputation();
    }

    public static final int ARGUMENTS_FIELD_NUMBER = 2;
    private java.util.List<xla.XlaData.GlobalDataHandle> arguments_;
    /**
     * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
     */
    public java.util.List<xla.XlaData.GlobalDataHandle> getArgumentsList() {
      return arguments_;
    }
    /**
     * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
     */
    public java.util.List<? extends xla.XlaData.GlobalDataHandleOrBuilder> 
        getArgumentsOrBuilderList() {
      return arguments_;
    }
    /**
     * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
     */
    public int getArgumentsCount() {
      return arguments_.size();
    }
    /**
     * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
     */
    public xla.XlaData.GlobalDataHandle getArguments(int index) {
      return arguments_.get(index);
    }
    /**
     * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
     */
    public xla.XlaData.GlobalDataHandleOrBuilder getArgumentsOrBuilder(
        int index) {
      return arguments_.get(index);
    }

    public static final int EXECUTION_OPTIONS_FIELD_NUMBER = 6;
    private xla.Xla.ExecutionOptions executionOptions_;
    /**
     * <pre>
     * Options that affect how XLA compiles and runs code to service this request.
     * </pre>
     *
     * <code>.xla.ExecutionOptions execution_options = 6;</code>
     */
    public boolean hasExecutionOptions() {
      return executionOptions_ != null;
    }
    /**
     * <pre>
     * Options that affect how XLA compiles and runs code to service this request.
     * </pre>
     *
     * <code>.xla.ExecutionOptions execution_options = 6;</code>
     */
    public xla.Xla.ExecutionOptions getExecutionOptions() {
      return executionOptions_ == null ? xla.Xla.ExecutionOptions.getDefaultInstance() : executionOptions_;
    }
    /**
     * <pre>
     * Options that affect how XLA compiles and runs code to service this request.
     * </pre>
     *
     * <code>.xla.ExecutionOptions execution_options = 6;</code>
     */
    public xla.Xla.ExecutionOptionsOrBuilder getExecutionOptionsOrBuilder() {
      return getExecutionOptions();
    }

    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 (computation_ != null) {
        output.writeMessage(1, getComputation());
      }
      for (int i = 0; i < arguments_.size(); i++) {
        output.writeMessage(2, arguments_.get(i));
      }
      if (executionOptions_ != null) {
        output.writeMessage(6, getExecutionOptions());
      }
    }

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

      size = 0;
      if (computation_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getComputation());
      }
      for (int i = 0; i < arguments_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, arguments_.get(i));
      }
      if (executionOptions_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(6, getExecutionOptions());
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof xla.Xla.ExecuteAsyncRequest)) {
        return super.equals(obj);
      }
      xla.Xla.ExecuteAsyncRequest other = (xla.Xla.ExecuteAsyncRequest) obj;

      boolean result = true;
      result = result && (hasComputation() == other.hasComputation());
      if (hasComputation()) {
        result = result && getComputation()
            .equals(other.getComputation());
      }
      result = result && getArgumentsList()
          .equals(other.getArgumentsList());
      result = result && (hasExecutionOptions() == other.hasExecutionOptions());
      if (hasExecutionOptions()) {
        result = result && getExecutionOptions()
            .equals(other.getExecutionOptions());
      }
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasComputation()) {
        hash = (37 * hash) + COMPUTATION_FIELD_NUMBER;
        hash = (53 * hash) + getComputation().hashCode();
      }
      if (getArgumentsCount() > 0) {
        hash = (37 * hash) + ARGUMENTS_FIELD_NUMBER;
        hash = (53 * hash) + getArgumentsList().hashCode();
      }
      if (hasExecutionOptions()) {
        hash = (37 * hash) + EXECUTION_OPTIONS_FIELD_NUMBER;
        hash = (53 * hash) + getExecutionOptions().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static xla.Xla.ExecuteAsyncRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.ExecuteAsyncRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.ExecuteAsyncRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.ExecuteAsyncRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.ExecuteAsyncRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.ExecuteAsyncRequest 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 xla.Xla.ExecuteAsyncRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static xla.Xla.ExecuteAsyncRequest 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 xla.Xla.ExecuteAsyncRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.ExecuteAsyncRequest 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(xla.Xla.ExecuteAsyncRequest 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 xla.ExecuteAsyncRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:xla.ExecuteAsyncRequest)
        xla.Xla.ExecuteAsyncRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return xla.Xla.internal_static_xla_ExecuteAsyncRequest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return xla.Xla.internal_static_xla_ExecuteAsyncRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                xla.Xla.ExecuteAsyncRequest.class, xla.Xla.ExecuteAsyncRequest.Builder.class);
      }

      // Construct using xla.Xla.ExecuteAsyncRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getArgumentsFieldBuilder();
        }
      }
      public Builder clear() {
        super.clear();
        if (computationBuilder_ == null) {
          computation_ = null;
        } else {
          computation_ = null;
          computationBuilder_ = null;
        }
        if (argumentsBuilder_ == null) {
          arguments_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
        } else {
          argumentsBuilder_.clear();
        }
        if (executionOptionsBuilder_ == null) {
          executionOptions_ = null;
        } else {
          executionOptions_ = null;
          executionOptionsBuilder_ = null;
        }
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return xla.Xla.internal_static_xla_ExecuteAsyncRequest_descriptor;
      }

      public xla.Xla.ExecuteAsyncRequest getDefaultInstanceForType() {
        return xla.Xla.ExecuteAsyncRequest.getDefaultInstance();
      }

      public xla.Xla.ExecuteAsyncRequest build() {
        xla.Xla.ExecuteAsyncRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public xla.Xla.ExecuteAsyncRequest buildPartial() {
        xla.Xla.ExecuteAsyncRequest result = new xla.Xla.ExecuteAsyncRequest(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (computationBuilder_ == null) {
          result.computation_ = computation_;
        } else {
          result.computation_ = computationBuilder_.build();
        }
        if (argumentsBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            arguments_ = java.util.Collections.unmodifiableList(arguments_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.arguments_ = arguments_;
        } else {
          result.arguments_ = argumentsBuilder_.build();
        }
        if (executionOptionsBuilder_ == null) {
          result.executionOptions_ = executionOptions_;
        } else {
          result.executionOptions_ = executionOptionsBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof xla.Xla.ExecuteAsyncRequest) {
          return mergeFrom((xla.Xla.ExecuteAsyncRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(xla.Xla.ExecuteAsyncRequest other) {
        if (other == xla.Xla.ExecuteAsyncRequest.getDefaultInstance()) return this;
        if (other.hasComputation()) {
          mergeComputation(other.getComputation());
        }
        if (argumentsBuilder_ == null) {
          if (!other.arguments_.isEmpty()) {
            if (arguments_.isEmpty()) {
              arguments_ = other.arguments_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureArgumentsIsMutable();
              arguments_.addAll(other.arguments_);
            }
            onChanged();
          }
        } else {
          if (!other.arguments_.isEmpty()) {
            if (argumentsBuilder_.isEmpty()) {
              argumentsBuilder_.dispose();
              argumentsBuilder_ = null;
              arguments_ = other.arguments_;
              bitField0_ = (bitField0_ & ~0x00000002);
              argumentsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getArgumentsFieldBuilder() : null;
            } else {
              argumentsBuilder_.addAllMessages(other.arguments_);
            }
          }
        }
        if (other.hasExecutionOptions()) {
          mergeExecutionOptions(other.getExecutionOptions());
        }
        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 {
        xla.Xla.ExecuteAsyncRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (xla.Xla.ExecuteAsyncRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private xla.XlaData.ComputationHandle computation_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.XlaData.ComputationHandle, xla.XlaData.ComputationHandle.Builder, xla.XlaData.ComputationHandleOrBuilder> computationBuilder_;
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      public boolean hasComputation() {
        return computationBuilder_ != null || computation_ != null;
      }
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      public xla.XlaData.ComputationHandle getComputation() {
        if (computationBuilder_ == null) {
          return computation_ == null ? xla.XlaData.ComputationHandle.getDefaultInstance() : computation_;
        } else {
          return computationBuilder_.getMessage();
        }
      }
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      public Builder setComputation(xla.XlaData.ComputationHandle value) {
        if (computationBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          computation_ = value;
          onChanged();
        } else {
          computationBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      public Builder setComputation(
          xla.XlaData.ComputationHandle.Builder builderForValue) {
        if (computationBuilder_ == null) {
          computation_ = builderForValue.build();
          onChanged();
        } else {
          computationBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      public Builder mergeComputation(xla.XlaData.ComputationHandle value) {
        if (computationBuilder_ == null) {
          if (computation_ != null) {
            computation_ =
              xla.XlaData.ComputationHandle.newBuilder(computation_).mergeFrom(value).buildPartial();
          } else {
            computation_ = value;
          }
          onChanged();
        } else {
          computationBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      public Builder clearComputation() {
        if (computationBuilder_ == null) {
          computation_ = null;
          onChanged();
        } else {
          computation_ = null;
          computationBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      public xla.XlaData.ComputationHandle.Builder getComputationBuilder() {
        
        onChanged();
        return getComputationFieldBuilder().getBuilder();
      }
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      public xla.XlaData.ComputationHandleOrBuilder getComputationOrBuilder() {
        if (computationBuilder_ != null) {
          return computationBuilder_.getMessageOrBuilder();
        } else {
          return computation_ == null ?
              xla.XlaData.ComputationHandle.getDefaultInstance() : computation_;
        }
      }
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.XlaData.ComputationHandle, xla.XlaData.ComputationHandle.Builder, xla.XlaData.ComputationHandleOrBuilder> 
          getComputationFieldBuilder() {
        if (computationBuilder_ == null) {
          computationBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              xla.XlaData.ComputationHandle, xla.XlaData.ComputationHandle.Builder, xla.XlaData.ComputationHandleOrBuilder>(
                  getComputation(),
                  getParentForChildren(),
                  isClean());
          computation_ = null;
        }
        return computationBuilder_;
      }

      private java.util.List<xla.XlaData.GlobalDataHandle> arguments_ =
        java.util.Collections.emptyList();
      private void ensureArgumentsIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          arguments_ = new java.util.ArrayList<xla.XlaData.GlobalDataHandle>(arguments_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          xla.XlaData.GlobalDataHandle, xla.XlaData.GlobalDataHandle.Builder, xla.XlaData.GlobalDataHandleOrBuilder> argumentsBuilder_;

      /**
       * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
       */
      public java.util.List<xla.XlaData.GlobalDataHandle> getArgumentsList() {
        if (argumentsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(arguments_);
        } else {
          return argumentsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
       */
      public int getArgumentsCount() {
        if (argumentsBuilder_ == null) {
          return arguments_.size();
        } else {
          return argumentsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
       */
      public xla.XlaData.GlobalDataHandle getArguments(int index) {
        if (argumentsBuilder_ == null) {
          return arguments_.get(index);
        } else {
          return argumentsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
       */
      public Builder setArguments(
          int index, xla.XlaData.GlobalDataHandle value) {
        if (argumentsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureArgumentsIsMutable();
          arguments_.set(index, value);
          onChanged();
        } else {
          argumentsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
       */
      public Builder setArguments(
          int index, xla.XlaData.GlobalDataHandle.Builder builderForValue) {
        if (argumentsBuilder_ == null) {
          ensureArgumentsIsMutable();
          arguments_.set(index, builderForValue.build());
          onChanged();
        } else {
          argumentsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
       */
      public Builder addArguments(xla.XlaData.GlobalDataHandle value) {
        if (argumentsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureArgumentsIsMutable();
          arguments_.add(value);
          onChanged();
        } else {
          argumentsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
       */
      public Builder addArguments(
          int index, xla.XlaData.GlobalDataHandle value) {
        if (argumentsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureArgumentsIsMutable();
          arguments_.add(index, value);
          onChanged();
        } else {
          argumentsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
       */
      public Builder addArguments(
          xla.XlaData.GlobalDataHandle.Builder builderForValue) {
        if (argumentsBuilder_ == null) {
          ensureArgumentsIsMutable();
          arguments_.add(builderForValue.build());
          onChanged();
        } else {
          argumentsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
       */
      public Builder addArguments(
          int index, xla.XlaData.GlobalDataHandle.Builder builderForValue) {
        if (argumentsBuilder_ == null) {
          ensureArgumentsIsMutable();
          arguments_.add(index, builderForValue.build());
          onChanged();
        } else {
          argumentsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
       */
      public Builder addAllArguments(
          java.lang.Iterable<? extends xla.XlaData.GlobalDataHandle> values) {
        if (argumentsBuilder_ == null) {
          ensureArgumentsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, arguments_);
          onChanged();
        } else {
          argumentsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
       */
      public Builder clearArguments() {
        if (argumentsBuilder_ == null) {
          arguments_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          argumentsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
       */
      public Builder removeArguments(int index) {
        if (argumentsBuilder_ == null) {
          ensureArgumentsIsMutable();
          arguments_.remove(index);
          onChanged();
        } else {
          argumentsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
       */
      public xla.XlaData.GlobalDataHandle.Builder getArgumentsBuilder(
          int index) {
        return getArgumentsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
       */
      public xla.XlaData.GlobalDataHandleOrBuilder getArgumentsOrBuilder(
          int index) {
        if (argumentsBuilder_ == null) {
          return arguments_.get(index);  } else {
          return argumentsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
       */
      public java.util.List<? extends xla.XlaData.GlobalDataHandleOrBuilder> 
           getArgumentsOrBuilderList() {
        if (argumentsBuilder_ != null) {
          return argumentsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(arguments_);
        }
      }
      /**
       * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
       */
      public xla.XlaData.GlobalDataHandle.Builder addArgumentsBuilder() {
        return getArgumentsFieldBuilder().addBuilder(
            xla.XlaData.GlobalDataHandle.getDefaultInstance());
      }
      /**
       * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
       */
      public xla.XlaData.GlobalDataHandle.Builder addArgumentsBuilder(
          int index) {
        return getArgumentsFieldBuilder().addBuilder(
            index, xla.XlaData.GlobalDataHandle.getDefaultInstance());
      }
      /**
       * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
       */
      public java.util.List<xla.XlaData.GlobalDataHandle.Builder> 
           getArgumentsBuilderList() {
        return getArgumentsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          xla.XlaData.GlobalDataHandle, xla.XlaData.GlobalDataHandle.Builder, xla.XlaData.GlobalDataHandleOrBuilder> 
          getArgumentsFieldBuilder() {
        if (argumentsBuilder_ == null) {
          argumentsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              xla.XlaData.GlobalDataHandle, xla.XlaData.GlobalDataHandle.Builder, xla.XlaData.GlobalDataHandleOrBuilder>(
                  arguments_,
                  ((bitField0_ & 0x00000002) == 0x00000002),
                  getParentForChildren(),
                  isClean());
          arguments_ = null;
        }
        return argumentsBuilder_;
      }

      private xla.Xla.ExecutionOptions executionOptions_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.Xla.ExecutionOptions, xla.Xla.ExecutionOptions.Builder, xla.Xla.ExecutionOptionsOrBuilder> executionOptionsBuilder_;
      /**
       * <pre>
       * Options that affect how XLA compiles and runs code to service this request.
       * </pre>
       *
       * <code>.xla.ExecutionOptions execution_options = 6;</code>
       */
      public boolean hasExecutionOptions() {
        return executionOptionsBuilder_ != null || executionOptions_ != null;
      }
      /**
       * <pre>
       * Options that affect how XLA compiles and runs code to service this request.
       * </pre>
       *
       * <code>.xla.ExecutionOptions execution_options = 6;</code>
       */
      public xla.Xla.ExecutionOptions getExecutionOptions() {
        if (executionOptionsBuilder_ == null) {
          return executionOptions_ == null ? xla.Xla.ExecutionOptions.getDefaultInstance() : executionOptions_;
        } else {
          return executionOptionsBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Options that affect how XLA compiles and runs code to service this request.
       * </pre>
       *
       * <code>.xla.ExecutionOptions execution_options = 6;</code>
       */
      public Builder setExecutionOptions(xla.Xla.ExecutionOptions value) {
        if (executionOptionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          executionOptions_ = value;
          onChanged();
        } else {
          executionOptionsBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       * Options that affect how XLA compiles and runs code to service this request.
       * </pre>
       *
       * <code>.xla.ExecutionOptions execution_options = 6;</code>
       */
      public Builder setExecutionOptions(
          xla.Xla.ExecutionOptions.Builder builderForValue) {
        if (executionOptionsBuilder_ == null) {
          executionOptions_ = builderForValue.build();
          onChanged();
        } else {
          executionOptionsBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       * Options that affect how XLA compiles and runs code to service this request.
       * </pre>
       *
       * <code>.xla.ExecutionOptions execution_options = 6;</code>
       */
      public Builder mergeExecutionOptions(xla.Xla.ExecutionOptions value) {
        if (executionOptionsBuilder_ == null) {
          if (executionOptions_ != null) {
            executionOptions_ =
              xla.Xla.ExecutionOptions.newBuilder(executionOptions_).mergeFrom(value).buildPartial();
          } else {
            executionOptions_ = value;
          }
          onChanged();
        } else {
          executionOptionsBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       * Options that affect how XLA compiles and runs code to service this request.
       * </pre>
       *
       * <code>.xla.ExecutionOptions execution_options = 6;</code>
       */
      public Builder clearExecutionOptions() {
        if (executionOptionsBuilder_ == null) {
          executionOptions_ = null;
          onChanged();
        } else {
          executionOptions_ = null;
          executionOptionsBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       * Options that affect how XLA compiles and runs code to service this request.
       * </pre>
       *
       * <code>.xla.ExecutionOptions execution_options = 6;</code>
       */
      public xla.Xla.ExecutionOptions.Builder getExecutionOptionsBuilder() {
        
        onChanged();
        return getExecutionOptionsFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Options that affect how XLA compiles and runs code to service this request.
       * </pre>
       *
       * <code>.xla.ExecutionOptions execution_options = 6;</code>
       */
      public xla.Xla.ExecutionOptionsOrBuilder getExecutionOptionsOrBuilder() {
        if (executionOptionsBuilder_ != null) {
          return executionOptionsBuilder_.getMessageOrBuilder();
        } else {
          return executionOptions_ == null ?
              xla.Xla.ExecutionOptions.getDefaultInstance() : executionOptions_;
        }
      }
      /**
       * <pre>
       * Options that affect how XLA compiles and runs code to service this request.
       * </pre>
       *
       * <code>.xla.ExecutionOptions execution_options = 6;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.Xla.ExecutionOptions, xla.Xla.ExecutionOptions.Builder, xla.Xla.ExecutionOptionsOrBuilder> 
          getExecutionOptionsFieldBuilder() {
        if (executionOptionsBuilder_ == null) {
          executionOptionsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              xla.Xla.ExecutionOptions, xla.Xla.ExecutionOptions.Builder, xla.Xla.ExecutionOptionsOrBuilder>(
                  getExecutionOptions(),
                  getParentForChildren(),
                  isClean());
          executionOptions_ = null;
        }
        return executionOptionsBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

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


      // @@protoc_insertion_point(builder_scope:xla.ExecuteAsyncRequest)
    }

    // @@protoc_insertion_point(class_scope:xla.ExecuteAsyncRequest)
    private static final xla.Xla.ExecuteAsyncRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new xla.Xla.ExecuteAsyncRequest();
    }

    public static xla.Xla.ExecuteAsyncRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public xla.Xla.ExecuteAsyncRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ExecuteAsyncResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:xla.ExecuteAsyncResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * A handle to the execution launched asynchronously.
     * </pre>
     *
     * <code>.xla.ExecutionHandle execution = 1;</code>
     */
    boolean hasExecution();
    /**
     * <pre>
     * A handle to the execution launched asynchronously.
     * </pre>
     *
     * <code>.xla.ExecutionHandle execution = 1;</code>
     */
    xla.XlaData.ExecutionHandle getExecution();
    /**
     * <pre>
     * A handle to the execution launched asynchronously.
     * </pre>
     *
     * <code>.xla.ExecutionHandle execution = 1;</code>
     */
    xla.XlaData.ExecutionHandleOrBuilder getExecutionOrBuilder();
  }
  /**
   * Protobuf type {@code xla.ExecuteAsyncResponse}
   */
  public  static final class ExecuteAsyncResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:xla.ExecuteAsyncResponse)
      ExecuteAsyncResponseOrBuilder {
    // Use ExecuteAsyncResponse.newBuilder() to construct.
    private ExecuteAsyncResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ExecuteAsyncResponse() {
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private ExecuteAsyncResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              xla.XlaData.ExecutionHandle.Builder subBuilder = null;
              if (execution_ != null) {
                subBuilder = execution_.toBuilder();
              }
              execution_ = input.readMessage(xla.XlaData.ExecutionHandle.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(execution_);
                execution_ = 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 {
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return xla.Xla.internal_static_xla_ExecuteAsyncResponse_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return xla.Xla.internal_static_xla_ExecuteAsyncResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              xla.Xla.ExecuteAsyncResponse.class, xla.Xla.ExecuteAsyncResponse.Builder.class);
    }

    public static final int EXECUTION_FIELD_NUMBER = 1;
    private xla.XlaData.ExecutionHandle execution_;
    /**
     * <pre>
     * A handle to the execution launched asynchronously.
     * </pre>
     *
     * <code>.xla.ExecutionHandle execution = 1;</code>
     */
    public boolean hasExecution() {
      return execution_ != null;
    }
    /**
     * <pre>
     * A handle to the execution launched asynchronously.
     * </pre>
     *
     * <code>.xla.ExecutionHandle execution = 1;</code>
     */
    public xla.XlaData.ExecutionHandle getExecution() {
      return execution_ == null ? xla.XlaData.ExecutionHandle.getDefaultInstance() : execution_;
    }
    /**
     * <pre>
     * A handle to the execution launched asynchronously.
     * </pre>
     *
     * <code>.xla.ExecutionHandle execution = 1;</code>
     */
    public xla.XlaData.ExecutionHandleOrBuilder getExecutionOrBuilder() {
      return getExecution();
    }

    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 (execution_ != null) {
        output.writeMessage(1, getExecution());
      }
    }

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

      size = 0;
      if (execution_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getExecution());
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof xla.Xla.ExecuteAsyncResponse)) {
        return super.equals(obj);
      }
      xla.Xla.ExecuteAsyncResponse other = (xla.Xla.ExecuteAsyncResponse) obj;

      boolean result = true;
      result = result && (hasExecution() == other.hasExecution());
      if (hasExecution()) {
        result = result && getExecution()
            .equals(other.getExecution());
      }
      return result;
    }

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

    public static xla.Xla.ExecuteAsyncResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.ExecuteAsyncResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.ExecuteAsyncResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.ExecuteAsyncResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.ExecuteAsyncResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.ExecuteAsyncResponse 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 xla.Xla.ExecuteAsyncResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static xla.Xla.ExecuteAsyncResponse 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 xla.Xla.ExecuteAsyncResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.ExecuteAsyncResponse 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(xla.Xla.ExecuteAsyncResponse 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 xla.ExecuteAsyncResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:xla.ExecuteAsyncResponse)
        xla.Xla.ExecuteAsyncResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return xla.Xla.internal_static_xla_ExecuteAsyncResponse_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return xla.Xla.internal_static_xla_ExecuteAsyncResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                xla.Xla.ExecuteAsyncResponse.class, xla.Xla.ExecuteAsyncResponse.Builder.class);
      }

      // Construct using xla.Xla.ExecuteAsyncResponse.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 (executionBuilder_ == null) {
          execution_ = null;
        } else {
          execution_ = null;
          executionBuilder_ = null;
        }
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return xla.Xla.internal_static_xla_ExecuteAsyncResponse_descriptor;
      }

      public xla.Xla.ExecuteAsyncResponse getDefaultInstanceForType() {
        return xla.Xla.ExecuteAsyncResponse.getDefaultInstance();
      }

      public xla.Xla.ExecuteAsyncResponse build() {
        xla.Xla.ExecuteAsyncResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public xla.Xla.ExecuteAsyncResponse buildPartial() {
        xla.Xla.ExecuteAsyncResponse result = new xla.Xla.ExecuteAsyncResponse(this);
        if (executionBuilder_ == null) {
          result.execution_ = execution_;
        } else {
          result.execution_ = executionBuilder_.build();
        }
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof xla.Xla.ExecuteAsyncResponse) {
          return mergeFrom((xla.Xla.ExecuteAsyncResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(xla.Xla.ExecuteAsyncResponse other) {
        if (other == xla.Xla.ExecuteAsyncResponse.getDefaultInstance()) return this;
        if (other.hasExecution()) {
          mergeExecution(other.getExecution());
        }
        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 {
        xla.Xla.ExecuteAsyncResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (xla.Xla.ExecuteAsyncResponse) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private xla.XlaData.ExecutionHandle execution_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.XlaData.ExecutionHandle, xla.XlaData.ExecutionHandle.Builder, xla.XlaData.ExecutionHandleOrBuilder> executionBuilder_;
      /**
       * <pre>
       * A handle to the execution launched asynchronously.
       * </pre>
       *
       * <code>.xla.ExecutionHandle execution = 1;</code>
       */
      public boolean hasExecution() {
        return executionBuilder_ != null || execution_ != null;
      }
      /**
       * <pre>
       * A handle to the execution launched asynchronously.
       * </pre>
       *
       * <code>.xla.ExecutionHandle execution = 1;</code>
       */
      public xla.XlaData.ExecutionHandle getExecution() {
        if (executionBuilder_ == null) {
          return execution_ == null ? xla.XlaData.ExecutionHandle.getDefaultInstance() : execution_;
        } else {
          return executionBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * A handle to the execution launched asynchronously.
       * </pre>
       *
       * <code>.xla.ExecutionHandle execution = 1;</code>
       */
      public Builder setExecution(xla.XlaData.ExecutionHandle value) {
        if (executionBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          execution_ = value;
          onChanged();
        } else {
          executionBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       * A handle to the execution launched asynchronously.
       * </pre>
       *
       * <code>.xla.ExecutionHandle execution = 1;</code>
       */
      public Builder setExecution(
          xla.XlaData.ExecutionHandle.Builder builderForValue) {
        if (executionBuilder_ == null) {
          execution_ = builderForValue.build();
          onChanged();
        } else {
          executionBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       * A handle to the execution launched asynchronously.
       * </pre>
       *
       * <code>.xla.ExecutionHandle execution = 1;</code>
       */
      public Builder mergeExecution(xla.XlaData.ExecutionHandle value) {
        if (executionBuilder_ == null) {
          if (execution_ != null) {
            execution_ =
              xla.XlaData.ExecutionHandle.newBuilder(execution_).mergeFrom(value).buildPartial();
          } else {
            execution_ = value;
          }
          onChanged();
        } else {
          executionBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       * A handle to the execution launched asynchronously.
       * </pre>
       *
       * <code>.xla.ExecutionHandle execution = 1;</code>
       */
      public Builder clearExecution() {
        if (executionBuilder_ == null) {
          execution_ = null;
          onChanged();
        } else {
          execution_ = null;
          executionBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       * A handle to the execution launched asynchronously.
       * </pre>
       *
       * <code>.xla.ExecutionHandle execution = 1;</code>
       */
      public xla.XlaData.ExecutionHandle.Builder getExecutionBuilder() {
        
        onChanged();
        return getExecutionFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * A handle to the execution launched asynchronously.
       * </pre>
       *
       * <code>.xla.ExecutionHandle execution = 1;</code>
       */
      public xla.XlaData.ExecutionHandleOrBuilder getExecutionOrBuilder() {
        if (executionBuilder_ != null) {
          return executionBuilder_.getMessageOrBuilder();
        } else {
          return execution_ == null ?
              xla.XlaData.ExecutionHandle.getDefaultInstance() : execution_;
        }
      }
      /**
       * <pre>
       * A handle to the execution launched asynchronously.
       * </pre>
       *
       * <code>.xla.ExecutionHandle execution = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.XlaData.ExecutionHandle, xla.XlaData.ExecutionHandle.Builder, xla.XlaData.ExecutionHandleOrBuilder> 
          getExecutionFieldBuilder() {
        if (executionBuilder_ == null) {
          executionBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              xla.XlaData.ExecutionHandle, xla.XlaData.ExecutionHandle.Builder, xla.XlaData.ExecutionHandleOrBuilder>(
                  getExecution(),
                  getParentForChildren(),
                  isClean());
          execution_ = null;
        }
        return executionBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

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


      // @@protoc_insertion_point(builder_scope:xla.ExecuteAsyncResponse)
    }

    // @@protoc_insertion_point(class_scope:xla.ExecuteAsyncResponse)
    private static final xla.Xla.ExecuteAsyncResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new xla.Xla.ExecuteAsyncResponse();
    }

    public static xla.Xla.ExecuteAsyncResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public xla.Xla.ExecuteAsyncResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface WaitForExecutionRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:xla.WaitForExecutionRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.xla.ExecutionHandle execution = 1;</code>
     */
    boolean hasExecution();
    /**
     * <code>.xla.ExecutionHandle execution = 1;</code>
     */
    xla.XlaData.ExecutionHandle getExecution();
    /**
     * <code>.xla.ExecutionHandle execution = 1;</code>
     */
    xla.XlaData.ExecutionHandleOrBuilder getExecutionOrBuilder();
  }
  /**
   * Protobuf type {@code xla.WaitForExecutionRequest}
   */
  public  static final class WaitForExecutionRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:xla.WaitForExecutionRequest)
      WaitForExecutionRequestOrBuilder {
    // Use WaitForExecutionRequest.newBuilder() to construct.
    private WaitForExecutionRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private WaitForExecutionRequest() {
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private WaitForExecutionRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              xla.XlaData.ExecutionHandle.Builder subBuilder = null;
              if (execution_ != null) {
                subBuilder = execution_.toBuilder();
              }
              execution_ = input.readMessage(xla.XlaData.ExecutionHandle.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(execution_);
                execution_ = 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 {
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return xla.Xla.internal_static_xla_WaitForExecutionRequest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return xla.Xla.internal_static_xla_WaitForExecutionRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              xla.Xla.WaitForExecutionRequest.class, xla.Xla.WaitForExecutionRequest.Builder.class);
    }

    public static final int EXECUTION_FIELD_NUMBER = 1;
    private xla.XlaData.ExecutionHandle execution_;
    /**
     * <code>.xla.ExecutionHandle execution = 1;</code>
     */
    public boolean hasExecution() {
      return execution_ != null;
    }
    /**
     * <code>.xla.ExecutionHandle execution = 1;</code>
     */
    public xla.XlaData.ExecutionHandle getExecution() {
      return execution_ == null ? xla.XlaData.ExecutionHandle.getDefaultInstance() : execution_;
    }
    /**
     * <code>.xla.ExecutionHandle execution = 1;</code>
     */
    public xla.XlaData.ExecutionHandleOrBuilder getExecutionOrBuilder() {
      return getExecution();
    }

    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 (execution_ != null) {
        output.writeMessage(1, getExecution());
      }
    }

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

      size = 0;
      if (execution_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getExecution());
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof xla.Xla.WaitForExecutionRequest)) {
        return super.equals(obj);
      }
      xla.Xla.WaitForExecutionRequest other = (xla.Xla.WaitForExecutionRequest) obj;

      boolean result = true;
      result = result && (hasExecution() == other.hasExecution());
      if (hasExecution()) {
        result = result && getExecution()
            .equals(other.getExecution());
      }
      return result;
    }

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

    public static xla.Xla.WaitForExecutionRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.WaitForExecutionRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.WaitForExecutionRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.WaitForExecutionRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.WaitForExecutionRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.WaitForExecutionRequest 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 xla.Xla.WaitForExecutionRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static xla.Xla.WaitForExecutionRequest 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 xla.Xla.WaitForExecutionRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.WaitForExecutionRequest 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(xla.Xla.WaitForExecutionRequest 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 xla.WaitForExecutionRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:xla.WaitForExecutionRequest)
        xla.Xla.WaitForExecutionRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return xla.Xla.internal_static_xla_WaitForExecutionRequest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return xla.Xla.internal_static_xla_WaitForExecutionRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                xla.Xla.WaitForExecutionRequest.class, xla.Xla.WaitForExecutionRequest.Builder.class);
      }

      // Construct using xla.Xla.WaitForExecutionRequest.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 (executionBuilder_ == null) {
          execution_ = null;
        } else {
          execution_ = null;
          executionBuilder_ = null;
        }
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return xla.Xla.internal_static_xla_WaitForExecutionRequest_descriptor;
      }

      public xla.Xla.WaitForExecutionRequest getDefaultInstanceForType() {
        return xla.Xla.WaitForExecutionRequest.getDefaultInstance();
      }

      public xla.Xla.WaitForExecutionRequest build() {
        xla.Xla.WaitForExecutionRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public xla.Xla.WaitForExecutionRequest buildPartial() {
        xla.Xla.WaitForExecutionRequest result = new xla.Xla.WaitForExecutionRequest(this);
        if (executionBuilder_ == null) {
          result.execution_ = execution_;
        } else {
          result.execution_ = executionBuilder_.build();
        }
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof xla.Xla.WaitForExecutionRequest) {
          return mergeFrom((xla.Xla.WaitForExecutionRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(xla.Xla.WaitForExecutionRequest other) {
        if (other == xla.Xla.WaitForExecutionRequest.getDefaultInstance()) return this;
        if (other.hasExecution()) {
          mergeExecution(other.getExecution());
        }
        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 {
        xla.Xla.WaitForExecutionRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (xla.Xla.WaitForExecutionRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private xla.XlaData.ExecutionHandle execution_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.XlaData.ExecutionHandle, xla.XlaData.ExecutionHandle.Builder, xla.XlaData.ExecutionHandleOrBuilder> executionBuilder_;
      /**
       * <code>.xla.ExecutionHandle execution = 1;</code>
       */
      public boolean hasExecution() {
        return executionBuilder_ != null || execution_ != null;
      }
      /**
       * <code>.xla.ExecutionHandle execution = 1;</code>
       */
      public xla.XlaData.ExecutionHandle getExecution() {
        if (executionBuilder_ == null) {
          return execution_ == null ? xla.XlaData.ExecutionHandle.getDefaultInstance() : execution_;
        } else {
          return executionBuilder_.getMessage();
        }
      }
      /**
       * <code>.xla.ExecutionHandle execution = 1;</code>
       */
      public Builder setExecution(xla.XlaData.ExecutionHandle value) {
        if (executionBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          execution_ = value;
          onChanged();
        } else {
          executionBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.xla.ExecutionHandle execution = 1;</code>
       */
      public Builder setExecution(
          xla.XlaData.ExecutionHandle.Builder builderForValue) {
        if (executionBuilder_ == null) {
          execution_ = builderForValue.build();
          onChanged();
        } else {
          executionBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.xla.ExecutionHandle execution = 1;</code>
       */
      public Builder mergeExecution(xla.XlaData.ExecutionHandle value) {
        if (executionBuilder_ == null) {
          if (execution_ != null) {
            execution_ =
              xla.XlaData.ExecutionHandle.newBuilder(execution_).mergeFrom(value).buildPartial();
          } else {
            execution_ = value;
          }
          onChanged();
        } else {
          executionBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.xla.ExecutionHandle execution = 1;</code>
       */
      public Builder clearExecution() {
        if (executionBuilder_ == null) {
          execution_ = null;
          onChanged();
        } else {
          execution_ = null;
          executionBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.xla.ExecutionHandle execution = 1;</code>
       */
      public xla.XlaData.ExecutionHandle.Builder getExecutionBuilder() {
        
        onChanged();
        return getExecutionFieldBuilder().getBuilder();
      }
      /**
       * <code>.xla.ExecutionHandle execution = 1;</code>
       */
      public xla.XlaData.ExecutionHandleOrBuilder getExecutionOrBuilder() {
        if (executionBuilder_ != null) {
          return executionBuilder_.getMessageOrBuilder();
        } else {
          return execution_ == null ?
              xla.XlaData.ExecutionHandle.getDefaultInstance() : execution_;
        }
      }
      /**
       * <code>.xla.ExecutionHandle execution = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.XlaData.ExecutionHandle, xla.XlaData.ExecutionHandle.Builder, xla.XlaData.ExecutionHandleOrBuilder> 
          getExecutionFieldBuilder() {
        if (executionBuilder_ == null) {
          executionBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              xla.XlaData.ExecutionHandle, xla.XlaData.ExecutionHandle.Builder, xla.XlaData.ExecutionHandleOrBuilder>(
                  getExecution(),
                  getParentForChildren(),
                  isClean());
          execution_ = null;
        }
        return executionBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

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


      // @@protoc_insertion_point(builder_scope:xla.WaitForExecutionRequest)
    }

    // @@protoc_insertion_point(class_scope:xla.WaitForExecutionRequest)
    private static final xla.Xla.WaitForExecutionRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new xla.Xla.WaitForExecutionRequest();
    }

    public static xla.Xla.WaitForExecutionRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public xla.Xla.WaitForExecutionRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface WaitForExecutionResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:xla.WaitForExecutionResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.xla.GlobalDataHandle output = 1;</code>
     */
    boolean hasOutput();
    /**
     * <code>.xla.GlobalDataHandle output = 1;</code>
     */
    xla.XlaData.GlobalDataHandle getOutput();
    /**
     * <code>.xla.GlobalDataHandle output = 1;</code>
     */
    xla.XlaData.GlobalDataHandleOrBuilder getOutputOrBuilder();

    /**
     * <code>.xla.ExecutionProfile profile = 2;</code>
     */
    boolean hasProfile();
    /**
     * <code>.xla.ExecutionProfile profile = 2;</code>
     */
    xla.XlaData.ExecutionProfile getProfile();
    /**
     * <code>.xla.ExecutionProfile profile = 2;</code>
     */
    xla.XlaData.ExecutionProfileOrBuilder getProfileOrBuilder();
  }
  /**
   * Protobuf type {@code xla.WaitForExecutionResponse}
   */
  public  static final class WaitForExecutionResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:xla.WaitForExecutionResponse)
      WaitForExecutionResponseOrBuilder {
    // Use WaitForExecutionResponse.newBuilder() to construct.
    private WaitForExecutionResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private WaitForExecutionResponse() {
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private WaitForExecutionResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              xla.XlaData.GlobalDataHandle.Builder subBuilder = null;
              if (output_ != null) {
                subBuilder = output_.toBuilder();
              }
              output_ = input.readMessage(xla.XlaData.GlobalDataHandle.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(output_);
                output_ = subBuilder.buildPartial();
              }

              break;
            }
            case 18: {
              xla.XlaData.ExecutionProfile.Builder subBuilder = null;
              if (profile_ != null) {
                subBuilder = profile_.toBuilder();
              }
              profile_ = input.readMessage(xla.XlaData.ExecutionProfile.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(profile_);
                profile_ = 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 {
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return xla.Xla.internal_static_xla_WaitForExecutionResponse_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return xla.Xla.internal_static_xla_WaitForExecutionResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              xla.Xla.WaitForExecutionResponse.class, xla.Xla.WaitForExecutionResponse.Builder.class);
    }

    public static final int OUTPUT_FIELD_NUMBER = 1;
    private xla.XlaData.GlobalDataHandle output_;
    /**
     * <code>.xla.GlobalDataHandle output = 1;</code>
     */
    public boolean hasOutput() {
      return output_ != null;
    }
    /**
     * <code>.xla.GlobalDataHandle output = 1;</code>
     */
    public xla.XlaData.GlobalDataHandle getOutput() {
      return output_ == null ? xla.XlaData.GlobalDataHandle.getDefaultInstance() : output_;
    }
    /**
     * <code>.xla.GlobalDataHandle output = 1;</code>
     */
    public xla.XlaData.GlobalDataHandleOrBuilder getOutputOrBuilder() {
      return getOutput();
    }

    public static final int PROFILE_FIELD_NUMBER = 2;
    private xla.XlaData.ExecutionProfile profile_;
    /**
     * <code>.xla.ExecutionProfile profile = 2;</code>
     */
    public boolean hasProfile() {
      return profile_ != null;
    }
    /**
     * <code>.xla.ExecutionProfile profile = 2;</code>
     */
    public xla.XlaData.ExecutionProfile getProfile() {
      return profile_ == null ? xla.XlaData.ExecutionProfile.getDefaultInstance() : profile_;
    }
    /**
     * <code>.xla.ExecutionProfile profile = 2;</code>
     */
    public xla.XlaData.ExecutionProfileOrBuilder getProfileOrBuilder() {
      return getProfile();
    }

    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 (output_ != null) {
        output.writeMessage(1, getOutput());
      }
      if (profile_ != null) {
        output.writeMessage(2, getProfile());
      }
    }

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

      size = 0;
      if (output_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getOutput());
      }
      if (profile_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getProfile());
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof xla.Xla.WaitForExecutionResponse)) {
        return super.equals(obj);
      }
      xla.Xla.WaitForExecutionResponse other = (xla.Xla.WaitForExecutionResponse) obj;

      boolean result = true;
      result = result && (hasOutput() == other.hasOutput());
      if (hasOutput()) {
        result = result && getOutput()
            .equals(other.getOutput());
      }
      result = result && (hasProfile() == other.hasProfile());
      if (hasProfile()) {
        result = result && getProfile()
            .equals(other.getProfile());
      }
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasOutput()) {
        hash = (37 * hash) + OUTPUT_FIELD_NUMBER;
        hash = (53 * hash) + getOutput().hashCode();
      }
      if (hasProfile()) {
        hash = (37 * hash) + PROFILE_FIELD_NUMBER;
        hash = (53 * hash) + getProfile().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static xla.Xla.WaitForExecutionResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.WaitForExecutionResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.WaitForExecutionResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.WaitForExecutionResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.WaitForExecutionResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.WaitForExecutionResponse 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 xla.Xla.WaitForExecutionResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static xla.Xla.WaitForExecutionResponse 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 xla.Xla.WaitForExecutionResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.WaitForExecutionResponse 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(xla.Xla.WaitForExecutionResponse 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 xla.WaitForExecutionResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:xla.WaitForExecutionResponse)
        xla.Xla.WaitForExecutionResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return xla.Xla.internal_static_xla_WaitForExecutionResponse_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return xla.Xla.internal_static_xla_WaitForExecutionResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                xla.Xla.WaitForExecutionResponse.class, xla.Xla.WaitForExecutionResponse.Builder.class);
      }

      // Construct using xla.Xla.WaitForExecutionResponse.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 (outputBuilder_ == null) {
          output_ = null;
        } else {
          output_ = null;
          outputBuilder_ = null;
        }
        if (profileBuilder_ == null) {
          profile_ = null;
        } else {
          profile_ = null;
          profileBuilder_ = null;
        }
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return xla.Xla.internal_static_xla_WaitForExecutionResponse_descriptor;
      }

      public xla.Xla.WaitForExecutionResponse getDefaultInstanceForType() {
        return xla.Xla.WaitForExecutionResponse.getDefaultInstance();
      }

      public xla.Xla.WaitForExecutionResponse build() {
        xla.Xla.WaitForExecutionResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public xla.Xla.WaitForExecutionResponse buildPartial() {
        xla.Xla.WaitForExecutionResponse result = new xla.Xla.WaitForExecutionResponse(this);
        if (outputBuilder_ == null) {
          result.output_ = output_;
        } else {
          result.output_ = outputBuilder_.build();
        }
        if (profileBuilder_ == null) {
          result.profile_ = profile_;
        } else {
          result.profile_ = profileBuilder_.build();
        }
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof xla.Xla.WaitForExecutionResponse) {
          return mergeFrom((xla.Xla.WaitForExecutionResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(xla.Xla.WaitForExecutionResponse other) {
        if (other == xla.Xla.WaitForExecutionResponse.getDefaultInstance()) return this;
        if (other.hasOutput()) {
          mergeOutput(other.getOutput());
        }
        if (other.hasProfile()) {
          mergeProfile(other.getProfile());
        }
        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 {
        xla.Xla.WaitForExecutionResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (xla.Xla.WaitForExecutionResponse) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private xla.XlaData.GlobalDataHandle output_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.XlaData.GlobalDataHandle, xla.XlaData.GlobalDataHandle.Builder, xla.XlaData.GlobalDataHandleOrBuilder> outputBuilder_;
      /**
       * <code>.xla.GlobalDataHandle output = 1;</code>
       */
      public boolean hasOutput() {
        return outputBuilder_ != null || output_ != null;
      }
      /**
       * <code>.xla.GlobalDataHandle output = 1;</code>
       */
      public xla.XlaData.GlobalDataHandle getOutput() {
        if (outputBuilder_ == null) {
          return output_ == null ? xla.XlaData.GlobalDataHandle.getDefaultInstance() : output_;
        } else {
          return outputBuilder_.getMessage();
        }
      }
      /**
       * <code>.xla.GlobalDataHandle output = 1;</code>
       */
      public Builder setOutput(xla.XlaData.GlobalDataHandle value) {
        if (outputBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          output_ = value;
          onChanged();
        } else {
          outputBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.xla.GlobalDataHandle output = 1;</code>
       */
      public Builder setOutput(
          xla.XlaData.GlobalDataHandle.Builder builderForValue) {
        if (outputBuilder_ == null) {
          output_ = builderForValue.build();
          onChanged();
        } else {
          outputBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.xla.GlobalDataHandle output = 1;</code>
       */
      public Builder mergeOutput(xla.XlaData.GlobalDataHandle value) {
        if (outputBuilder_ == null) {
          if (output_ != null) {
            output_ =
              xla.XlaData.GlobalDataHandle.newBuilder(output_).mergeFrom(value).buildPartial();
          } else {
            output_ = value;
          }
          onChanged();
        } else {
          outputBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.xla.GlobalDataHandle output = 1;</code>
       */
      public Builder clearOutput() {
        if (outputBuilder_ == null) {
          output_ = null;
          onChanged();
        } else {
          output_ = null;
          outputBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.xla.GlobalDataHandle output = 1;</code>
       */
      public xla.XlaData.GlobalDataHandle.Builder getOutputBuilder() {
        
        onChanged();
        return getOutputFieldBuilder().getBuilder();
      }
      /**
       * <code>.xla.GlobalDataHandle output = 1;</code>
       */
      public xla.XlaData.GlobalDataHandleOrBuilder getOutputOrBuilder() {
        if (outputBuilder_ != null) {
          return outputBuilder_.getMessageOrBuilder();
        } else {
          return output_ == null ?
              xla.XlaData.GlobalDataHandle.getDefaultInstance() : output_;
        }
      }
      /**
       * <code>.xla.GlobalDataHandle output = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.XlaData.GlobalDataHandle, xla.XlaData.GlobalDataHandle.Builder, xla.XlaData.GlobalDataHandleOrBuilder> 
          getOutputFieldBuilder() {
        if (outputBuilder_ == null) {
          outputBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              xla.XlaData.GlobalDataHandle, xla.XlaData.GlobalDataHandle.Builder, xla.XlaData.GlobalDataHandleOrBuilder>(
                  getOutput(),
                  getParentForChildren(),
                  isClean());
          output_ = null;
        }
        return outputBuilder_;
      }

      private xla.XlaData.ExecutionProfile profile_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.XlaData.ExecutionProfile, xla.XlaData.ExecutionProfile.Builder, xla.XlaData.ExecutionProfileOrBuilder> profileBuilder_;
      /**
       * <code>.xla.ExecutionProfile profile = 2;</code>
       */
      public boolean hasProfile() {
        return profileBuilder_ != null || profile_ != null;
      }
      /**
       * <code>.xla.ExecutionProfile profile = 2;</code>
       */
      public xla.XlaData.ExecutionProfile getProfile() {
        if (profileBuilder_ == null) {
          return profile_ == null ? xla.XlaData.ExecutionProfile.getDefaultInstance() : profile_;
        } else {
          return profileBuilder_.getMessage();
        }
      }
      /**
       * <code>.xla.ExecutionProfile profile = 2;</code>
       */
      public Builder setProfile(xla.XlaData.ExecutionProfile value) {
        if (profileBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          profile_ = value;
          onChanged();
        } else {
          profileBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.xla.ExecutionProfile profile = 2;</code>
       */
      public Builder setProfile(
          xla.XlaData.ExecutionProfile.Builder builderForValue) {
        if (profileBuilder_ == null) {
          profile_ = builderForValue.build();
          onChanged();
        } else {
          profileBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.xla.ExecutionProfile profile = 2;</code>
       */
      public Builder mergeProfile(xla.XlaData.ExecutionProfile value) {
        if (profileBuilder_ == null) {
          if (profile_ != null) {
            profile_ =
              xla.XlaData.ExecutionProfile.newBuilder(profile_).mergeFrom(value).buildPartial();
          } else {
            profile_ = value;
          }
          onChanged();
        } else {
          profileBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.xla.ExecutionProfile profile = 2;</code>
       */
      public Builder clearProfile() {
        if (profileBuilder_ == null) {
          profile_ = null;
          onChanged();
        } else {
          profile_ = null;
          profileBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.xla.ExecutionProfile profile = 2;</code>
       */
      public xla.XlaData.ExecutionProfile.Builder getProfileBuilder() {
        
        onChanged();
        return getProfileFieldBuilder().getBuilder();
      }
      /**
       * <code>.xla.ExecutionProfile profile = 2;</code>
       */
      public xla.XlaData.ExecutionProfileOrBuilder getProfileOrBuilder() {
        if (profileBuilder_ != null) {
          return profileBuilder_.getMessageOrBuilder();
        } else {
          return profile_ == null ?
              xla.XlaData.ExecutionProfile.getDefaultInstance() : profile_;
        }
      }
      /**
       * <code>.xla.ExecutionProfile profile = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.XlaData.ExecutionProfile, xla.XlaData.ExecutionProfile.Builder, xla.XlaData.ExecutionProfileOrBuilder> 
          getProfileFieldBuilder() {
        if (profileBuilder_ == null) {
          profileBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              xla.XlaData.ExecutionProfile, xla.XlaData.ExecutionProfile.Builder, xla.XlaData.ExecutionProfileOrBuilder>(
                  getProfile(),
                  getParentForChildren(),
                  isClean());
          profile_ = null;
        }
        return profileBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

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


      // @@protoc_insertion_point(builder_scope:xla.WaitForExecutionResponse)
    }

    // @@protoc_insertion_point(class_scope:xla.WaitForExecutionResponse)
    private static final xla.Xla.WaitForExecutionResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new xla.Xla.WaitForExecutionResponse();
    }

    public static xla.Xla.WaitForExecutionResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public xla.Xla.WaitForExecutionResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface IsConstantRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:xla.IsConstantRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.xla.ComputationHandle computation = 1;</code>
     */
    boolean hasComputation();
    /**
     * <code>.xla.ComputationHandle computation = 1;</code>
     */
    xla.XlaData.ComputationHandle getComputation();
    /**
     * <code>.xla.ComputationHandle computation = 1;</code>
     */
    xla.XlaData.ComputationHandleOrBuilder getComputationOrBuilder();

    /**
     * <code>.xla.ComputationDataHandle operand = 2;</code>
     */
    boolean hasOperand();
    /**
     * <code>.xla.ComputationDataHandle operand = 2;</code>
     */
    xla.XlaData.ComputationDataHandle getOperand();
    /**
     * <code>.xla.ComputationDataHandle operand = 2;</code>
     */
    xla.XlaData.ComputationDataHandleOrBuilder getOperandOrBuilder();

    /**
     * <code>int64 num_parameters = 3;</code>
     */
    long getNumParameters();
  }
  /**
   * Protobuf type {@code xla.IsConstantRequest}
   */
  public  static final class IsConstantRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:xla.IsConstantRequest)
      IsConstantRequestOrBuilder {
    // Use IsConstantRequest.newBuilder() to construct.
    private IsConstantRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private IsConstantRequest() {
      numParameters_ = 0L;
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private IsConstantRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              xla.XlaData.ComputationHandle.Builder subBuilder = null;
              if (computation_ != null) {
                subBuilder = computation_.toBuilder();
              }
              computation_ = input.readMessage(xla.XlaData.ComputationHandle.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(computation_);
                computation_ = subBuilder.buildPartial();
              }

              break;
            }
            case 18: {
              xla.XlaData.ComputationDataHandle.Builder subBuilder = null;
              if (operand_ != null) {
                subBuilder = operand_.toBuilder();
              }
              operand_ = input.readMessage(xla.XlaData.ComputationDataHandle.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(operand_);
                operand_ = subBuilder.buildPartial();
              }

              break;
            }
            case 24: {

              numParameters_ = input.readInt64();
              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 {
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return xla.Xla.internal_static_xla_IsConstantRequest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return xla.Xla.internal_static_xla_IsConstantRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              xla.Xla.IsConstantRequest.class, xla.Xla.IsConstantRequest.Builder.class);
    }

    public static final int COMPUTATION_FIELD_NUMBER = 1;
    private xla.XlaData.ComputationHandle computation_;
    /**
     * <code>.xla.ComputationHandle computation = 1;</code>
     */
    public boolean hasComputation() {
      return computation_ != null;
    }
    /**
     * <code>.xla.ComputationHandle computation = 1;</code>
     */
    public xla.XlaData.ComputationHandle getComputation() {
      return computation_ == null ? xla.XlaData.ComputationHandle.getDefaultInstance() : computation_;
    }
    /**
     * <code>.xla.ComputationHandle computation = 1;</code>
     */
    public xla.XlaData.ComputationHandleOrBuilder getComputationOrBuilder() {
      return getComputation();
    }

    public static final int OPERAND_FIELD_NUMBER = 2;
    private xla.XlaData.ComputationDataHandle operand_;
    /**
     * <code>.xla.ComputationDataHandle operand = 2;</code>
     */
    public boolean hasOperand() {
      return operand_ != null;
    }
    /**
     * <code>.xla.ComputationDataHandle operand = 2;</code>
     */
    public xla.XlaData.ComputationDataHandle getOperand() {
      return operand_ == null ? xla.XlaData.ComputationDataHandle.getDefaultInstance() : operand_;
    }
    /**
     * <code>.xla.ComputationDataHandle operand = 2;</code>
     */
    public xla.XlaData.ComputationDataHandleOrBuilder getOperandOrBuilder() {
      return getOperand();
    }

    public static final int NUM_PARAMETERS_FIELD_NUMBER = 3;
    private long numParameters_;
    /**
     * <code>int64 num_parameters = 3;</code>
     */
    public long getNumParameters() {
      return numParameters_;
    }

    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 (computation_ != null) {
        output.writeMessage(1, getComputation());
      }
      if (operand_ != null) {
        output.writeMessage(2, getOperand());
      }
      if (numParameters_ != 0L) {
        output.writeInt64(3, numParameters_);
      }
    }

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

      size = 0;
      if (computation_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getComputation());
      }
      if (operand_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getOperand());
      }
      if (numParameters_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(3, numParameters_);
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof xla.Xla.IsConstantRequest)) {
        return super.equals(obj);
      }
      xla.Xla.IsConstantRequest other = (xla.Xla.IsConstantRequest) obj;

      boolean result = true;
      result = result && (hasComputation() == other.hasComputation());
      if (hasComputation()) {
        result = result && getComputation()
            .equals(other.getComputation());
      }
      result = result && (hasOperand() == other.hasOperand());
      if (hasOperand()) {
        result = result && getOperand()
            .equals(other.getOperand());
      }
      result = result && (getNumParameters()
          == other.getNumParameters());
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasComputation()) {
        hash = (37 * hash) + COMPUTATION_FIELD_NUMBER;
        hash = (53 * hash) + getComputation().hashCode();
      }
      if (hasOperand()) {
        hash = (37 * hash) + OPERAND_FIELD_NUMBER;
        hash = (53 * hash) + getOperand().hashCode();
      }
      hash = (37 * hash) + NUM_PARAMETERS_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getNumParameters());
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static xla.Xla.IsConstantRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.IsConstantRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.IsConstantRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.IsConstantRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.IsConstantRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.IsConstantRequest 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 xla.Xla.IsConstantRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static xla.Xla.IsConstantRequest 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 xla.Xla.IsConstantRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.IsConstantRequest 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(xla.Xla.IsConstantRequest 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 xla.IsConstantRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:xla.IsConstantRequest)
        xla.Xla.IsConstantRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return xla.Xla.internal_static_xla_IsConstantRequest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return xla.Xla.internal_static_xla_IsConstantRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                xla.Xla.IsConstantRequest.class, xla.Xla.IsConstantRequest.Builder.class);
      }

      // Construct using xla.Xla.IsConstantRequest.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 (computationBuilder_ == null) {
          computation_ = null;
        } else {
          computation_ = null;
          computationBuilder_ = null;
        }
        if (operandBuilder_ == null) {
          operand_ = null;
        } else {
          operand_ = null;
          operandBuilder_ = null;
        }
        numParameters_ = 0L;

        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return xla.Xla.internal_static_xla_IsConstantRequest_descriptor;
      }

      public xla.Xla.IsConstantRequest getDefaultInstanceForType() {
        return xla.Xla.IsConstantRequest.getDefaultInstance();
      }

      public xla.Xla.IsConstantRequest build() {
        xla.Xla.IsConstantRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public xla.Xla.IsConstantRequest buildPartial() {
        xla.Xla.IsConstantRequest result = new xla.Xla.IsConstantRequest(this);
        if (computationBuilder_ == null) {
          result.computation_ = computation_;
        } else {
          result.computation_ = computationBuilder_.build();
        }
        if (operandBuilder_ == null) {
          result.operand_ = operand_;
        } else {
          result.operand_ = operandBuilder_.build();
        }
        result.numParameters_ = numParameters_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof xla.Xla.IsConstantRequest) {
          return mergeFrom((xla.Xla.IsConstantRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(xla.Xla.IsConstantRequest other) {
        if (other == xla.Xla.IsConstantRequest.getDefaultInstance()) return this;
        if (other.hasComputation()) {
          mergeComputation(other.getComputation());
        }
        if (other.hasOperand()) {
          mergeOperand(other.getOperand());
        }
        if (other.getNumParameters() != 0L) {
          setNumParameters(other.getNumParameters());
        }
        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 {
        xla.Xla.IsConstantRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (xla.Xla.IsConstantRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private xla.XlaData.ComputationHandle computation_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.XlaData.ComputationHandle, xla.XlaData.ComputationHandle.Builder, xla.XlaData.ComputationHandleOrBuilder> computationBuilder_;
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      public boolean hasComputation() {
        return computationBuilder_ != null || computation_ != null;
      }
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      public xla.XlaData.ComputationHandle getComputation() {
        if (computationBuilder_ == null) {
          return computation_ == null ? xla.XlaData.ComputationHandle.getDefaultInstance() : computation_;
        } else {
          return computationBuilder_.getMessage();
        }
      }
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      public Builder setComputation(xla.XlaData.ComputationHandle value) {
        if (computationBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          computation_ = value;
          onChanged();
        } else {
          computationBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      public Builder setComputation(
          xla.XlaData.ComputationHandle.Builder builderForValue) {
        if (computationBuilder_ == null) {
          computation_ = builderForValue.build();
          onChanged();
        } else {
          computationBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      public Builder mergeComputation(xla.XlaData.ComputationHandle value) {
        if (computationBuilder_ == null) {
          if (computation_ != null) {
            computation_ =
              xla.XlaData.ComputationHandle.newBuilder(computation_).mergeFrom(value).buildPartial();
          } else {
            computation_ = value;
          }
          onChanged();
        } else {
          computationBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      public Builder clearComputation() {
        if (computationBuilder_ == null) {
          computation_ = null;
          onChanged();
        } else {
          computation_ = null;
          computationBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      public xla.XlaData.ComputationHandle.Builder getComputationBuilder() {
        
        onChanged();
        return getComputationFieldBuilder().getBuilder();
      }
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      public xla.XlaData.ComputationHandleOrBuilder getComputationOrBuilder() {
        if (computationBuilder_ != null) {
          return computationBuilder_.getMessageOrBuilder();
        } else {
          return computation_ == null ?
              xla.XlaData.ComputationHandle.getDefaultInstance() : computation_;
        }
      }
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.XlaData.ComputationHandle, xla.XlaData.ComputationHandle.Builder, xla.XlaData.ComputationHandleOrBuilder> 
          getComputationFieldBuilder() {
        if (computationBuilder_ == null) {
          computationBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              xla.XlaData.ComputationHandle, xla.XlaData.ComputationHandle.Builder, xla.XlaData.ComputationHandleOrBuilder>(
                  getComputation(),
                  getParentForChildren(),
                  isClean());
          computation_ = null;
        }
        return computationBuilder_;
      }

      private xla.XlaData.ComputationDataHandle operand_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.XlaData.ComputationDataHandle, xla.XlaData.ComputationDataHandle.Builder, xla.XlaData.ComputationDataHandleOrBuilder> operandBuilder_;
      /**
       * <code>.xla.ComputationDataHandle operand = 2;</code>
       */
      public boolean hasOperand() {
        return operandBuilder_ != null || operand_ != null;
      }
      /**
       * <code>.xla.ComputationDataHandle operand = 2;</code>
       */
      public xla.XlaData.ComputationDataHandle getOperand() {
        if (operandBuilder_ == null) {
          return operand_ == null ? xla.XlaData.ComputationDataHandle.getDefaultInstance() : operand_;
        } else {
          return operandBuilder_.getMessage();
        }
      }
      /**
       * <code>.xla.ComputationDataHandle operand = 2;</code>
       */
      public Builder setOperand(xla.XlaData.ComputationDataHandle value) {
        if (operandBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          operand_ = value;
          onChanged();
        } else {
          operandBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.xla.ComputationDataHandle operand = 2;</code>
       */
      public Builder setOperand(
          xla.XlaData.ComputationDataHandle.Builder builderForValue) {
        if (operandBuilder_ == null) {
          operand_ = builderForValue.build();
          onChanged();
        } else {
          operandBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.xla.ComputationDataHandle operand = 2;</code>
       */
      public Builder mergeOperand(xla.XlaData.ComputationDataHandle value) {
        if (operandBuilder_ == null) {
          if (operand_ != null) {
            operand_ =
              xla.XlaData.ComputationDataHandle.newBuilder(operand_).mergeFrom(value).buildPartial();
          } else {
            operand_ = value;
          }
          onChanged();
        } else {
          operandBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.xla.ComputationDataHandle operand = 2;</code>
       */
      public Builder clearOperand() {
        if (operandBuilder_ == null) {
          operand_ = null;
          onChanged();
        } else {
          operand_ = null;
          operandBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.xla.ComputationDataHandle operand = 2;</code>
       */
      public xla.XlaData.ComputationDataHandle.Builder getOperandBuilder() {
        
        onChanged();
        return getOperandFieldBuilder().getBuilder();
      }
      /**
       * <code>.xla.ComputationDataHandle operand = 2;</code>
       */
      public xla.XlaData.ComputationDataHandleOrBuilder getOperandOrBuilder() {
        if (operandBuilder_ != null) {
          return operandBuilder_.getMessageOrBuilder();
        } else {
          return operand_ == null ?
              xla.XlaData.ComputationDataHandle.getDefaultInstance() : operand_;
        }
      }
      /**
       * <code>.xla.ComputationDataHandle operand = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.XlaData.ComputationDataHandle, xla.XlaData.ComputationDataHandle.Builder, xla.XlaData.ComputationDataHandleOrBuilder> 
          getOperandFieldBuilder() {
        if (operandBuilder_ == null) {
          operandBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              xla.XlaData.ComputationDataHandle, xla.XlaData.ComputationDataHandle.Builder, xla.XlaData.ComputationDataHandleOrBuilder>(
                  getOperand(),
                  getParentForChildren(),
                  isClean());
          operand_ = null;
        }
        return operandBuilder_;
      }

      private long numParameters_ ;
      /**
       * <code>int64 num_parameters = 3;</code>
       */
      public long getNumParameters() {
        return numParameters_;
      }
      /**
       * <code>int64 num_parameters = 3;</code>
       */
      public Builder setNumParameters(long value) {
        
        numParameters_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>int64 num_parameters = 3;</code>
       */
      public Builder clearNumParameters() {
        
        numParameters_ = 0L;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

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


      // @@protoc_insertion_point(builder_scope:xla.IsConstantRequest)
    }

    // @@protoc_insertion_point(class_scope:xla.IsConstantRequest)
    private static final xla.Xla.IsConstantRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new xla.Xla.IsConstantRequest();
    }

    public static xla.Xla.IsConstantRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public xla.Xla.IsConstantRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface IsConstantResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:xla.IsConstantResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>bool is_constant = 1;</code>
     */
    boolean getIsConstant();
  }
  /**
   * Protobuf type {@code xla.IsConstantResponse}
   */
  public  static final class IsConstantResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:xla.IsConstantResponse)
      IsConstantResponseOrBuilder {
    // Use IsConstantResponse.newBuilder() to construct.
    private IsConstantResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private IsConstantResponse() {
      isConstant_ = false;
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private IsConstantResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 8: {

              isConstant_ = 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 {
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return xla.Xla.internal_static_xla_IsConstantResponse_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return xla.Xla.internal_static_xla_IsConstantResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              xla.Xla.IsConstantResponse.class, xla.Xla.IsConstantResponse.Builder.class);
    }

    public static final int IS_CONSTANT_FIELD_NUMBER = 1;
    private boolean isConstant_;
    /**
     * <code>bool is_constant = 1;</code>
     */
    public boolean getIsConstant() {
      return isConstant_;
    }

    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 (isConstant_ != false) {
        output.writeBool(1, isConstant_);
      }
    }

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

      size = 0;
      if (isConstant_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(1, isConstant_);
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof xla.Xla.IsConstantResponse)) {
        return super.equals(obj);
      }
      xla.Xla.IsConstantResponse other = (xla.Xla.IsConstantResponse) obj;

      boolean result = true;
      result = result && (getIsConstant()
          == other.getIsConstant());
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + IS_CONSTANT_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getIsConstant());
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static xla.Xla.IsConstantResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.IsConstantResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.IsConstantResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.IsConstantResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.IsConstantResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.IsConstantResponse 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 xla.Xla.IsConstantResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static xla.Xla.IsConstantResponse 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 xla.Xla.IsConstantResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.IsConstantResponse 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(xla.Xla.IsConstantResponse 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 xla.IsConstantResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:xla.IsConstantResponse)
        xla.Xla.IsConstantResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return xla.Xla.internal_static_xla_IsConstantResponse_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return xla.Xla.internal_static_xla_IsConstantResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                xla.Xla.IsConstantResponse.class, xla.Xla.IsConstantResponse.Builder.class);
      }

      // Construct using xla.Xla.IsConstantResponse.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();
        isConstant_ = false;

        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return xla.Xla.internal_static_xla_IsConstantResponse_descriptor;
      }

      public xla.Xla.IsConstantResponse getDefaultInstanceForType() {
        return xla.Xla.IsConstantResponse.getDefaultInstance();
      }

      public xla.Xla.IsConstantResponse build() {
        xla.Xla.IsConstantResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public xla.Xla.IsConstantResponse buildPartial() {
        xla.Xla.IsConstantResponse result = new xla.Xla.IsConstantResponse(this);
        result.isConstant_ = isConstant_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof xla.Xla.IsConstantResponse) {
          return mergeFrom((xla.Xla.IsConstantResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(xla.Xla.IsConstantResponse other) {
        if (other == xla.Xla.IsConstantResponse.getDefaultInstance()) return this;
        if (other.getIsConstant() != false) {
          setIsConstant(other.getIsConstant());
        }
        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 {
        xla.Xla.IsConstantResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (xla.Xla.IsConstantResponse) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private boolean isConstant_ ;
      /**
       * <code>bool is_constant = 1;</code>
       */
      public boolean getIsConstant() {
        return isConstant_;
      }
      /**
       * <code>bool is_constant = 1;</code>
       */
      public Builder setIsConstant(boolean value) {
        
        isConstant_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>bool is_constant = 1;</code>
       */
      public Builder clearIsConstant() {
        
        isConstant_ = false;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

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


      // @@protoc_insertion_point(builder_scope:xla.IsConstantResponse)
    }

    // @@protoc_insertion_point(class_scope:xla.IsConstantResponse)
    private static final xla.Xla.IsConstantResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new xla.Xla.IsConstantResponse();
    }

    public static xla.Xla.IsConstantResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public xla.Xla.IsConstantResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ComputeConstantRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:xla.ComputeConstantRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.xla.ComputationHandle computation = 1;</code>
     */
    boolean hasComputation();
    /**
     * <code>.xla.ComputationHandle computation = 1;</code>
     */
    xla.XlaData.ComputationHandle getComputation();
    /**
     * <code>.xla.ComputationHandle computation = 1;</code>
     */
    xla.XlaData.ComputationHandleOrBuilder getComputationOrBuilder();

    /**
     * <code>.xla.ComputationDataHandle operand = 2;</code>
     */
    boolean hasOperand();
    /**
     * <code>.xla.ComputationDataHandle operand = 2;</code>
     */
    xla.XlaData.ComputationDataHandle getOperand();
    /**
     * <code>.xla.ComputationDataHandle operand = 2;</code>
     */
    xla.XlaData.ComputationDataHandleOrBuilder getOperandOrBuilder();

    /**
     * <code>.xla.Layout output_layout = 3;</code>
     */
    boolean hasOutputLayout();
    /**
     * <code>.xla.Layout output_layout = 3;</code>
     */
    xla.XlaData.Layout getOutputLayout();
    /**
     * <code>.xla.Layout output_layout = 3;</code>
     */
    xla.XlaData.LayoutOrBuilder getOutputLayoutOrBuilder();

    /**
     * <code>repeated .xla.LiteralProto parameters = 4;</code>
     */
    java.util.List<xla.XlaData.LiteralProto> 
        getParametersList();
    /**
     * <code>repeated .xla.LiteralProto parameters = 4;</code>
     */
    xla.XlaData.LiteralProto getParameters(int index);
    /**
     * <code>repeated .xla.LiteralProto parameters = 4;</code>
     */
    int getParametersCount();
    /**
     * <code>repeated .xla.LiteralProto parameters = 4;</code>
     */
    java.util.List<? extends xla.XlaData.LiteralProtoOrBuilder> 
        getParametersOrBuilderList();
    /**
     * <code>repeated .xla.LiteralProto parameters = 4;</code>
     */
    xla.XlaData.LiteralProtoOrBuilder getParametersOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code xla.ComputeConstantRequest}
   */
  public  static final class ComputeConstantRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:xla.ComputeConstantRequest)
      ComputeConstantRequestOrBuilder {
    // Use ComputeConstantRequest.newBuilder() to construct.
    private ComputeConstantRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ComputeConstantRequest() {
      parameters_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private ComputeConstantRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              xla.XlaData.ComputationHandle.Builder subBuilder = null;
              if (computation_ != null) {
                subBuilder = computation_.toBuilder();
              }
              computation_ = input.readMessage(xla.XlaData.ComputationHandle.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(computation_);
                computation_ = subBuilder.buildPartial();
              }

              break;
            }
            case 18: {
              xla.XlaData.ComputationDataHandle.Builder subBuilder = null;
              if (operand_ != null) {
                subBuilder = operand_.toBuilder();
              }
              operand_ = input.readMessage(xla.XlaData.ComputationDataHandle.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(operand_);
                operand_ = subBuilder.buildPartial();
              }

              break;
            }
            case 26: {
              xla.XlaData.Layout.Builder subBuilder = null;
              if (outputLayout_ != null) {
                subBuilder = outputLayout_.toBuilder();
              }
              outputLayout_ = input.readMessage(xla.XlaData.Layout.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(outputLayout_);
                outputLayout_ = subBuilder.buildPartial();
              }

              break;
            }
            case 34: {
              if (!((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
                parameters_ = new java.util.ArrayList<xla.XlaData.LiteralProto>();
                mutable_bitField0_ |= 0x00000008;
              }
              parameters_.add(
                  input.readMessage(xla.XlaData.LiteralProto.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_ & 0x00000008) == 0x00000008)) {
          parameters_ = java.util.Collections.unmodifiableList(parameters_);
        }
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return xla.Xla.internal_static_xla_ComputeConstantRequest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return xla.Xla.internal_static_xla_ComputeConstantRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              xla.Xla.ComputeConstantRequest.class, xla.Xla.ComputeConstantRequest.Builder.class);
    }

    private int bitField0_;
    public static final int COMPUTATION_FIELD_NUMBER = 1;
    private xla.XlaData.ComputationHandle computation_;
    /**
     * <code>.xla.ComputationHandle computation = 1;</code>
     */
    public boolean hasComputation() {
      return computation_ != null;
    }
    /**
     * <code>.xla.ComputationHandle computation = 1;</code>
     */
    public xla.XlaData.ComputationHandle getComputation() {
      return computation_ == null ? xla.XlaData.ComputationHandle.getDefaultInstance() : computation_;
    }
    /**
     * <code>.xla.ComputationHandle computation = 1;</code>
     */
    public xla.XlaData.ComputationHandleOrBuilder getComputationOrBuilder() {
      return getComputation();
    }

    public static final int OPERAND_FIELD_NUMBER = 2;
    private xla.XlaData.ComputationDataHandle operand_;
    /**
     * <code>.xla.ComputationDataHandle operand = 2;</code>
     */
    public boolean hasOperand() {
      return operand_ != null;
    }
    /**
     * <code>.xla.ComputationDataHandle operand = 2;</code>
     */
    public xla.XlaData.ComputationDataHandle getOperand() {
      return operand_ == null ? xla.XlaData.ComputationDataHandle.getDefaultInstance() : operand_;
    }
    /**
     * <code>.xla.ComputationDataHandle operand = 2;</code>
     */
    public xla.XlaData.ComputationDataHandleOrBuilder getOperandOrBuilder() {
      return getOperand();
    }

    public static final int OUTPUT_LAYOUT_FIELD_NUMBER = 3;
    private xla.XlaData.Layout outputLayout_;
    /**
     * <code>.xla.Layout output_layout = 3;</code>
     */
    public boolean hasOutputLayout() {
      return outputLayout_ != null;
    }
    /**
     * <code>.xla.Layout output_layout = 3;</code>
     */
    public xla.XlaData.Layout getOutputLayout() {
      return outputLayout_ == null ? xla.XlaData.Layout.getDefaultInstance() : outputLayout_;
    }
    /**
     * <code>.xla.Layout output_layout = 3;</code>
     */
    public xla.XlaData.LayoutOrBuilder getOutputLayoutOrBuilder() {
      return getOutputLayout();
    }

    public static final int PARAMETERS_FIELD_NUMBER = 4;
    private java.util.List<xla.XlaData.LiteralProto> parameters_;
    /**
     * <code>repeated .xla.LiteralProto parameters = 4;</code>
     */
    public java.util.List<xla.XlaData.LiteralProto> getParametersList() {
      return parameters_;
    }
    /**
     * <code>repeated .xla.LiteralProto parameters = 4;</code>
     */
    public java.util.List<? extends xla.XlaData.LiteralProtoOrBuilder> 
        getParametersOrBuilderList() {
      return parameters_;
    }
    /**
     * <code>repeated .xla.LiteralProto parameters = 4;</code>
     */
    public int getParametersCount() {
      return parameters_.size();
    }
    /**
     * <code>repeated .xla.LiteralProto parameters = 4;</code>
     */
    public xla.XlaData.LiteralProto getParameters(int index) {
      return parameters_.get(index);
    }
    /**
     * <code>repeated .xla.LiteralProto parameters = 4;</code>
     */
    public xla.XlaData.LiteralProtoOrBuilder getParametersOrBuilder(
        int index) {
      return parameters_.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 (computation_ != null) {
        output.writeMessage(1, getComputation());
      }
      if (operand_ != null) {
        output.writeMessage(2, getOperand());
      }
      if (outputLayout_ != null) {
        output.writeMessage(3, getOutputLayout());
      }
      for (int i = 0; i < parameters_.size(); i++) {
        output.writeMessage(4, parameters_.get(i));
      }
    }

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

      size = 0;
      if (computation_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getComputation());
      }
      if (operand_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getOperand());
      }
      if (outputLayout_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getOutputLayout());
      }
      for (int i = 0; i < parameters_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, parameters_.get(i));
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof xla.Xla.ComputeConstantRequest)) {
        return super.equals(obj);
      }
      xla.Xla.ComputeConstantRequest other = (xla.Xla.ComputeConstantRequest) obj;

      boolean result = true;
      result = result && (hasComputation() == other.hasComputation());
      if (hasComputation()) {
        result = result && getComputation()
            .equals(other.getComputation());
      }
      result = result && (hasOperand() == other.hasOperand());
      if (hasOperand()) {
        result = result && getOperand()
            .equals(other.getOperand());
      }
      result = result && (hasOutputLayout() == other.hasOutputLayout());
      if (hasOutputLayout()) {
        result = result && getOutputLayout()
            .equals(other.getOutputLayout());
      }
      result = result && getParametersList()
          .equals(other.getParametersList());
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasComputation()) {
        hash = (37 * hash) + COMPUTATION_FIELD_NUMBER;
        hash = (53 * hash) + getComputation().hashCode();
      }
      if (hasOperand()) {
        hash = (37 * hash) + OPERAND_FIELD_NUMBER;
        hash = (53 * hash) + getOperand().hashCode();
      }
      if (hasOutputLayout()) {
        hash = (37 * hash) + OUTPUT_LAYOUT_FIELD_NUMBER;
        hash = (53 * hash) + getOutputLayout().hashCode();
      }
      if (getParametersCount() > 0) {
        hash = (37 * hash) + PARAMETERS_FIELD_NUMBER;
        hash = (53 * hash) + getParametersList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static xla.Xla.ComputeConstantRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.ComputeConstantRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.ComputeConstantRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.ComputeConstantRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.ComputeConstantRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.ComputeConstantRequest 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 xla.Xla.ComputeConstantRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static xla.Xla.ComputeConstantRequest 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 xla.Xla.ComputeConstantRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.ComputeConstantRequest 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(xla.Xla.ComputeConstantRequest 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 xla.ComputeConstantRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:xla.ComputeConstantRequest)
        xla.Xla.ComputeConstantRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return xla.Xla.internal_static_xla_ComputeConstantRequest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return xla.Xla.internal_static_xla_ComputeConstantRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                xla.Xla.ComputeConstantRequest.class, xla.Xla.ComputeConstantRequest.Builder.class);
      }

      // Construct using xla.Xla.ComputeConstantRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getParametersFieldBuilder();
        }
      }
      public Builder clear() {
        super.clear();
        if (computationBuilder_ == null) {
          computation_ = null;
        } else {
          computation_ = null;
          computationBuilder_ = null;
        }
        if (operandBuilder_ == null) {
          operand_ = null;
        } else {
          operand_ = null;
          operandBuilder_ = null;
        }
        if (outputLayoutBuilder_ == null) {
          outputLayout_ = null;
        } else {
          outputLayout_ = null;
          outputLayoutBuilder_ = null;
        }
        if (parametersBuilder_ == null) {
          parameters_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000008);
        } else {
          parametersBuilder_.clear();
        }
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return xla.Xla.internal_static_xla_ComputeConstantRequest_descriptor;
      }

      public xla.Xla.ComputeConstantRequest getDefaultInstanceForType() {
        return xla.Xla.ComputeConstantRequest.getDefaultInstance();
      }

      public xla.Xla.ComputeConstantRequest build() {
        xla.Xla.ComputeConstantRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public xla.Xla.ComputeConstantRequest buildPartial() {
        xla.Xla.ComputeConstantRequest result = new xla.Xla.ComputeConstantRequest(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (computationBuilder_ == null) {
          result.computation_ = computation_;
        } else {
          result.computation_ = computationBuilder_.build();
        }
        if (operandBuilder_ == null) {
          result.operand_ = operand_;
        } else {
          result.operand_ = operandBuilder_.build();
        }
        if (outputLayoutBuilder_ == null) {
          result.outputLayout_ = outputLayout_;
        } else {
          result.outputLayout_ = outputLayoutBuilder_.build();
        }
        if (parametersBuilder_ == null) {
          if (((bitField0_ & 0x00000008) == 0x00000008)) {
            parameters_ = java.util.Collections.unmodifiableList(parameters_);
            bitField0_ = (bitField0_ & ~0x00000008);
          }
          result.parameters_ = parameters_;
        } else {
          result.parameters_ = parametersBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof xla.Xla.ComputeConstantRequest) {
          return mergeFrom((xla.Xla.ComputeConstantRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(xla.Xla.ComputeConstantRequest other) {
        if (other == xla.Xla.ComputeConstantRequest.getDefaultInstance()) return this;
        if (other.hasComputation()) {
          mergeComputation(other.getComputation());
        }
        if (other.hasOperand()) {
          mergeOperand(other.getOperand());
        }
        if (other.hasOutputLayout()) {
          mergeOutputLayout(other.getOutputLayout());
        }
        if (parametersBuilder_ == null) {
          if (!other.parameters_.isEmpty()) {
            if (parameters_.isEmpty()) {
              parameters_ = other.parameters_;
              bitField0_ = (bitField0_ & ~0x00000008);
            } else {
              ensureParametersIsMutable();
              parameters_.addAll(other.parameters_);
            }
            onChanged();
          }
        } else {
          if (!other.parameters_.isEmpty()) {
            if (parametersBuilder_.isEmpty()) {
              parametersBuilder_.dispose();
              parametersBuilder_ = null;
              parameters_ = other.parameters_;
              bitField0_ = (bitField0_ & ~0x00000008);
              parametersBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getParametersFieldBuilder() : null;
            } else {
              parametersBuilder_.addAllMessages(other.parameters_);
            }
          }
        }
        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 {
        xla.Xla.ComputeConstantRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (xla.Xla.ComputeConstantRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private xla.XlaData.ComputationHandle computation_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.XlaData.ComputationHandle, xla.XlaData.ComputationHandle.Builder, xla.XlaData.ComputationHandleOrBuilder> computationBuilder_;
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      public boolean hasComputation() {
        return computationBuilder_ != null || computation_ != null;
      }
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      public xla.XlaData.ComputationHandle getComputation() {
        if (computationBuilder_ == null) {
          return computation_ == null ? xla.XlaData.ComputationHandle.getDefaultInstance() : computation_;
        } else {
          return computationBuilder_.getMessage();
        }
      }
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      public Builder setComputation(xla.XlaData.ComputationHandle value) {
        if (computationBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          computation_ = value;
          onChanged();
        } else {
          computationBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      public Builder setComputation(
          xla.XlaData.ComputationHandle.Builder builderForValue) {
        if (computationBuilder_ == null) {
          computation_ = builderForValue.build();
          onChanged();
        } else {
          computationBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      public Builder mergeComputation(xla.XlaData.ComputationHandle value) {
        if (computationBuilder_ == null) {
          if (computation_ != null) {
            computation_ =
              xla.XlaData.ComputationHandle.newBuilder(computation_).mergeFrom(value).buildPartial();
          } else {
            computation_ = value;
          }
          onChanged();
        } else {
          computationBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      public Builder clearComputation() {
        if (computationBuilder_ == null) {
          computation_ = null;
          onChanged();
        } else {
          computation_ = null;
          computationBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      public xla.XlaData.ComputationHandle.Builder getComputationBuilder() {
        
        onChanged();
        return getComputationFieldBuilder().getBuilder();
      }
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      public xla.XlaData.ComputationHandleOrBuilder getComputationOrBuilder() {
        if (computationBuilder_ != null) {
          return computationBuilder_.getMessageOrBuilder();
        } else {
          return computation_ == null ?
              xla.XlaData.ComputationHandle.getDefaultInstance() : computation_;
        }
      }
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.XlaData.ComputationHandle, xla.XlaData.ComputationHandle.Builder, xla.XlaData.ComputationHandleOrBuilder> 
          getComputationFieldBuilder() {
        if (computationBuilder_ == null) {
          computationBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              xla.XlaData.ComputationHandle, xla.XlaData.ComputationHandle.Builder, xla.XlaData.ComputationHandleOrBuilder>(
                  getComputation(),
                  getParentForChildren(),
                  isClean());
          computation_ = null;
        }
        return computationBuilder_;
      }

      private xla.XlaData.ComputationDataHandle operand_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.XlaData.ComputationDataHandle, xla.XlaData.ComputationDataHandle.Builder, xla.XlaData.ComputationDataHandleOrBuilder> operandBuilder_;
      /**
       * <code>.xla.ComputationDataHandle operand = 2;</code>
       */
      public boolean hasOperand() {
        return operandBuilder_ != null || operand_ != null;
      }
      /**
       * <code>.xla.ComputationDataHandle operand = 2;</code>
       */
      public xla.XlaData.ComputationDataHandle getOperand() {
        if (operandBuilder_ == null) {
          return operand_ == null ? xla.XlaData.ComputationDataHandle.getDefaultInstance() : operand_;
        } else {
          return operandBuilder_.getMessage();
        }
      }
      /**
       * <code>.xla.ComputationDataHandle operand = 2;</code>
       */
      public Builder setOperand(xla.XlaData.ComputationDataHandle value) {
        if (operandBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          operand_ = value;
          onChanged();
        } else {
          operandBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.xla.ComputationDataHandle operand = 2;</code>
       */
      public Builder setOperand(
          xla.XlaData.ComputationDataHandle.Builder builderForValue) {
        if (operandBuilder_ == null) {
          operand_ = builderForValue.build();
          onChanged();
        } else {
          operandBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.xla.ComputationDataHandle operand = 2;</code>
       */
      public Builder mergeOperand(xla.XlaData.ComputationDataHandle value) {
        if (operandBuilder_ == null) {
          if (operand_ != null) {
            operand_ =
              xla.XlaData.ComputationDataHandle.newBuilder(operand_).mergeFrom(value).buildPartial();
          } else {
            operand_ = value;
          }
          onChanged();
        } else {
          operandBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.xla.ComputationDataHandle operand = 2;</code>
       */
      public Builder clearOperand() {
        if (operandBuilder_ == null) {
          operand_ = null;
          onChanged();
        } else {
          operand_ = null;
          operandBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.xla.ComputationDataHandle operand = 2;</code>
       */
      public xla.XlaData.ComputationDataHandle.Builder getOperandBuilder() {
        
        onChanged();
        return getOperandFieldBuilder().getBuilder();
      }
      /**
       * <code>.xla.ComputationDataHandle operand = 2;</code>
       */
      public xla.XlaData.ComputationDataHandleOrBuilder getOperandOrBuilder() {
        if (operandBuilder_ != null) {
          return operandBuilder_.getMessageOrBuilder();
        } else {
          return operand_ == null ?
              xla.XlaData.ComputationDataHandle.getDefaultInstance() : operand_;
        }
      }
      /**
       * <code>.xla.ComputationDataHandle operand = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.XlaData.ComputationDataHandle, xla.XlaData.ComputationDataHandle.Builder, xla.XlaData.ComputationDataHandleOrBuilder> 
          getOperandFieldBuilder() {
        if (operandBuilder_ == null) {
          operandBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              xla.XlaData.ComputationDataHandle, xla.XlaData.ComputationDataHandle.Builder, xla.XlaData.ComputationDataHandleOrBuilder>(
                  getOperand(),
                  getParentForChildren(),
                  isClean());
          operand_ = null;
        }
        return operandBuilder_;
      }

      private xla.XlaData.Layout outputLayout_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.XlaData.Layout, xla.XlaData.Layout.Builder, xla.XlaData.LayoutOrBuilder> outputLayoutBuilder_;
      /**
       * <code>.xla.Layout output_layout = 3;</code>
       */
      public boolean hasOutputLayout() {
        return outputLayoutBuilder_ != null || outputLayout_ != null;
      }
      /**
       * <code>.xla.Layout output_layout = 3;</code>
       */
      public xla.XlaData.Layout getOutputLayout() {
        if (outputLayoutBuilder_ == null) {
          return outputLayout_ == null ? xla.XlaData.Layout.getDefaultInstance() : outputLayout_;
        } else {
          return outputLayoutBuilder_.getMessage();
        }
      }
      /**
       * <code>.xla.Layout output_layout = 3;</code>
       */
      public Builder setOutputLayout(xla.XlaData.Layout value) {
        if (outputLayoutBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          outputLayout_ = value;
          onChanged();
        } else {
          outputLayoutBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.xla.Layout output_layout = 3;</code>
       */
      public Builder setOutputLayout(
          xla.XlaData.Layout.Builder builderForValue) {
        if (outputLayoutBuilder_ == null) {
          outputLayout_ = builderForValue.build();
          onChanged();
        } else {
          outputLayoutBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.xla.Layout output_layout = 3;</code>
       */
      public Builder mergeOutputLayout(xla.XlaData.Layout value) {
        if (outputLayoutBuilder_ == null) {
          if (outputLayout_ != null) {
            outputLayout_ =
              xla.XlaData.Layout.newBuilder(outputLayout_).mergeFrom(value).buildPartial();
          } else {
            outputLayout_ = value;
          }
          onChanged();
        } else {
          outputLayoutBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.xla.Layout output_layout = 3;</code>
       */
      public Builder clearOutputLayout() {
        if (outputLayoutBuilder_ == null) {
          outputLayout_ = null;
          onChanged();
        } else {
          outputLayout_ = null;
          outputLayoutBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.xla.Layout output_layout = 3;</code>
       */
      public xla.XlaData.Layout.Builder getOutputLayoutBuilder() {
        
        onChanged();
        return getOutputLayoutFieldBuilder().getBuilder();
      }
      /**
       * <code>.xla.Layout output_layout = 3;</code>
       */
      public xla.XlaData.LayoutOrBuilder getOutputLayoutOrBuilder() {
        if (outputLayoutBuilder_ != null) {
          return outputLayoutBuilder_.getMessageOrBuilder();
        } else {
          return outputLayout_ == null ?
              xla.XlaData.Layout.getDefaultInstance() : outputLayout_;
        }
      }
      /**
       * <code>.xla.Layout output_layout = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.XlaData.Layout, xla.XlaData.Layout.Builder, xla.XlaData.LayoutOrBuilder> 
          getOutputLayoutFieldBuilder() {
        if (outputLayoutBuilder_ == null) {
          outputLayoutBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              xla.XlaData.Layout, xla.XlaData.Layout.Builder, xla.XlaData.LayoutOrBuilder>(
                  getOutputLayout(),
                  getParentForChildren(),
                  isClean());
          outputLayout_ = null;
        }
        return outputLayoutBuilder_;
      }

      private java.util.List<xla.XlaData.LiteralProto> parameters_ =
        java.util.Collections.emptyList();
      private void ensureParametersIsMutable() {
        if (!((bitField0_ & 0x00000008) == 0x00000008)) {
          parameters_ = new java.util.ArrayList<xla.XlaData.LiteralProto>(parameters_);
          bitField0_ |= 0x00000008;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          xla.XlaData.LiteralProto, xla.XlaData.LiteralProto.Builder, xla.XlaData.LiteralProtoOrBuilder> parametersBuilder_;

      /**
       * <code>repeated .xla.LiteralProto parameters = 4;</code>
       */
      public java.util.List<xla.XlaData.LiteralProto> getParametersList() {
        if (parametersBuilder_ == null) {
          return java.util.Collections.unmodifiableList(parameters_);
        } else {
          return parametersBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .xla.LiteralProto parameters = 4;</code>
       */
      public int getParametersCount() {
        if (parametersBuilder_ == null) {
          return parameters_.size();
        } else {
          return parametersBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .xla.LiteralProto parameters = 4;</code>
       */
      public xla.XlaData.LiteralProto getParameters(int index) {
        if (parametersBuilder_ == null) {
          return parameters_.get(index);
        } else {
          return parametersBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .xla.LiteralProto parameters = 4;</code>
       */
      public Builder setParameters(
          int index, xla.XlaData.LiteralProto value) {
        if (parametersBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureParametersIsMutable();
          parameters_.set(index, value);
          onChanged();
        } else {
          parametersBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .xla.LiteralProto parameters = 4;</code>
       */
      public Builder setParameters(
          int index, xla.XlaData.LiteralProto.Builder builderForValue) {
        if (parametersBuilder_ == null) {
          ensureParametersIsMutable();
          parameters_.set(index, builderForValue.build());
          onChanged();
        } else {
          parametersBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .xla.LiteralProto parameters = 4;</code>
       */
      public Builder addParameters(xla.XlaData.LiteralProto value) {
        if (parametersBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureParametersIsMutable();
          parameters_.add(value);
          onChanged();
        } else {
          parametersBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .xla.LiteralProto parameters = 4;</code>
       */
      public Builder addParameters(
          int index, xla.XlaData.LiteralProto value) {
        if (parametersBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureParametersIsMutable();
          parameters_.add(index, value);
          onChanged();
        } else {
          parametersBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .xla.LiteralProto parameters = 4;</code>
       */
      public Builder addParameters(
          xla.XlaData.LiteralProto.Builder builderForValue) {
        if (parametersBuilder_ == null) {
          ensureParametersIsMutable();
          parameters_.add(builderForValue.build());
          onChanged();
        } else {
          parametersBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .xla.LiteralProto parameters = 4;</code>
       */
      public Builder addParameters(
          int index, xla.XlaData.LiteralProto.Builder builderForValue) {
        if (parametersBuilder_ == null) {
          ensureParametersIsMutable();
          parameters_.add(index, builderForValue.build());
          onChanged();
        } else {
          parametersBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .xla.LiteralProto parameters = 4;</code>
       */
      public Builder addAllParameters(
          java.lang.Iterable<? extends xla.XlaData.LiteralProto> values) {
        if (parametersBuilder_ == null) {
          ensureParametersIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, parameters_);
          onChanged();
        } else {
          parametersBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .xla.LiteralProto parameters = 4;</code>
       */
      public Builder clearParameters() {
        if (parametersBuilder_ == null) {
          parameters_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000008);
          onChanged();
        } else {
          parametersBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .xla.LiteralProto parameters = 4;</code>
       */
      public Builder removeParameters(int index) {
        if (parametersBuilder_ == null) {
          ensureParametersIsMutable();
          parameters_.remove(index);
          onChanged();
        } else {
          parametersBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .xla.LiteralProto parameters = 4;</code>
       */
      public xla.XlaData.LiteralProto.Builder getParametersBuilder(
          int index) {
        return getParametersFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .xla.LiteralProto parameters = 4;</code>
       */
      public xla.XlaData.LiteralProtoOrBuilder getParametersOrBuilder(
          int index) {
        if (parametersBuilder_ == null) {
          return parameters_.get(index);  } else {
          return parametersBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .xla.LiteralProto parameters = 4;</code>
       */
      public java.util.List<? extends xla.XlaData.LiteralProtoOrBuilder> 
           getParametersOrBuilderList() {
        if (parametersBuilder_ != null) {
          return parametersBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(parameters_);
        }
      }
      /**
       * <code>repeated .xla.LiteralProto parameters = 4;</code>
       */
      public xla.XlaData.LiteralProto.Builder addParametersBuilder() {
        return getParametersFieldBuilder().addBuilder(
            xla.XlaData.LiteralProto.getDefaultInstance());
      }
      /**
       * <code>repeated .xla.LiteralProto parameters = 4;</code>
       */
      public xla.XlaData.LiteralProto.Builder addParametersBuilder(
          int index) {
        return getParametersFieldBuilder().addBuilder(
            index, xla.XlaData.LiteralProto.getDefaultInstance());
      }
      /**
       * <code>repeated .xla.LiteralProto parameters = 4;</code>
       */
      public java.util.List<xla.XlaData.LiteralProto.Builder> 
           getParametersBuilderList() {
        return getParametersFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          xla.XlaData.LiteralProto, xla.XlaData.LiteralProto.Builder, xla.XlaData.LiteralProtoOrBuilder> 
          getParametersFieldBuilder() {
        if (parametersBuilder_ == null) {
          parametersBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              xla.XlaData.LiteralProto, xla.XlaData.LiteralProto.Builder, xla.XlaData.LiteralProtoOrBuilder>(
                  parameters_,
                  ((bitField0_ & 0x00000008) == 0x00000008),
                  getParentForChildren(),
                  isClean());
          parameters_ = null;
        }
        return parametersBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

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


      // @@protoc_insertion_point(builder_scope:xla.ComputeConstantRequest)
    }

    // @@protoc_insertion_point(class_scope:xla.ComputeConstantRequest)
    private static final xla.Xla.ComputeConstantRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new xla.Xla.ComputeConstantRequest();
    }

    public static xla.Xla.ComputeConstantRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public xla.Xla.ComputeConstantRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ComputeConstantResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:xla.ComputeConstantResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * A LiteralProto is returned directly for this request, instead of a
     * ComputationDataHandle.
     * </pre>
     *
     * <code>.xla.LiteralProto literal = 1;</code>
     */
    boolean hasLiteral();
    /**
     * <pre>
     * A LiteralProto is returned directly for this request, instead of a
     * ComputationDataHandle.
     * </pre>
     *
     * <code>.xla.LiteralProto literal = 1;</code>
     */
    xla.XlaData.LiteralProto getLiteral();
    /**
     * <pre>
     * A LiteralProto is returned directly for this request, instead of a
     * ComputationDataHandle.
     * </pre>
     *
     * <code>.xla.LiteralProto literal = 1;</code>
     */
    xla.XlaData.LiteralProtoOrBuilder getLiteralOrBuilder();
  }
  /**
   * Protobuf type {@code xla.ComputeConstantResponse}
   */
  public  static final class ComputeConstantResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:xla.ComputeConstantResponse)
      ComputeConstantResponseOrBuilder {
    // Use ComputeConstantResponse.newBuilder() to construct.
    private ComputeConstantResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ComputeConstantResponse() {
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private ComputeConstantResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              xla.XlaData.LiteralProto.Builder subBuilder = null;
              if (literal_ != null) {
                subBuilder = literal_.toBuilder();
              }
              literal_ = input.readMessage(xla.XlaData.LiteralProto.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(literal_);
                literal_ = 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 {
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return xla.Xla.internal_static_xla_ComputeConstantResponse_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return xla.Xla.internal_static_xla_ComputeConstantResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              xla.Xla.ComputeConstantResponse.class, xla.Xla.ComputeConstantResponse.Builder.class);
    }

    public static final int LITERAL_FIELD_NUMBER = 1;
    private xla.XlaData.LiteralProto literal_;
    /**
     * <pre>
     * A LiteralProto is returned directly for this request, instead of a
     * ComputationDataHandle.
     * </pre>
     *
     * <code>.xla.LiteralProto literal = 1;</code>
     */
    public boolean hasLiteral() {
      return literal_ != null;
    }
    /**
     * <pre>
     * A LiteralProto is returned directly for this request, instead of a
     * ComputationDataHandle.
     * </pre>
     *
     * <code>.xla.LiteralProto literal = 1;</code>
     */
    public xla.XlaData.LiteralProto getLiteral() {
      return literal_ == null ? xla.XlaData.LiteralProto.getDefaultInstance() : literal_;
    }
    /**
     * <pre>
     * A LiteralProto is returned directly for this request, instead of a
     * ComputationDataHandle.
     * </pre>
     *
     * <code>.xla.LiteralProto literal = 1;</code>
     */
    public xla.XlaData.LiteralProtoOrBuilder getLiteralOrBuilder() {
      return getLiteral();
    }

    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 (literal_ != null) {
        output.writeMessage(1, getLiteral());
      }
    }

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

      size = 0;
      if (literal_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getLiteral());
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof xla.Xla.ComputeConstantResponse)) {
        return super.equals(obj);
      }
      xla.Xla.ComputeConstantResponse other = (xla.Xla.ComputeConstantResponse) obj;

      boolean result = true;
      result = result && (hasLiteral() == other.hasLiteral());
      if (hasLiteral()) {
        result = result && getLiteral()
            .equals(other.getLiteral());
      }
      return result;
    }

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

    public static xla.Xla.ComputeConstantResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.ComputeConstantResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.ComputeConstantResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.ComputeConstantResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.ComputeConstantResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.ComputeConstantResponse 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 xla.Xla.ComputeConstantResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static xla.Xla.ComputeConstantResponse 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 xla.Xla.ComputeConstantResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.ComputeConstantResponse 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(xla.Xla.ComputeConstantResponse 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 xla.ComputeConstantResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:xla.ComputeConstantResponse)
        xla.Xla.ComputeConstantResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return xla.Xla.internal_static_xla_ComputeConstantResponse_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return xla.Xla.internal_static_xla_ComputeConstantResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                xla.Xla.ComputeConstantResponse.class, xla.Xla.ComputeConstantResponse.Builder.class);
      }

      // Construct using xla.Xla.ComputeConstantResponse.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 (literalBuilder_ == null) {
          literal_ = null;
        } else {
          literal_ = null;
          literalBuilder_ = null;
        }
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return xla.Xla.internal_static_xla_ComputeConstantResponse_descriptor;
      }

      public xla.Xla.ComputeConstantResponse getDefaultInstanceForType() {
        return xla.Xla.ComputeConstantResponse.getDefaultInstance();
      }

      public xla.Xla.ComputeConstantResponse build() {
        xla.Xla.ComputeConstantResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public xla.Xla.ComputeConstantResponse buildPartial() {
        xla.Xla.ComputeConstantResponse result = new xla.Xla.ComputeConstantResponse(this);
        if (literalBuilder_ == null) {
          result.literal_ = literal_;
        } else {
          result.literal_ = literalBuilder_.build();
        }
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof xla.Xla.ComputeConstantResponse) {
          return mergeFrom((xla.Xla.ComputeConstantResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(xla.Xla.ComputeConstantResponse other) {
        if (other == xla.Xla.ComputeConstantResponse.getDefaultInstance()) return this;
        if (other.hasLiteral()) {
          mergeLiteral(other.getLiteral());
        }
        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 {
        xla.Xla.ComputeConstantResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (xla.Xla.ComputeConstantResponse) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private xla.XlaData.LiteralProto literal_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.XlaData.LiteralProto, xla.XlaData.LiteralProto.Builder, xla.XlaData.LiteralProtoOrBuilder> literalBuilder_;
      /**
       * <pre>
       * A LiteralProto is returned directly for this request, instead of a
       * ComputationDataHandle.
       * </pre>
       *
       * <code>.xla.LiteralProto literal = 1;</code>
       */
      public boolean hasLiteral() {
        return literalBuilder_ != null || literal_ != null;
      }
      /**
       * <pre>
       * A LiteralProto is returned directly for this request, instead of a
       * ComputationDataHandle.
       * </pre>
       *
       * <code>.xla.LiteralProto literal = 1;</code>
       */
      public xla.XlaData.LiteralProto getLiteral() {
        if (literalBuilder_ == null) {
          return literal_ == null ? xla.XlaData.LiteralProto.getDefaultInstance() : literal_;
        } else {
          return literalBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * A LiteralProto is returned directly for this request, instead of a
       * ComputationDataHandle.
       * </pre>
       *
       * <code>.xla.LiteralProto literal = 1;</code>
       */
      public Builder setLiteral(xla.XlaData.LiteralProto value) {
        if (literalBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          literal_ = value;
          onChanged();
        } else {
          literalBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       * A LiteralProto is returned directly for this request, instead of a
       * ComputationDataHandle.
       * </pre>
       *
       * <code>.xla.LiteralProto literal = 1;</code>
       */
      public Builder setLiteral(
          xla.XlaData.LiteralProto.Builder builderForValue) {
        if (literalBuilder_ == null) {
          literal_ = builderForValue.build();
          onChanged();
        } else {
          literalBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       * A LiteralProto is returned directly for this request, instead of a
       * ComputationDataHandle.
       * </pre>
       *
       * <code>.xla.LiteralProto literal = 1;</code>
       */
      public Builder mergeLiteral(xla.XlaData.LiteralProto value) {
        if (literalBuilder_ == null) {
          if (literal_ != null) {
            literal_ =
              xla.XlaData.LiteralProto.newBuilder(literal_).mergeFrom(value).buildPartial();
          } else {
            literal_ = value;
          }
          onChanged();
        } else {
          literalBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       * A LiteralProto is returned directly for this request, instead of a
       * ComputationDataHandle.
       * </pre>
       *
       * <code>.xla.LiteralProto literal = 1;</code>
       */
      public Builder clearLiteral() {
        if (literalBuilder_ == null) {
          literal_ = null;
          onChanged();
        } else {
          literal_ = null;
          literalBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       * A LiteralProto is returned directly for this request, instead of a
       * ComputationDataHandle.
       * </pre>
       *
       * <code>.xla.LiteralProto literal = 1;</code>
       */
      public xla.XlaData.LiteralProto.Builder getLiteralBuilder() {
        
        onChanged();
        return getLiteralFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * A LiteralProto is returned directly for this request, instead of a
       * ComputationDataHandle.
       * </pre>
       *
       * <code>.xla.LiteralProto literal = 1;</code>
       */
      public xla.XlaData.LiteralProtoOrBuilder getLiteralOrBuilder() {
        if (literalBuilder_ != null) {
          return literalBuilder_.getMessageOrBuilder();
        } else {
          return literal_ == null ?
              xla.XlaData.LiteralProto.getDefaultInstance() : literal_;
        }
      }
      /**
       * <pre>
       * A LiteralProto is returned directly for this request, instead of a
       * ComputationDataHandle.
       * </pre>
       *
       * <code>.xla.LiteralProto literal = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.XlaData.LiteralProto, xla.XlaData.LiteralProto.Builder, xla.XlaData.LiteralProtoOrBuilder> 
          getLiteralFieldBuilder() {
        if (literalBuilder_ == null) {
          literalBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              xla.XlaData.LiteralProto, xla.XlaData.LiteralProto.Builder, xla.XlaData.LiteralProtoOrBuilder>(
                  getLiteral(),
                  getParentForChildren(),
                  isClean());
          literal_ = null;
        }
        return literalBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

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


      // @@protoc_insertion_point(builder_scope:xla.ComputeConstantResponse)
    }

    // @@protoc_insertion_point(class_scope:xla.ComputeConstantResponse)
    private static final xla.Xla.ComputeConstantResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new xla.Xla.ComputeConstantResponse();
    }

    public static xla.Xla.ComputeConstantResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public xla.Xla.ComputeConstantResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface DeconstructTupleRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:xla.DeconstructTupleRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.xla.GlobalDataHandle tuple_handle = 2;</code>
     */
    boolean hasTupleHandle();
    /**
     * <code>.xla.GlobalDataHandle tuple_handle = 2;</code>
     */
    xla.XlaData.GlobalDataHandle getTupleHandle();
    /**
     * <code>.xla.GlobalDataHandle tuple_handle = 2;</code>
     */
    xla.XlaData.GlobalDataHandleOrBuilder getTupleHandleOrBuilder();
  }
  /**
   * Protobuf type {@code xla.DeconstructTupleRequest}
   */
  public  static final class DeconstructTupleRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:xla.DeconstructTupleRequest)
      DeconstructTupleRequestOrBuilder {
    // Use DeconstructTupleRequest.newBuilder() to construct.
    private DeconstructTupleRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private DeconstructTupleRequest() {
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private DeconstructTupleRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 18: {
              xla.XlaData.GlobalDataHandle.Builder subBuilder = null;
              if (tupleHandle_ != null) {
                subBuilder = tupleHandle_.toBuilder();
              }
              tupleHandle_ = input.readMessage(xla.XlaData.GlobalDataHandle.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(tupleHandle_);
                tupleHandle_ = 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 {
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return xla.Xla.internal_static_xla_DeconstructTupleRequest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return xla.Xla.internal_static_xla_DeconstructTupleRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              xla.Xla.DeconstructTupleRequest.class, xla.Xla.DeconstructTupleRequest.Builder.class);
    }

    public static final int TUPLE_HANDLE_FIELD_NUMBER = 2;
    private xla.XlaData.GlobalDataHandle tupleHandle_;
    /**
     * <code>.xla.GlobalDataHandle tuple_handle = 2;</code>
     */
    public boolean hasTupleHandle() {
      return tupleHandle_ != null;
    }
    /**
     * <code>.xla.GlobalDataHandle tuple_handle = 2;</code>
     */
    public xla.XlaData.GlobalDataHandle getTupleHandle() {
      return tupleHandle_ == null ? xla.XlaData.GlobalDataHandle.getDefaultInstance() : tupleHandle_;
    }
    /**
     * <code>.xla.GlobalDataHandle tuple_handle = 2;</code>
     */
    public xla.XlaData.GlobalDataHandleOrBuilder getTupleHandleOrBuilder() {
      return getTupleHandle();
    }

    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 (tupleHandle_ != null) {
        output.writeMessage(2, getTupleHandle());
      }
    }

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

      size = 0;
      if (tupleHandle_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getTupleHandle());
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof xla.Xla.DeconstructTupleRequest)) {
        return super.equals(obj);
      }
      xla.Xla.DeconstructTupleRequest other = (xla.Xla.DeconstructTupleRequest) obj;

      boolean result = true;
      result = result && (hasTupleHandle() == other.hasTupleHandle());
      if (hasTupleHandle()) {
        result = result && getTupleHandle()
            .equals(other.getTupleHandle());
      }
      return result;
    }

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

    public static xla.Xla.DeconstructTupleRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.DeconstructTupleRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.DeconstructTupleRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.DeconstructTupleRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.DeconstructTupleRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.DeconstructTupleRequest 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 xla.Xla.DeconstructTupleRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static xla.Xla.DeconstructTupleRequest 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 xla.Xla.DeconstructTupleRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.DeconstructTupleRequest 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(xla.Xla.DeconstructTupleRequest 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 xla.DeconstructTupleRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:xla.DeconstructTupleRequest)
        xla.Xla.DeconstructTupleRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return xla.Xla.internal_static_xla_DeconstructTupleRequest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return xla.Xla.internal_static_xla_DeconstructTupleRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                xla.Xla.DeconstructTupleRequest.class, xla.Xla.DeconstructTupleRequest.Builder.class);
      }

      // Construct using xla.Xla.DeconstructTupleRequest.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 (tupleHandleBuilder_ == null) {
          tupleHandle_ = null;
        } else {
          tupleHandle_ = null;
          tupleHandleBuilder_ = null;
        }
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return xla.Xla.internal_static_xla_DeconstructTupleRequest_descriptor;
      }

      public xla.Xla.DeconstructTupleRequest getDefaultInstanceForType() {
        return xla.Xla.DeconstructTupleRequest.getDefaultInstance();
      }

      public xla.Xla.DeconstructTupleRequest build() {
        xla.Xla.DeconstructTupleRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public xla.Xla.DeconstructTupleRequest buildPartial() {
        xla.Xla.DeconstructTupleRequest result = new xla.Xla.DeconstructTupleRequest(this);
        if (tupleHandleBuilder_ == null) {
          result.tupleHandle_ = tupleHandle_;
        } else {
          result.tupleHandle_ = tupleHandleBuilder_.build();
        }
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof xla.Xla.DeconstructTupleRequest) {
          return mergeFrom((xla.Xla.DeconstructTupleRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(xla.Xla.DeconstructTupleRequest other) {
        if (other == xla.Xla.DeconstructTupleRequest.getDefaultInstance()) return this;
        if (other.hasTupleHandle()) {
          mergeTupleHandle(other.getTupleHandle());
        }
        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 {
        xla.Xla.DeconstructTupleRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (xla.Xla.DeconstructTupleRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private xla.XlaData.GlobalDataHandle tupleHandle_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.XlaData.GlobalDataHandle, xla.XlaData.GlobalDataHandle.Builder, xla.XlaData.GlobalDataHandleOrBuilder> tupleHandleBuilder_;
      /**
       * <code>.xla.GlobalDataHandle tuple_handle = 2;</code>
       */
      public boolean hasTupleHandle() {
        return tupleHandleBuilder_ != null || tupleHandle_ != null;
      }
      /**
       * <code>.xla.GlobalDataHandle tuple_handle = 2;</code>
       */
      public xla.XlaData.GlobalDataHandle getTupleHandle() {
        if (tupleHandleBuilder_ == null) {
          return tupleHandle_ == null ? xla.XlaData.GlobalDataHandle.getDefaultInstance() : tupleHandle_;
        } else {
          return tupleHandleBuilder_.getMessage();
        }
      }
      /**
       * <code>.xla.GlobalDataHandle tuple_handle = 2;</code>
       */
      public Builder setTupleHandle(xla.XlaData.GlobalDataHandle value) {
        if (tupleHandleBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          tupleHandle_ = value;
          onChanged();
        } else {
          tupleHandleBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.xla.GlobalDataHandle tuple_handle = 2;</code>
       */
      public Builder setTupleHandle(
          xla.XlaData.GlobalDataHandle.Builder builderForValue) {
        if (tupleHandleBuilder_ == null) {
          tupleHandle_ = builderForValue.build();
          onChanged();
        } else {
          tupleHandleBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.xla.GlobalDataHandle tuple_handle = 2;</code>
       */
      public Builder mergeTupleHandle(xla.XlaData.GlobalDataHandle value) {
        if (tupleHandleBuilder_ == null) {
          if (tupleHandle_ != null) {
            tupleHandle_ =
              xla.XlaData.GlobalDataHandle.newBuilder(tupleHandle_).mergeFrom(value).buildPartial();
          } else {
            tupleHandle_ = value;
          }
          onChanged();
        } else {
          tupleHandleBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.xla.GlobalDataHandle tuple_handle = 2;</code>
       */
      public Builder clearTupleHandle() {
        if (tupleHandleBuilder_ == null) {
          tupleHandle_ = null;
          onChanged();
        } else {
          tupleHandle_ = null;
          tupleHandleBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.xla.GlobalDataHandle tuple_handle = 2;</code>
       */
      public xla.XlaData.GlobalDataHandle.Builder getTupleHandleBuilder() {
        
        onChanged();
        return getTupleHandleFieldBuilder().getBuilder();
      }
      /**
       * <code>.xla.GlobalDataHandle tuple_handle = 2;</code>
       */
      public xla.XlaData.GlobalDataHandleOrBuilder getTupleHandleOrBuilder() {
        if (tupleHandleBuilder_ != null) {
          return tupleHandleBuilder_.getMessageOrBuilder();
        } else {
          return tupleHandle_ == null ?
              xla.XlaData.GlobalDataHandle.getDefaultInstance() : tupleHandle_;
        }
      }
      /**
       * <code>.xla.GlobalDataHandle tuple_handle = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.XlaData.GlobalDataHandle, xla.XlaData.GlobalDataHandle.Builder, xla.XlaData.GlobalDataHandleOrBuilder> 
          getTupleHandleFieldBuilder() {
        if (tupleHandleBuilder_ == null) {
          tupleHandleBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              xla.XlaData.GlobalDataHandle, xla.XlaData.GlobalDataHandle.Builder, xla.XlaData.GlobalDataHandleOrBuilder>(
                  getTupleHandle(),
                  getParentForChildren(),
                  isClean());
          tupleHandle_ = null;
        }
        return tupleHandleBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

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


      // @@protoc_insertion_point(builder_scope:xla.DeconstructTupleRequest)
    }

    // @@protoc_insertion_point(class_scope:xla.DeconstructTupleRequest)
    private static final xla.Xla.DeconstructTupleRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new xla.Xla.DeconstructTupleRequest();
    }

    public static xla.Xla.DeconstructTupleRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public xla.Xla.DeconstructTupleRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface DeconstructTupleResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:xla.DeconstructTupleResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated .xla.GlobalDataHandle element_handles = 1;</code>
     */
    java.util.List<xla.XlaData.GlobalDataHandle> 
        getElementHandlesList();
    /**
     * <code>repeated .xla.GlobalDataHandle element_handles = 1;</code>
     */
    xla.XlaData.GlobalDataHandle getElementHandles(int index);
    /**
     * <code>repeated .xla.GlobalDataHandle element_handles = 1;</code>
     */
    int getElementHandlesCount();
    /**
     * <code>repeated .xla.GlobalDataHandle element_handles = 1;</code>
     */
    java.util.List<? extends xla.XlaData.GlobalDataHandleOrBuilder> 
        getElementHandlesOrBuilderList();
    /**
     * <code>repeated .xla.GlobalDataHandle element_handles = 1;</code>
     */
    xla.XlaData.GlobalDataHandleOrBuilder getElementHandlesOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code xla.DeconstructTupleResponse}
   */
  public  static final class DeconstructTupleResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:xla.DeconstructTupleResponse)
      DeconstructTupleResponseOrBuilder {
    // Use DeconstructTupleResponse.newBuilder() to construct.
    private DeconstructTupleResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private DeconstructTupleResponse() {
      elementHandles_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private DeconstructTupleResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                elementHandles_ = new java.util.ArrayList<xla.XlaData.GlobalDataHandle>();
                mutable_bitField0_ |= 0x00000001;
              }
              elementHandles_.add(
                  input.readMessage(xla.XlaData.GlobalDataHandle.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)) {
          elementHandles_ = java.util.Collections.unmodifiableList(elementHandles_);
        }
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return xla.Xla.internal_static_xla_DeconstructTupleResponse_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return xla.Xla.internal_static_xla_DeconstructTupleResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              xla.Xla.DeconstructTupleResponse.class, xla.Xla.DeconstructTupleResponse.Builder.class);
    }

    public static final int ELEMENT_HANDLES_FIELD_NUMBER = 1;
    private java.util.List<xla.XlaData.GlobalDataHandle> elementHandles_;
    /**
     * <code>repeated .xla.GlobalDataHandle element_handles = 1;</code>
     */
    public java.util.List<xla.XlaData.GlobalDataHandle> getElementHandlesList() {
      return elementHandles_;
    }
    /**
     * <code>repeated .xla.GlobalDataHandle element_handles = 1;</code>
     */
    public java.util.List<? extends xla.XlaData.GlobalDataHandleOrBuilder> 
        getElementHandlesOrBuilderList() {
      return elementHandles_;
    }
    /**
     * <code>repeated .xla.GlobalDataHandle element_handles = 1;</code>
     */
    public int getElementHandlesCount() {
      return elementHandles_.size();
    }
    /**
     * <code>repeated .xla.GlobalDataHandle element_handles = 1;</code>
     */
    public xla.XlaData.GlobalDataHandle getElementHandles(int index) {
      return elementHandles_.get(index);
    }
    /**
     * <code>repeated .xla.GlobalDataHandle element_handles = 1;</code>
     */
    public xla.XlaData.GlobalDataHandleOrBuilder getElementHandlesOrBuilder(
        int index) {
      return elementHandles_.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 < elementHandles_.size(); i++) {
        output.writeMessage(1, elementHandles_.get(i));
      }
    }

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

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

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof xla.Xla.DeconstructTupleResponse)) {
        return super.equals(obj);
      }
      xla.Xla.DeconstructTupleResponse other = (xla.Xla.DeconstructTupleResponse) obj;

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

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

    public static xla.Xla.DeconstructTupleResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.DeconstructTupleResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.DeconstructTupleResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.DeconstructTupleResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.DeconstructTupleResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.DeconstructTupleResponse 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 xla.Xla.DeconstructTupleResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static xla.Xla.DeconstructTupleResponse 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 xla.Xla.DeconstructTupleResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.DeconstructTupleResponse 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(xla.Xla.DeconstructTupleResponse 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 xla.DeconstructTupleResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:xla.DeconstructTupleResponse)
        xla.Xla.DeconstructTupleResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return xla.Xla.internal_static_xla_DeconstructTupleResponse_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return xla.Xla.internal_static_xla_DeconstructTupleResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                xla.Xla.DeconstructTupleResponse.class, xla.Xla.DeconstructTupleResponse.Builder.class);
      }

      // Construct using xla.Xla.DeconstructTupleResponse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return xla.Xla.internal_static_xla_DeconstructTupleResponse_descriptor;
      }

      public xla.Xla.DeconstructTupleResponse getDefaultInstanceForType() {
        return xla.Xla.DeconstructTupleResponse.getDefaultInstance();
      }

      public xla.Xla.DeconstructTupleResponse build() {
        xla.Xla.DeconstructTupleResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public xla.Xla.DeconstructTupleResponse buildPartial() {
        xla.Xla.DeconstructTupleResponse result = new xla.Xla.DeconstructTupleResponse(this);
        int from_bitField0_ = bitField0_;
        if (elementHandlesBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            elementHandles_ = java.util.Collections.unmodifiableList(elementHandles_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.elementHandles_ = elementHandles_;
        } else {
          result.elementHandles_ = elementHandlesBuilder_.build();
        }
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof xla.Xla.DeconstructTupleResponse) {
          return mergeFrom((xla.Xla.DeconstructTupleResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(xla.Xla.DeconstructTupleResponse other) {
        if (other == xla.Xla.DeconstructTupleResponse.getDefaultInstance()) return this;
        if (elementHandlesBuilder_ == null) {
          if (!other.elementHandles_.isEmpty()) {
            if (elementHandles_.isEmpty()) {
              elementHandles_ = other.elementHandles_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureElementHandlesIsMutable();
              elementHandles_.addAll(other.elementHandles_);
            }
            onChanged();
          }
        } else {
          if (!other.elementHandles_.isEmpty()) {
            if (elementHandlesBuilder_.isEmpty()) {
              elementHandlesBuilder_.dispose();
              elementHandlesBuilder_ = null;
              elementHandles_ = other.elementHandles_;
              bitField0_ = (bitField0_ & ~0x00000001);
              elementHandlesBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getElementHandlesFieldBuilder() : null;
            } else {
              elementHandlesBuilder_.addAllMessages(other.elementHandles_);
            }
          }
        }
        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 {
        xla.Xla.DeconstructTupleResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (xla.Xla.DeconstructTupleResponse) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.util.List<xla.XlaData.GlobalDataHandle> elementHandles_ =
        java.util.Collections.emptyList();
      private void ensureElementHandlesIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          elementHandles_ = new java.util.ArrayList<xla.XlaData.GlobalDataHandle>(elementHandles_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          xla.XlaData.GlobalDataHandle, xla.XlaData.GlobalDataHandle.Builder, xla.XlaData.GlobalDataHandleOrBuilder> elementHandlesBuilder_;

      /**
       * <code>repeated .xla.GlobalDataHandle element_handles = 1;</code>
       */
      public java.util.List<xla.XlaData.GlobalDataHandle> getElementHandlesList() {
        if (elementHandlesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(elementHandles_);
        } else {
          return elementHandlesBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .xla.GlobalDataHandle element_handles = 1;</code>
       */
      public int getElementHandlesCount() {
        if (elementHandlesBuilder_ == null) {
          return elementHandles_.size();
        } else {
          return elementHandlesBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .xla.GlobalDataHandle element_handles = 1;</code>
       */
      public xla.XlaData.GlobalDataHandle getElementHandles(int index) {
        if (elementHandlesBuilder_ == null) {
          return elementHandles_.get(index);
        } else {
          return elementHandlesBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .xla.GlobalDataHandle element_handles = 1;</code>
       */
      public Builder setElementHandles(
          int index, xla.XlaData.GlobalDataHandle value) {
        if (elementHandlesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureElementHandlesIsMutable();
          elementHandles_.set(index, value);
          onChanged();
        } else {
          elementHandlesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .xla.GlobalDataHandle element_handles = 1;</code>
       */
      public Builder setElementHandles(
          int index, xla.XlaData.GlobalDataHandle.Builder builderForValue) {
        if (elementHandlesBuilder_ == null) {
          ensureElementHandlesIsMutable();
          elementHandles_.set(index, builderForValue.build());
          onChanged();
        } else {
          elementHandlesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .xla.GlobalDataHandle element_handles = 1;</code>
       */
      public Builder addElementHandles(xla.XlaData.GlobalDataHandle value) {
        if (elementHandlesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureElementHandlesIsMutable();
          elementHandles_.add(value);
          onChanged();
        } else {
          elementHandlesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .xla.GlobalDataHandle element_handles = 1;</code>
       */
      public Builder addElementHandles(
          int index, xla.XlaData.GlobalDataHandle value) {
        if (elementHandlesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureElementHandlesIsMutable();
          elementHandles_.add(index, value);
          onChanged();
        } else {
          elementHandlesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .xla.GlobalDataHandle element_handles = 1;</code>
       */
      public Builder addElementHandles(
          xla.XlaData.GlobalDataHandle.Builder builderForValue) {
        if (elementHandlesBuilder_ == null) {
          ensureElementHandlesIsMutable();
          elementHandles_.add(builderForValue.build());
          onChanged();
        } else {
          elementHandlesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .xla.GlobalDataHandle element_handles = 1;</code>
       */
      public Builder addElementHandles(
          int index, xla.XlaData.GlobalDataHandle.Builder builderForValue) {
        if (elementHandlesBuilder_ == null) {
          ensureElementHandlesIsMutable();
          elementHandles_.add(index, builderForValue.build());
          onChanged();
        } else {
          elementHandlesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .xla.GlobalDataHandle element_handles = 1;</code>
       */
      public Builder addAllElementHandles(
          java.lang.Iterable<? extends xla.XlaData.GlobalDataHandle> values) {
        if (elementHandlesBuilder_ == null) {
          ensureElementHandlesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, elementHandles_);
          onChanged();
        } else {
          elementHandlesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .xla.GlobalDataHandle element_handles = 1;</code>
       */
      public Builder clearElementHandles() {
        if (elementHandlesBuilder_ == null) {
          elementHandles_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          elementHandlesBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .xla.GlobalDataHandle element_handles = 1;</code>
       */
      public Builder removeElementHandles(int index) {
        if (elementHandlesBuilder_ == null) {
          ensureElementHandlesIsMutable();
          elementHandles_.remove(index);
          onChanged();
        } else {
          elementHandlesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .xla.GlobalDataHandle element_handles = 1;</code>
       */
      public xla.XlaData.GlobalDataHandle.Builder getElementHandlesBuilder(
          int index) {
        return getElementHandlesFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .xla.GlobalDataHandle element_handles = 1;</code>
       */
      public xla.XlaData.GlobalDataHandleOrBuilder getElementHandlesOrBuilder(
          int index) {
        if (elementHandlesBuilder_ == null) {
          return elementHandles_.get(index);  } else {
          return elementHandlesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .xla.GlobalDataHandle element_handles = 1;</code>
       */
      public java.util.List<? extends xla.XlaData.GlobalDataHandleOrBuilder> 
           getElementHandlesOrBuilderList() {
        if (elementHandlesBuilder_ != null) {
          return elementHandlesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(elementHandles_);
        }
      }
      /**
       * <code>repeated .xla.GlobalDataHandle element_handles = 1;</code>
       */
      public xla.XlaData.GlobalDataHandle.Builder addElementHandlesBuilder() {
        return getElementHandlesFieldBuilder().addBuilder(
            xla.XlaData.GlobalDataHandle.getDefaultInstance());
      }
      /**
       * <code>repeated .xla.GlobalDataHandle element_handles = 1;</code>
       */
      public xla.XlaData.GlobalDataHandle.Builder addElementHandlesBuilder(
          int index) {
        return getElementHandlesFieldBuilder().addBuilder(
            index, xla.XlaData.GlobalDataHandle.getDefaultInstance());
      }
      /**
       * <code>repeated .xla.GlobalDataHandle element_handles = 1;</code>
       */
      public java.util.List<xla.XlaData.GlobalDataHandle.Builder> 
           getElementHandlesBuilderList() {
        return getElementHandlesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          xla.XlaData.GlobalDataHandle, xla.XlaData.GlobalDataHandle.Builder, xla.XlaData.GlobalDataHandleOrBuilder> 
          getElementHandlesFieldBuilder() {
        if (elementHandlesBuilder_ == null) {
          elementHandlesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              xla.XlaData.GlobalDataHandle, xla.XlaData.GlobalDataHandle.Builder, xla.XlaData.GlobalDataHandleOrBuilder>(
                  elementHandles_,
                  ((bitField0_ & 0x00000001) == 0x00000001),
                  getParentForChildren(),
                  isClean());
          elementHandles_ = null;
        }
        return elementHandlesBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

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


      // @@protoc_insertion_point(builder_scope:xla.DeconstructTupleResponse)
    }

    // @@protoc_insertion_point(class_scope:xla.DeconstructTupleResponse)
    private static final xla.Xla.DeconstructTupleResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new xla.Xla.DeconstructTupleResponse();
    }

    public static xla.Xla.DeconstructTupleResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public xla.Xla.DeconstructTupleResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface LoadDataRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:xla.LoadDataRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Describes the path of the ColumnIO tablet to load.
     * </pre>
     *
     * <code>string columnio_tablet_path = 1;</code>
     */
    java.lang.String getColumnioTabletPath();
    /**
     * <pre>
     * Describes the path of the ColumnIO tablet to load.
     * </pre>
     *
     * <code>string columnio_tablet_path = 1;</code>
     */
    com.google.protobuf.ByteString
        getColumnioTabletPathBytes();

    /**
     * <pre>
     * Describes the field to load within the ColumnIO tablet.
     * </pre>
     *
     * <code>string columnio_field = 2;</code>
     */
    java.lang.String getColumnioField();
    /**
     * <pre>
     * Describes the field to load within the ColumnIO tablet.
     * </pre>
     *
     * <code>string columnio_field = 2;</code>
     */
    com.google.protobuf.ByteString
        getColumnioFieldBytes();

    /**
     * <pre>
     * Individual element shape, excluding rows.
     * </pre>
     *
     * <code>.xla.Shape element_shape = 3;</code>
     */
    boolean hasElementShape();
    /**
     * <pre>
     * Individual element shape, excluding rows.
     * </pre>
     *
     * <code>.xla.Shape element_shape = 3;</code>
     */
    xla.XlaData.Shape getElementShape();
    /**
     * <pre>
     * Individual element shape, excluding rows.
     * </pre>
     *
     * <code>.xla.Shape element_shape = 3;</code>
     */
    xla.XlaData.ShapeOrBuilder getElementShapeOrBuilder();

    /**
     * <pre>
     * Warning: ColumnIO does not support random-access, so use offset with
     * caution in performance-critical scenarios.
     * </pre>
     *
     * <code>int64 offset = 4;</code>
     */
    long getOffset();

    /**
     * <pre>
     * Maximum number of elements (with shape element_shape) to load.
     * </pre>
     *
     * <code>int64 limit = 5;</code>
     */
    long getLimit();

    /**
     * <pre>
     * If more than one item is requested (via limit &gt; 1), then this request
     * attribute zips together the produced vectors.
     * </pre>
     *
     * <code>bool zip = 6;</code>
     */
    boolean getZip();
  }
  /**
   * Protobuf type {@code xla.LoadDataRequest}
   */
  public  static final class LoadDataRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:xla.LoadDataRequest)
      LoadDataRequestOrBuilder {
    // Use LoadDataRequest.newBuilder() to construct.
    private LoadDataRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private LoadDataRequest() {
      columnioTabletPath_ = "";
      columnioField_ = "";
      offset_ = 0L;
      limit_ = 0L;
      zip_ = false;
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private LoadDataRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();

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

              columnioField_ = s;
              break;
            }
            case 26: {
              xla.XlaData.Shape.Builder subBuilder = null;
              if (elementShape_ != null) {
                subBuilder = elementShape_.toBuilder();
              }
              elementShape_ = input.readMessage(xla.XlaData.Shape.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(elementShape_);
                elementShape_ = subBuilder.buildPartial();
              }

              break;
            }
            case 32: {

              offset_ = input.readInt64();
              break;
            }
            case 40: {

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

              zip_ = 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 {
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return xla.Xla.internal_static_xla_LoadDataRequest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return xla.Xla.internal_static_xla_LoadDataRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              xla.Xla.LoadDataRequest.class, xla.Xla.LoadDataRequest.Builder.class);
    }

    public static final int COLUMNIO_TABLET_PATH_FIELD_NUMBER = 1;
    private volatile java.lang.Object columnioTabletPath_;
    /**
     * <pre>
     * Describes the path of the ColumnIO tablet to load.
     * </pre>
     *
     * <code>string columnio_tablet_path = 1;</code>
     */
    public java.lang.String getColumnioTabletPath() {
      java.lang.Object ref = columnioTabletPath_;
      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();
        columnioTabletPath_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Describes the path of the ColumnIO tablet to load.
     * </pre>
     *
     * <code>string columnio_tablet_path = 1;</code>
     */
    public com.google.protobuf.ByteString
        getColumnioTabletPathBytes() {
      java.lang.Object ref = columnioTabletPath_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        columnioTabletPath_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int COLUMNIO_FIELD_FIELD_NUMBER = 2;
    private volatile java.lang.Object columnioField_;
    /**
     * <pre>
     * Describes the field to load within the ColumnIO tablet.
     * </pre>
     *
     * <code>string columnio_field = 2;</code>
     */
    public java.lang.String getColumnioField() {
      java.lang.Object ref = columnioField_;
      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();
        columnioField_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Describes the field to load within the ColumnIO tablet.
     * </pre>
     *
     * <code>string columnio_field = 2;</code>
     */
    public com.google.protobuf.ByteString
        getColumnioFieldBytes() {
      java.lang.Object ref = columnioField_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        columnioField_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int ELEMENT_SHAPE_FIELD_NUMBER = 3;
    private xla.XlaData.Shape elementShape_;
    /**
     * <pre>
     * Individual element shape, excluding rows.
     * </pre>
     *
     * <code>.xla.Shape element_shape = 3;</code>
     */
    public boolean hasElementShape() {
      return elementShape_ != null;
    }
    /**
     * <pre>
     * Individual element shape, excluding rows.
     * </pre>
     *
     * <code>.xla.Shape element_shape = 3;</code>
     */
    public xla.XlaData.Shape getElementShape() {
      return elementShape_ == null ? xla.XlaData.Shape.getDefaultInstance() : elementShape_;
    }
    /**
     * <pre>
     * Individual element shape, excluding rows.
     * </pre>
     *
     * <code>.xla.Shape element_shape = 3;</code>
     */
    public xla.XlaData.ShapeOrBuilder getElementShapeOrBuilder() {
      return getElementShape();
    }

    public static final int OFFSET_FIELD_NUMBER = 4;
    private long offset_;
    /**
     * <pre>
     * Warning: ColumnIO does not support random-access, so use offset with
     * caution in performance-critical scenarios.
     * </pre>
     *
     * <code>int64 offset = 4;</code>
     */
    public long getOffset() {
      return offset_;
    }

    public static final int LIMIT_FIELD_NUMBER = 5;
    private long limit_;
    /**
     * <pre>
     * Maximum number of elements (with shape element_shape) to load.
     * </pre>
     *
     * <code>int64 limit = 5;</code>
     */
    public long getLimit() {
      return limit_;
    }

    public static final int ZIP_FIELD_NUMBER = 6;
    private boolean zip_;
    /**
     * <pre>
     * If more than one item is requested (via limit &gt; 1), then this request
     * attribute zips together the produced vectors.
     * </pre>
     *
     * <code>bool zip = 6;</code>
     */
    public boolean getZip() {
      return zip_;
    }

    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 (!getColumnioTabletPathBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, columnioTabletPath_);
      }
      if (!getColumnioFieldBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, columnioField_);
      }
      if (elementShape_ != null) {
        output.writeMessage(3, getElementShape());
      }
      if (offset_ != 0L) {
        output.writeInt64(4, offset_);
      }
      if (limit_ != 0L) {
        output.writeInt64(5, limit_);
      }
      if (zip_ != false) {
        output.writeBool(6, zip_);
      }
    }

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

      size = 0;
      if (!getColumnioTabletPathBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, columnioTabletPath_);
      }
      if (!getColumnioFieldBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, columnioField_);
      }
      if (elementShape_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getElementShape());
      }
      if (offset_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(4, offset_);
      }
      if (limit_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(5, limit_);
      }
      if (zip_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(6, zip_);
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof xla.Xla.LoadDataRequest)) {
        return super.equals(obj);
      }
      xla.Xla.LoadDataRequest other = (xla.Xla.LoadDataRequest) obj;

      boolean result = true;
      result = result && getColumnioTabletPath()
          .equals(other.getColumnioTabletPath());
      result = result && getColumnioField()
          .equals(other.getColumnioField());
      result = result && (hasElementShape() == other.hasElementShape());
      if (hasElementShape()) {
        result = result && getElementShape()
            .equals(other.getElementShape());
      }
      result = result && (getOffset()
          == other.getOffset());
      result = result && (getLimit()
          == other.getLimit());
      result = result && (getZip()
          == other.getZip());
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + COLUMNIO_TABLET_PATH_FIELD_NUMBER;
      hash = (53 * hash) + getColumnioTabletPath().hashCode();
      hash = (37 * hash) + COLUMNIO_FIELD_FIELD_NUMBER;
      hash = (53 * hash) + getColumnioField().hashCode();
      if (hasElementShape()) {
        hash = (37 * hash) + ELEMENT_SHAPE_FIELD_NUMBER;
        hash = (53 * hash) + getElementShape().hashCode();
      }
      hash = (37 * hash) + OFFSET_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getOffset());
      hash = (37 * hash) + LIMIT_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getLimit());
      hash = (37 * hash) + ZIP_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getZip());
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static xla.Xla.LoadDataRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.LoadDataRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.LoadDataRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.LoadDataRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.LoadDataRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.LoadDataRequest 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 xla.Xla.LoadDataRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static xla.Xla.LoadDataRequest 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 xla.Xla.LoadDataRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.LoadDataRequest 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(xla.Xla.LoadDataRequest 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 xla.LoadDataRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:xla.LoadDataRequest)
        xla.Xla.LoadDataRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return xla.Xla.internal_static_xla_LoadDataRequest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return xla.Xla.internal_static_xla_LoadDataRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                xla.Xla.LoadDataRequest.class, xla.Xla.LoadDataRequest.Builder.class);
      }

      // Construct using xla.Xla.LoadDataRequest.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();
        columnioTabletPath_ = "";

        columnioField_ = "";

        if (elementShapeBuilder_ == null) {
          elementShape_ = null;
        } else {
          elementShape_ = null;
          elementShapeBuilder_ = null;
        }
        offset_ = 0L;

        limit_ = 0L;

        zip_ = false;

        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return xla.Xla.internal_static_xla_LoadDataRequest_descriptor;
      }

      public xla.Xla.LoadDataRequest getDefaultInstanceForType() {
        return xla.Xla.LoadDataRequest.getDefaultInstance();
      }

      public xla.Xla.LoadDataRequest build() {
        xla.Xla.LoadDataRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public xla.Xla.LoadDataRequest buildPartial() {
        xla.Xla.LoadDataRequest result = new xla.Xla.LoadDataRequest(this);
        result.columnioTabletPath_ = columnioTabletPath_;
        result.columnioField_ = columnioField_;
        if (elementShapeBuilder_ == null) {
          result.elementShape_ = elementShape_;
        } else {
          result.elementShape_ = elementShapeBuilder_.build();
        }
        result.offset_ = offset_;
        result.limit_ = limit_;
        result.zip_ = zip_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof xla.Xla.LoadDataRequest) {
          return mergeFrom((xla.Xla.LoadDataRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(xla.Xla.LoadDataRequest other) {
        if (other == xla.Xla.LoadDataRequest.getDefaultInstance()) return this;
        if (!other.getColumnioTabletPath().isEmpty()) {
          columnioTabletPath_ = other.columnioTabletPath_;
          onChanged();
        }
        if (!other.getColumnioField().isEmpty()) {
          columnioField_ = other.columnioField_;
          onChanged();
        }
        if (other.hasElementShape()) {
          mergeElementShape(other.getElementShape());
        }
        if (other.getOffset() != 0L) {
          setOffset(other.getOffset());
        }
        if (other.getLimit() != 0L) {
          setLimit(other.getLimit());
        }
        if (other.getZip() != false) {
          setZip(other.getZip());
        }
        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 {
        xla.Xla.LoadDataRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (xla.Xla.LoadDataRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object columnioTabletPath_ = "";
      /**
       * <pre>
       * Describes the path of the ColumnIO tablet to load.
       * </pre>
       *
       * <code>string columnio_tablet_path = 1;</code>
       */
      public java.lang.String getColumnioTabletPath() {
        java.lang.Object ref = columnioTabletPath_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          columnioTabletPath_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Describes the path of the ColumnIO tablet to load.
       * </pre>
       *
       * <code>string columnio_tablet_path = 1;</code>
       */
      public com.google.protobuf.ByteString
          getColumnioTabletPathBytes() {
        java.lang.Object ref = columnioTabletPath_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          columnioTabletPath_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Describes the path of the ColumnIO tablet to load.
       * </pre>
       *
       * <code>string columnio_tablet_path = 1;</code>
       */
      public Builder setColumnioTabletPath(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        columnioTabletPath_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Describes the path of the ColumnIO tablet to load.
       * </pre>
       *
       * <code>string columnio_tablet_path = 1;</code>
       */
      public Builder clearColumnioTabletPath() {
        
        columnioTabletPath_ = getDefaultInstance().getColumnioTabletPath();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Describes the path of the ColumnIO tablet to load.
       * </pre>
       *
       * <code>string columnio_tablet_path = 1;</code>
       */
      public Builder setColumnioTabletPathBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        columnioTabletPath_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object columnioField_ = "";
      /**
       * <pre>
       * Describes the field to load within the ColumnIO tablet.
       * </pre>
       *
       * <code>string columnio_field = 2;</code>
       */
      public java.lang.String getColumnioField() {
        java.lang.Object ref = columnioField_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          columnioField_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Describes the field to load within the ColumnIO tablet.
       * </pre>
       *
       * <code>string columnio_field = 2;</code>
       */
      public com.google.protobuf.ByteString
          getColumnioFieldBytes() {
        java.lang.Object ref = columnioField_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          columnioField_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Describes the field to load within the ColumnIO tablet.
       * </pre>
       *
       * <code>string columnio_field = 2;</code>
       */
      public Builder setColumnioField(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        columnioField_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Describes the field to load within the ColumnIO tablet.
       * </pre>
       *
       * <code>string columnio_field = 2;</code>
       */
      public Builder clearColumnioField() {
        
        columnioField_ = getDefaultInstance().getColumnioField();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Describes the field to load within the ColumnIO tablet.
       * </pre>
       *
       * <code>string columnio_field = 2;</code>
       */
      public Builder setColumnioFieldBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        columnioField_ = value;
        onChanged();
        return this;
      }

      private xla.XlaData.Shape elementShape_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.XlaData.Shape, xla.XlaData.Shape.Builder, xla.XlaData.ShapeOrBuilder> elementShapeBuilder_;
      /**
       * <pre>
       * Individual element shape, excluding rows.
       * </pre>
       *
       * <code>.xla.Shape element_shape = 3;</code>
       */
      public boolean hasElementShape() {
        return elementShapeBuilder_ != null || elementShape_ != null;
      }
      /**
       * <pre>
       * Individual element shape, excluding rows.
       * </pre>
       *
       * <code>.xla.Shape element_shape = 3;</code>
       */
      public xla.XlaData.Shape getElementShape() {
        if (elementShapeBuilder_ == null) {
          return elementShape_ == null ? xla.XlaData.Shape.getDefaultInstance() : elementShape_;
        } else {
          return elementShapeBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Individual element shape, excluding rows.
       * </pre>
       *
       * <code>.xla.Shape element_shape = 3;</code>
       */
      public Builder setElementShape(xla.XlaData.Shape value) {
        if (elementShapeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          elementShape_ = value;
          onChanged();
        } else {
          elementShapeBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       * Individual element shape, excluding rows.
       * </pre>
       *
       * <code>.xla.Shape element_shape = 3;</code>
       */
      public Builder setElementShape(
          xla.XlaData.Shape.Builder builderForValue) {
        if (elementShapeBuilder_ == null) {
          elementShape_ = builderForValue.build();
          onChanged();
        } else {
          elementShapeBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       * Individual element shape, excluding rows.
       * </pre>
       *
       * <code>.xla.Shape element_shape = 3;</code>
       */
      public Builder mergeElementShape(xla.XlaData.Shape value) {
        if (elementShapeBuilder_ == null) {
          if (elementShape_ != null) {
            elementShape_ =
              xla.XlaData.Shape.newBuilder(elementShape_).mergeFrom(value).buildPartial();
          } else {
            elementShape_ = value;
          }
          onChanged();
        } else {
          elementShapeBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       * Individual element shape, excluding rows.
       * </pre>
       *
       * <code>.xla.Shape element_shape = 3;</code>
       */
      public Builder clearElementShape() {
        if (elementShapeBuilder_ == null) {
          elementShape_ = null;
          onChanged();
        } else {
          elementShape_ = null;
          elementShapeBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       * Individual element shape, excluding rows.
       * </pre>
       *
       * <code>.xla.Shape element_shape = 3;</code>
       */
      public xla.XlaData.Shape.Builder getElementShapeBuilder() {
        
        onChanged();
        return getElementShapeFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Individual element shape, excluding rows.
       * </pre>
       *
       * <code>.xla.Shape element_shape = 3;</code>
       */
      public xla.XlaData.ShapeOrBuilder getElementShapeOrBuilder() {
        if (elementShapeBuilder_ != null) {
          return elementShapeBuilder_.getMessageOrBuilder();
        } else {
          return elementShape_ == null ?
              xla.XlaData.Shape.getDefaultInstance() : elementShape_;
        }
      }
      /**
       * <pre>
       * Individual element shape, excluding rows.
       * </pre>
       *
       * <code>.xla.Shape element_shape = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.XlaData.Shape, xla.XlaData.Shape.Builder, xla.XlaData.ShapeOrBuilder> 
          getElementShapeFieldBuilder() {
        if (elementShapeBuilder_ == null) {
          elementShapeBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              xla.XlaData.Shape, xla.XlaData.Shape.Builder, xla.XlaData.ShapeOrBuilder>(
                  getElementShape(),
                  getParentForChildren(),
                  isClean());
          elementShape_ = null;
        }
        return elementShapeBuilder_;
      }

      private long offset_ ;
      /**
       * <pre>
       * Warning: ColumnIO does not support random-access, so use offset with
       * caution in performance-critical scenarios.
       * </pre>
       *
       * <code>int64 offset = 4;</code>
       */
      public long getOffset() {
        return offset_;
      }
      /**
       * <pre>
       * Warning: ColumnIO does not support random-access, so use offset with
       * caution in performance-critical scenarios.
       * </pre>
       *
       * <code>int64 offset = 4;</code>
       */
      public Builder setOffset(long value) {
        
        offset_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Warning: ColumnIO does not support random-access, so use offset with
       * caution in performance-critical scenarios.
       * </pre>
       *
       * <code>int64 offset = 4;</code>
       */
      public Builder clearOffset() {
        
        offset_ = 0L;
        onChanged();
        return this;
      }

      private long limit_ ;
      /**
       * <pre>
       * Maximum number of elements (with shape element_shape) to load.
       * </pre>
       *
       * <code>int64 limit = 5;</code>
       */
      public long getLimit() {
        return limit_;
      }
      /**
       * <pre>
       * Maximum number of elements (with shape element_shape) to load.
       * </pre>
       *
       * <code>int64 limit = 5;</code>
       */
      public Builder setLimit(long value) {
        
        limit_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Maximum number of elements (with shape element_shape) to load.
       * </pre>
       *
       * <code>int64 limit = 5;</code>
       */
      public Builder clearLimit() {
        
        limit_ = 0L;
        onChanged();
        return this;
      }

      private boolean zip_ ;
      /**
       * <pre>
       * If more than one item is requested (via limit &gt; 1), then this request
       * attribute zips together the produced vectors.
       * </pre>
       *
       * <code>bool zip = 6;</code>
       */
      public boolean getZip() {
        return zip_;
      }
      /**
       * <pre>
       * If more than one item is requested (via limit &gt; 1), then this request
       * attribute zips together the produced vectors.
       * </pre>
       *
       * <code>bool zip = 6;</code>
       */
      public Builder setZip(boolean value) {
        
        zip_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * If more than one item is requested (via limit &gt; 1), then this request
       * attribute zips together the produced vectors.
       * </pre>
       *
       * <code>bool zip = 6;</code>
       */
      public Builder clearZip() {
        
        zip_ = false;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

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


      // @@protoc_insertion_point(builder_scope:xla.LoadDataRequest)
    }

    // @@protoc_insertion_point(class_scope:xla.LoadDataRequest)
    private static final xla.Xla.LoadDataRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new xla.Xla.LoadDataRequest();
    }

    public static xla.Xla.LoadDataRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public xla.Xla.LoadDataRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface LoadDataResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:xla.LoadDataResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.xla.GlobalDataHandle data = 1;</code>
     */
    boolean hasData();
    /**
     * <code>.xla.GlobalDataHandle data = 1;</code>
     */
    xla.XlaData.GlobalDataHandle getData();
    /**
     * <code>.xla.GlobalDataHandle data = 1;</code>
     */
    xla.XlaData.GlobalDataHandleOrBuilder getDataOrBuilder();

    /**
     * <code>.xla.Shape data_shape = 2;</code>
     */
    boolean hasDataShape();
    /**
     * <code>.xla.Shape data_shape = 2;</code>
     */
    xla.XlaData.Shape getDataShape();
    /**
     * <code>.xla.Shape data_shape = 2;</code>
     */
    xla.XlaData.ShapeOrBuilder getDataShapeOrBuilder();

    /**
     * <code>int64 available_rows = 3;</code>
     */
    long getAvailableRows();

    /**
     * <code>int64 rows_loaded = 4;</code>
     */
    long getRowsLoaded();

    /**
     * <code>int64 nanoseconds = 5;</code>
     */
    long getNanoseconds();
  }
  /**
   * Protobuf type {@code xla.LoadDataResponse}
   */
  public  static final class LoadDataResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:xla.LoadDataResponse)
      LoadDataResponseOrBuilder {
    // Use LoadDataResponse.newBuilder() to construct.
    private LoadDataResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private LoadDataResponse() {
      availableRows_ = 0L;
      rowsLoaded_ = 0L;
      nanoseconds_ = 0L;
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private LoadDataResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              xla.XlaData.GlobalDataHandle.Builder subBuilder = null;
              if (data_ != null) {
                subBuilder = data_.toBuilder();
              }
              data_ = input.readMessage(xla.XlaData.GlobalDataHandle.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(data_);
                data_ = subBuilder.buildPartial();
              }

              break;
            }
            case 18: {
              xla.XlaData.Shape.Builder subBuilder = null;
              if (dataShape_ != null) {
                subBuilder = dataShape_.toBuilder();
              }
              dataShape_ = input.readMessage(xla.XlaData.Shape.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(dataShape_);
                dataShape_ = subBuilder.buildPartial();
              }

              break;
            }
            case 24: {

              availableRows_ = input.readInt64();
              break;
            }
            case 32: {

              rowsLoaded_ = input.readInt64();
              break;
            }
            case 40: {

              nanoseconds_ = input.readInt64();
              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 {
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return xla.Xla.internal_static_xla_LoadDataResponse_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return xla.Xla.internal_static_xla_LoadDataResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              xla.Xla.LoadDataResponse.class, xla.Xla.LoadDataResponse.Builder.class);
    }

    public static final int DATA_FIELD_NUMBER = 1;
    private xla.XlaData.GlobalDataHandle data_;
    /**
     * <code>.xla.GlobalDataHandle data = 1;</code>
     */
    public boolean hasData() {
      return data_ != null;
    }
    /**
     * <code>.xla.GlobalDataHandle data = 1;</code>
     */
    public xla.XlaData.GlobalDataHandle getData() {
      return data_ == null ? xla.XlaData.GlobalDataHandle.getDefaultInstance() : data_;
    }
    /**
     * <code>.xla.GlobalDataHandle data = 1;</code>
     */
    public xla.XlaData.GlobalDataHandleOrBuilder getDataOrBuilder() {
      return getData();
    }

    public static final int DATA_SHAPE_FIELD_NUMBER = 2;
    private xla.XlaData.Shape dataShape_;
    /**
     * <code>.xla.Shape data_shape = 2;</code>
     */
    public boolean hasDataShape() {
      return dataShape_ != null;
    }
    /**
     * <code>.xla.Shape data_shape = 2;</code>
     */
    public xla.XlaData.Shape getDataShape() {
      return dataShape_ == null ? xla.XlaData.Shape.getDefaultInstance() : dataShape_;
    }
    /**
     * <code>.xla.Shape data_shape = 2;</code>
     */
    public xla.XlaData.ShapeOrBuilder getDataShapeOrBuilder() {
      return getDataShape();
    }

    public static final int AVAILABLE_ROWS_FIELD_NUMBER = 3;
    private long availableRows_;
    /**
     * <code>int64 available_rows = 3;</code>
     */
    public long getAvailableRows() {
      return availableRows_;
    }

    public static final int ROWS_LOADED_FIELD_NUMBER = 4;
    private long rowsLoaded_;
    /**
     * <code>int64 rows_loaded = 4;</code>
     */
    public long getRowsLoaded() {
      return rowsLoaded_;
    }

    public static final int NANOSECONDS_FIELD_NUMBER = 5;
    private long nanoseconds_;
    /**
     * <code>int64 nanoseconds = 5;</code>
     */
    public long getNanoseconds() {
      return nanoseconds_;
    }

    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 (data_ != null) {
        output.writeMessage(1, getData());
      }
      if (dataShape_ != null) {
        output.writeMessage(2, getDataShape());
      }
      if (availableRows_ != 0L) {
        output.writeInt64(3, availableRows_);
      }
      if (rowsLoaded_ != 0L) {
        output.writeInt64(4, rowsLoaded_);
      }
      if (nanoseconds_ != 0L) {
        output.writeInt64(5, nanoseconds_);
      }
    }

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

      size = 0;
      if (data_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getData());
      }
      if (dataShape_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getDataShape());
      }
      if (availableRows_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(3, availableRows_);
      }
      if (rowsLoaded_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(4, rowsLoaded_);
      }
      if (nanoseconds_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(5, nanoseconds_);
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof xla.Xla.LoadDataResponse)) {
        return super.equals(obj);
      }
      xla.Xla.LoadDataResponse other = (xla.Xla.LoadDataResponse) obj;

      boolean result = true;
      result = result && (hasData() == other.hasData());
      if (hasData()) {
        result = result && getData()
            .equals(other.getData());
      }
      result = result && (hasDataShape() == other.hasDataShape());
      if (hasDataShape()) {
        result = result && getDataShape()
            .equals(other.getDataShape());
      }
      result = result && (getAvailableRows()
          == other.getAvailableRows());
      result = result && (getRowsLoaded()
          == other.getRowsLoaded());
      result = result && (getNanoseconds()
          == other.getNanoseconds());
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasData()) {
        hash = (37 * hash) + DATA_FIELD_NUMBER;
        hash = (53 * hash) + getData().hashCode();
      }
      if (hasDataShape()) {
        hash = (37 * hash) + DATA_SHAPE_FIELD_NUMBER;
        hash = (53 * hash) + getDataShape().hashCode();
      }
      hash = (37 * hash) + AVAILABLE_ROWS_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getAvailableRows());
      hash = (37 * hash) + ROWS_LOADED_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getRowsLoaded());
      hash = (37 * hash) + NANOSECONDS_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getNanoseconds());
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static xla.Xla.LoadDataResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.LoadDataResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.LoadDataResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.LoadDataResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.LoadDataResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.LoadDataResponse 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 xla.Xla.LoadDataResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static xla.Xla.LoadDataResponse 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 xla.Xla.LoadDataResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.LoadDataResponse 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(xla.Xla.LoadDataResponse 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 xla.LoadDataResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:xla.LoadDataResponse)
        xla.Xla.LoadDataResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return xla.Xla.internal_static_xla_LoadDataResponse_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return xla.Xla.internal_static_xla_LoadDataResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                xla.Xla.LoadDataResponse.class, xla.Xla.LoadDataResponse.Builder.class);
      }

      // Construct using xla.Xla.LoadDataResponse.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 (dataBuilder_ == null) {
          data_ = null;
        } else {
          data_ = null;
          dataBuilder_ = null;
        }
        if (dataShapeBuilder_ == null) {
          dataShape_ = null;
        } else {
          dataShape_ = null;
          dataShapeBuilder_ = null;
        }
        availableRows_ = 0L;

        rowsLoaded_ = 0L;

        nanoseconds_ = 0L;

        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return xla.Xla.internal_static_xla_LoadDataResponse_descriptor;
      }

      public xla.Xla.LoadDataResponse getDefaultInstanceForType() {
        return xla.Xla.LoadDataResponse.getDefaultInstance();
      }

      public xla.Xla.LoadDataResponse build() {
        xla.Xla.LoadDataResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public xla.Xla.LoadDataResponse buildPartial() {
        xla.Xla.LoadDataResponse result = new xla.Xla.LoadDataResponse(this);
        if (dataBuilder_ == null) {
          result.data_ = data_;
        } else {
          result.data_ = dataBuilder_.build();
        }
        if (dataShapeBuilder_ == null) {
          result.dataShape_ = dataShape_;
        } else {
          result.dataShape_ = dataShapeBuilder_.build();
        }
        result.availableRows_ = availableRows_;
        result.rowsLoaded_ = rowsLoaded_;
        result.nanoseconds_ = nanoseconds_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof xla.Xla.LoadDataResponse) {
          return mergeFrom((xla.Xla.LoadDataResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(xla.Xla.LoadDataResponse other) {
        if (other == xla.Xla.LoadDataResponse.getDefaultInstance()) return this;
        if (other.hasData()) {
          mergeData(other.getData());
        }
        if (other.hasDataShape()) {
          mergeDataShape(other.getDataShape());
        }
        if (other.getAvailableRows() != 0L) {
          setAvailableRows(other.getAvailableRows());
        }
        if (other.getRowsLoaded() != 0L) {
          setRowsLoaded(other.getRowsLoaded());
        }
        if (other.getNanoseconds() != 0L) {
          setNanoseconds(other.getNanoseconds());
        }
        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 {
        xla.Xla.LoadDataResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (xla.Xla.LoadDataResponse) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private xla.XlaData.GlobalDataHandle data_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.XlaData.GlobalDataHandle, xla.XlaData.GlobalDataHandle.Builder, xla.XlaData.GlobalDataHandleOrBuilder> dataBuilder_;
      /**
       * <code>.xla.GlobalDataHandle data = 1;</code>
       */
      public boolean hasData() {
        return dataBuilder_ != null || data_ != null;
      }
      /**
       * <code>.xla.GlobalDataHandle data = 1;</code>
       */
      public xla.XlaData.GlobalDataHandle getData() {
        if (dataBuilder_ == null) {
          return data_ == null ? xla.XlaData.GlobalDataHandle.getDefaultInstance() : data_;
        } else {
          return dataBuilder_.getMessage();
        }
      }
      /**
       * <code>.xla.GlobalDataHandle data = 1;</code>
       */
      public Builder setData(xla.XlaData.GlobalDataHandle value) {
        if (dataBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          data_ = value;
          onChanged();
        } else {
          dataBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.xla.GlobalDataHandle data = 1;</code>
       */
      public Builder setData(
          xla.XlaData.GlobalDataHandle.Builder builderForValue) {
        if (dataBuilder_ == null) {
          data_ = builderForValue.build();
          onChanged();
        } else {
          dataBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.xla.GlobalDataHandle data = 1;</code>
       */
      public Builder mergeData(xla.XlaData.GlobalDataHandle value) {
        if (dataBuilder_ == null) {
          if (data_ != null) {
            data_ =
              xla.XlaData.GlobalDataHandle.newBuilder(data_).mergeFrom(value).buildPartial();
          } else {
            data_ = value;
          }
          onChanged();
        } else {
          dataBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.xla.GlobalDataHandle data = 1;</code>
       */
      public Builder clearData() {
        if (dataBuilder_ == null) {
          data_ = null;
          onChanged();
        } else {
          data_ = null;
          dataBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.xla.GlobalDataHandle data = 1;</code>
       */
      public xla.XlaData.GlobalDataHandle.Builder getDataBuilder() {
        
        onChanged();
        return getDataFieldBuilder().getBuilder();
      }
      /**
       * <code>.xla.GlobalDataHandle data = 1;</code>
       */
      public xla.XlaData.GlobalDataHandleOrBuilder getDataOrBuilder() {
        if (dataBuilder_ != null) {
          return dataBuilder_.getMessageOrBuilder();
        } else {
          return data_ == null ?
              xla.XlaData.GlobalDataHandle.getDefaultInstance() : data_;
        }
      }
      /**
       * <code>.xla.GlobalDataHandle data = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.XlaData.GlobalDataHandle, xla.XlaData.GlobalDataHandle.Builder, xla.XlaData.GlobalDataHandleOrBuilder> 
          getDataFieldBuilder() {
        if (dataBuilder_ == null) {
          dataBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              xla.XlaData.GlobalDataHandle, xla.XlaData.GlobalDataHandle.Builder, xla.XlaData.GlobalDataHandleOrBuilder>(
                  getData(),
                  getParentForChildren(),
                  isClean());
          data_ = null;
        }
        return dataBuilder_;
      }

      private xla.XlaData.Shape dataShape_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.XlaData.Shape, xla.XlaData.Shape.Builder, xla.XlaData.ShapeOrBuilder> dataShapeBuilder_;
      /**
       * <code>.xla.Shape data_shape = 2;</code>
       */
      public boolean hasDataShape() {
        return dataShapeBuilder_ != null || dataShape_ != null;
      }
      /**
       * <code>.xla.Shape data_shape = 2;</code>
       */
      public xla.XlaData.Shape getDataShape() {
        if (dataShapeBuilder_ == null) {
          return dataShape_ == null ? xla.XlaData.Shape.getDefaultInstance() : dataShape_;
        } else {
          return dataShapeBuilder_.getMessage();
        }
      }
      /**
       * <code>.xla.Shape data_shape = 2;</code>
       */
      public Builder setDataShape(xla.XlaData.Shape value) {
        if (dataShapeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          dataShape_ = value;
          onChanged();
        } else {
          dataShapeBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.xla.Shape data_shape = 2;</code>
       */
      public Builder setDataShape(
          xla.XlaData.Shape.Builder builderForValue) {
        if (dataShapeBuilder_ == null) {
          dataShape_ = builderForValue.build();
          onChanged();
        } else {
          dataShapeBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.xla.Shape data_shape = 2;</code>
       */
      public Builder mergeDataShape(xla.XlaData.Shape value) {
        if (dataShapeBuilder_ == null) {
          if (dataShape_ != null) {
            dataShape_ =
              xla.XlaData.Shape.newBuilder(dataShape_).mergeFrom(value).buildPartial();
          } else {
            dataShape_ = value;
          }
          onChanged();
        } else {
          dataShapeBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.xla.Shape data_shape = 2;</code>
       */
      public Builder clearDataShape() {
        if (dataShapeBuilder_ == null) {
          dataShape_ = null;
          onChanged();
        } else {
          dataShape_ = null;
          dataShapeBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.xla.Shape data_shape = 2;</code>
       */
      public xla.XlaData.Shape.Builder getDataShapeBuilder() {
        
        onChanged();
        return getDataShapeFieldBuilder().getBuilder();
      }
      /**
       * <code>.xla.Shape data_shape = 2;</code>
       */
      public xla.XlaData.ShapeOrBuilder getDataShapeOrBuilder() {
        if (dataShapeBuilder_ != null) {
          return dataShapeBuilder_.getMessageOrBuilder();
        } else {
          return dataShape_ == null ?
              xla.XlaData.Shape.getDefaultInstance() : dataShape_;
        }
      }
      /**
       * <code>.xla.Shape data_shape = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.XlaData.Shape, xla.XlaData.Shape.Builder, xla.XlaData.ShapeOrBuilder> 
          getDataShapeFieldBuilder() {
        if (dataShapeBuilder_ == null) {
          dataShapeBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              xla.XlaData.Shape, xla.XlaData.Shape.Builder, xla.XlaData.ShapeOrBuilder>(
                  getDataShape(),
                  getParentForChildren(),
                  isClean());
          dataShape_ = null;
        }
        return dataShapeBuilder_;
      }

      private long availableRows_ ;
      /**
       * <code>int64 available_rows = 3;</code>
       */
      public long getAvailableRows() {
        return availableRows_;
      }
      /**
       * <code>int64 available_rows = 3;</code>
       */
      public Builder setAvailableRows(long value) {
        
        availableRows_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>int64 available_rows = 3;</code>
       */
      public Builder clearAvailableRows() {
        
        availableRows_ = 0L;
        onChanged();
        return this;
      }

      private long rowsLoaded_ ;
      /**
       * <code>int64 rows_loaded = 4;</code>
       */
      public long getRowsLoaded() {
        return rowsLoaded_;
      }
      /**
       * <code>int64 rows_loaded = 4;</code>
       */
      public Builder setRowsLoaded(long value) {
        
        rowsLoaded_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>int64 rows_loaded = 4;</code>
       */
      public Builder clearRowsLoaded() {
        
        rowsLoaded_ = 0L;
        onChanged();
        return this;
      }

      private long nanoseconds_ ;
      /**
       * <code>int64 nanoseconds = 5;</code>
       */
      public long getNanoseconds() {
        return nanoseconds_;
      }
      /**
       * <code>int64 nanoseconds = 5;</code>
       */
      public Builder setNanoseconds(long value) {
        
        nanoseconds_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>int64 nanoseconds = 5;</code>
       */
      public Builder clearNanoseconds() {
        
        nanoseconds_ = 0L;
        onChanged();
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

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


      // @@protoc_insertion_point(builder_scope:xla.LoadDataResponse)
    }

    // @@protoc_insertion_point(class_scope:xla.LoadDataResponse)
    private static final xla.Xla.LoadDataResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new xla.Xla.LoadDataResponse();
    }

    public static xla.Xla.LoadDataResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public xla.Xla.LoadDataResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SpecializeRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:xla.SpecializeRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.xla.ComputationHandle computation = 1;</code>
     */
    boolean hasComputation();
    /**
     * <code>.xla.ComputationHandle computation = 1;</code>
     */
    xla.XlaData.ComputationHandle getComputation();
    /**
     * <code>.xla.ComputationHandle computation = 1;</code>
     */
    xla.XlaData.ComputationHandleOrBuilder getComputationOrBuilder();

    /**
     * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
     */
    java.util.List<xla.XlaData.GlobalDataHandle> 
        getArgumentsList();
    /**
     * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
     */
    xla.XlaData.GlobalDataHandle getArguments(int index);
    /**
     * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
     */
    int getArgumentsCount();
    /**
     * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
     */
    java.util.List<? extends xla.XlaData.GlobalDataHandleOrBuilder> 
        getArgumentsOrBuilderList();
    /**
     * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
     */
    xla.XlaData.GlobalDataHandleOrBuilder getArgumentsOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code xla.SpecializeRequest}
   */
  public  static final class SpecializeRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:xla.SpecializeRequest)
      SpecializeRequestOrBuilder {
    // Use SpecializeRequest.newBuilder() to construct.
    private SpecializeRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private SpecializeRequest() {
      arguments_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private SpecializeRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              xla.XlaData.ComputationHandle.Builder subBuilder = null;
              if (computation_ != null) {
                subBuilder = computation_.toBuilder();
              }
              computation_ = input.readMessage(xla.XlaData.ComputationHandle.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(computation_);
                computation_ = subBuilder.buildPartial();
              }

              break;
            }
            case 18: {
              if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
                arguments_ = new java.util.ArrayList<xla.XlaData.GlobalDataHandle>();
                mutable_bitField0_ |= 0x00000002;
              }
              arguments_.add(
                  input.readMessage(xla.XlaData.GlobalDataHandle.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)) {
          arguments_ = java.util.Collections.unmodifiableList(arguments_);
        }
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return xla.Xla.internal_static_xla_SpecializeRequest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return xla.Xla.internal_static_xla_SpecializeRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              xla.Xla.SpecializeRequest.class, xla.Xla.SpecializeRequest.Builder.class);
    }

    private int bitField0_;
    public static final int COMPUTATION_FIELD_NUMBER = 1;
    private xla.XlaData.ComputationHandle computation_;
    /**
     * <code>.xla.ComputationHandle computation = 1;</code>
     */
    public boolean hasComputation() {
      return computation_ != null;
    }
    /**
     * <code>.xla.ComputationHandle computation = 1;</code>
     */
    public xla.XlaData.ComputationHandle getComputation() {
      return computation_ == null ? xla.XlaData.ComputationHandle.getDefaultInstance() : computation_;
    }
    /**
     * <code>.xla.ComputationHandle computation = 1;</code>
     */
    public xla.XlaData.ComputationHandleOrBuilder getComputationOrBuilder() {
      return getComputation();
    }

    public static final int ARGUMENTS_FIELD_NUMBER = 2;
    private java.util.List<xla.XlaData.GlobalDataHandle> arguments_;
    /**
     * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
     */
    public java.util.List<xla.XlaData.GlobalDataHandle> getArgumentsList() {
      return arguments_;
    }
    /**
     * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
     */
    public java.util.List<? extends xla.XlaData.GlobalDataHandleOrBuilder> 
        getArgumentsOrBuilderList() {
      return arguments_;
    }
    /**
     * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
     */
    public int getArgumentsCount() {
      return arguments_.size();
    }
    /**
     * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
     */
    public xla.XlaData.GlobalDataHandle getArguments(int index) {
      return arguments_.get(index);
    }
    /**
     * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
     */
    public xla.XlaData.GlobalDataHandleOrBuilder getArgumentsOrBuilder(
        int index) {
      return arguments_.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 (computation_ != null) {
        output.writeMessage(1, getComputation());
      }
      for (int i = 0; i < arguments_.size(); i++) {
        output.writeMessage(2, arguments_.get(i));
      }
    }

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

      size = 0;
      if (computation_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getComputation());
      }
      for (int i = 0; i < arguments_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, arguments_.get(i));
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof xla.Xla.SpecializeRequest)) {
        return super.equals(obj);
      }
      xla.Xla.SpecializeRequest other = (xla.Xla.SpecializeRequest) obj;

      boolean result = true;
      result = result && (hasComputation() == other.hasComputation());
      if (hasComputation()) {
        result = result && getComputation()
            .equals(other.getComputation());
      }
      result = result && getArgumentsList()
          .equals(other.getArgumentsList());
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasComputation()) {
        hash = (37 * hash) + COMPUTATION_FIELD_NUMBER;
        hash = (53 * hash) + getComputation().hashCode();
      }
      if (getArgumentsCount() > 0) {
        hash = (37 * hash) + ARGUMENTS_FIELD_NUMBER;
        hash = (53 * hash) + getArgumentsList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static xla.Xla.SpecializeRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.SpecializeRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.SpecializeRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.SpecializeRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.SpecializeRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.SpecializeRequest 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 xla.Xla.SpecializeRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static xla.Xla.SpecializeRequest 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 xla.Xla.SpecializeRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.SpecializeRequest 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(xla.Xla.SpecializeRequest 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 xla.SpecializeRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:xla.SpecializeRequest)
        xla.Xla.SpecializeRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return xla.Xla.internal_static_xla_SpecializeRequest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return xla.Xla.internal_static_xla_SpecializeRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                xla.Xla.SpecializeRequest.class, xla.Xla.SpecializeRequest.Builder.class);
      }

      // Construct using xla.Xla.SpecializeRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getArgumentsFieldBuilder();
        }
      }
      public Builder clear() {
        super.clear();
        if (computationBuilder_ == null) {
          computation_ = null;
        } else {
          computation_ = null;
          computationBuilder_ = null;
        }
        if (argumentsBuilder_ == null) {
          arguments_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
        } else {
          argumentsBuilder_.clear();
        }
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return xla.Xla.internal_static_xla_SpecializeRequest_descriptor;
      }

      public xla.Xla.SpecializeRequest getDefaultInstanceForType() {
        return xla.Xla.SpecializeRequest.getDefaultInstance();
      }

      public xla.Xla.SpecializeRequest build() {
        xla.Xla.SpecializeRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public xla.Xla.SpecializeRequest buildPartial() {
        xla.Xla.SpecializeRequest result = new xla.Xla.SpecializeRequest(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (computationBuilder_ == null) {
          result.computation_ = computation_;
        } else {
          result.computation_ = computationBuilder_.build();
        }
        if (argumentsBuilder_ == null) {
          if (((bitField0_ & 0x00000002) == 0x00000002)) {
            arguments_ = java.util.Collections.unmodifiableList(arguments_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.arguments_ = arguments_;
        } else {
          result.arguments_ = argumentsBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof xla.Xla.SpecializeRequest) {
          return mergeFrom((xla.Xla.SpecializeRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(xla.Xla.SpecializeRequest other) {
        if (other == xla.Xla.SpecializeRequest.getDefaultInstance()) return this;
        if (other.hasComputation()) {
          mergeComputation(other.getComputation());
        }
        if (argumentsBuilder_ == null) {
          if (!other.arguments_.isEmpty()) {
            if (arguments_.isEmpty()) {
              arguments_ = other.arguments_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureArgumentsIsMutable();
              arguments_.addAll(other.arguments_);
            }
            onChanged();
          }
        } else {
          if (!other.arguments_.isEmpty()) {
            if (argumentsBuilder_.isEmpty()) {
              argumentsBuilder_.dispose();
              argumentsBuilder_ = null;
              arguments_ = other.arguments_;
              bitField0_ = (bitField0_ & ~0x00000002);
              argumentsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getArgumentsFieldBuilder() : null;
            } else {
              argumentsBuilder_.addAllMessages(other.arguments_);
            }
          }
        }
        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 {
        xla.Xla.SpecializeRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (xla.Xla.SpecializeRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private xla.XlaData.ComputationHandle computation_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.XlaData.ComputationHandle, xla.XlaData.ComputationHandle.Builder, xla.XlaData.ComputationHandleOrBuilder> computationBuilder_;
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      public boolean hasComputation() {
        return computationBuilder_ != null || computation_ != null;
      }
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      public xla.XlaData.ComputationHandle getComputation() {
        if (computationBuilder_ == null) {
          return computation_ == null ? xla.XlaData.ComputationHandle.getDefaultInstance() : computation_;
        } else {
          return computationBuilder_.getMessage();
        }
      }
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      public Builder setComputation(xla.XlaData.ComputationHandle value) {
        if (computationBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          computation_ = value;
          onChanged();
        } else {
          computationBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      public Builder setComputation(
          xla.XlaData.ComputationHandle.Builder builderForValue) {
        if (computationBuilder_ == null) {
          computation_ = builderForValue.build();
          onChanged();
        } else {
          computationBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      public Builder mergeComputation(xla.XlaData.ComputationHandle value) {
        if (computationBuilder_ == null) {
          if (computation_ != null) {
            computation_ =
              xla.XlaData.ComputationHandle.newBuilder(computation_).mergeFrom(value).buildPartial();
          } else {
            computation_ = value;
          }
          onChanged();
        } else {
          computationBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      public Builder clearComputation() {
        if (computationBuilder_ == null) {
          computation_ = null;
          onChanged();
        } else {
          computation_ = null;
          computationBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      public xla.XlaData.ComputationHandle.Builder getComputationBuilder() {
        
        onChanged();
        return getComputationFieldBuilder().getBuilder();
      }
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      public xla.XlaData.ComputationHandleOrBuilder getComputationOrBuilder() {
        if (computationBuilder_ != null) {
          return computationBuilder_.getMessageOrBuilder();
        } else {
          return computation_ == null ?
              xla.XlaData.ComputationHandle.getDefaultInstance() : computation_;
        }
      }
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.XlaData.ComputationHandle, xla.XlaData.ComputationHandle.Builder, xla.XlaData.ComputationHandleOrBuilder> 
          getComputationFieldBuilder() {
        if (computationBuilder_ == null) {
          computationBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              xla.XlaData.ComputationHandle, xla.XlaData.ComputationHandle.Builder, xla.XlaData.ComputationHandleOrBuilder>(
                  getComputation(),
                  getParentForChildren(),
                  isClean());
          computation_ = null;
        }
        return computationBuilder_;
      }

      private java.util.List<xla.XlaData.GlobalDataHandle> arguments_ =
        java.util.Collections.emptyList();
      private void ensureArgumentsIsMutable() {
        if (!((bitField0_ & 0x00000002) == 0x00000002)) {
          arguments_ = new java.util.ArrayList<xla.XlaData.GlobalDataHandle>(arguments_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          xla.XlaData.GlobalDataHandle, xla.XlaData.GlobalDataHandle.Builder, xla.XlaData.GlobalDataHandleOrBuilder> argumentsBuilder_;

      /**
       * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
       */
      public java.util.List<xla.XlaData.GlobalDataHandle> getArgumentsList() {
        if (argumentsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(arguments_);
        } else {
          return argumentsBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
       */
      public int getArgumentsCount() {
        if (argumentsBuilder_ == null) {
          return arguments_.size();
        } else {
          return argumentsBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
       */
      public xla.XlaData.GlobalDataHandle getArguments(int index) {
        if (argumentsBuilder_ == null) {
          return arguments_.get(index);
        } else {
          return argumentsBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
       */
      public Builder setArguments(
          int index, xla.XlaData.GlobalDataHandle value) {
        if (argumentsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureArgumentsIsMutable();
          arguments_.set(index, value);
          onChanged();
        } else {
          argumentsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
       */
      public Builder setArguments(
          int index, xla.XlaData.GlobalDataHandle.Builder builderForValue) {
        if (argumentsBuilder_ == null) {
          ensureArgumentsIsMutable();
          arguments_.set(index, builderForValue.build());
          onChanged();
        } else {
          argumentsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
       */
      public Builder addArguments(xla.XlaData.GlobalDataHandle value) {
        if (argumentsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureArgumentsIsMutable();
          arguments_.add(value);
          onChanged();
        } else {
          argumentsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
       */
      public Builder addArguments(
          int index, xla.XlaData.GlobalDataHandle value) {
        if (argumentsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureArgumentsIsMutable();
          arguments_.add(index, value);
          onChanged();
        } else {
          argumentsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
       */
      public Builder addArguments(
          xla.XlaData.GlobalDataHandle.Builder builderForValue) {
        if (argumentsBuilder_ == null) {
          ensureArgumentsIsMutable();
          arguments_.add(builderForValue.build());
          onChanged();
        } else {
          argumentsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
       */
      public Builder addArguments(
          int index, xla.XlaData.GlobalDataHandle.Builder builderForValue) {
        if (argumentsBuilder_ == null) {
          ensureArgumentsIsMutable();
          arguments_.add(index, builderForValue.build());
          onChanged();
        } else {
          argumentsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
       */
      public Builder addAllArguments(
          java.lang.Iterable<? extends xla.XlaData.GlobalDataHandle> values) {
        if (argumentsBuilder_ == null) {
          ensureArgumentsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, arguments_);
          onChanged();
        } else {
          argumentsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
       */
      public Builder clearArguments() {
        if (argumentsBuilder_ == null) {
          arguments_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          argumentsBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
       */
      public Builder removeArguments(int index) {
        if (argumentsBuilder_ == null) {
          ensureArgumentsIsMutable();
          arguments_.remove(index);
          onChanged();
        } else {
          argumentsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
       */
      public xla.XlaData.GlobalDataHandle.Builder getArgumentsBuilder(
          int index) {
        return getArgumentsFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
       */
      public xla.XlaData.GlobalDataHandleOrBuilder getArgumentsOrBuilder(
          int index) {
        if (argumentsBuilder_ == null) {
          return arguments_.get(index);  } else {
          return argumentsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
       */
      public java.util.List<? extends xla.XlaData.GlobalDataHandleOrBuilder> 
           getArgumentsOrBuilderList() {
        if (argumentsBuilder_ != null) {
          return argumentsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(arguments_);
        }
      }
      /**
       * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
       */
      public xla.XlaData.GlobalDataHandle.Builder addArgumentsBuilder() {
        return getArgumentsFieldBuilder().addBuilder(
            xla.XlaData.GlobalDataHandle.getDefaultInstance());
      }
      /**
       * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
       */
      public xla.XlaData.GlobalDataHandle.Builder addArgumentsBuilder(
          int index) {
        return getArgumentsFieldBuilder().addBuilder(
            index, xla.XlaData.GlobalDataHandle.getDefaultInstance());
      }
      /**
       * <code>repeated .xla.GlobalDataHandle arguments = 2;</code>
       */
      public java.util.List<xla.XlaData.GlobalDataHandle.Builder> 
           getArgumentsBuilderList() {
        return getArgumentsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          xla.XlaData.GlobalDataHandle, xla.XlaData.GlobalDataHandle.Builder, xla.XlaData.GlobalDataHandleOrBuilder> 
          getArgumentsFieldBuilder() {
        if (argumentsBuilder_ == null) {
          argumentsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              xla.XlaData.GlobalDataHandle, xla.XlaData.GlobalDataHandle.Builder, xla.XlaData.GlobalDataHandleOrBuilder>(
                  arguments_,
                  ((bitField0_ & 0x00000002) == 0x00000002),
                  getParentForChildren(),
                  isClean());
          arguments_ = null;
        }
        return argumentsBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

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


      // @@protoc_insertion_point(builder_scope:xla.SpecializeRequest)
    }

    // @@protoc_insertion_point(class_scope:xla.SpecializeRequest)
    private static final xla.Xla.SpecializeRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new xla.Xla.SpecializeRequest();
    }

    public static xla.Xla.SpecializeRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public xla.Xla.SpecializeRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SpecializeResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:xla.SpecializeResponse)
      com.google.protobuf.MessageOrBuilder {
  }
  /**
   * Protobuf type {@code xla.SpecializeResponse}
   */
  public  static final class SpecializeResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:xla.SpecializeResponse)
      SpecializeResponseOrBuilder {
    // Use SpecializeResponse.newBuilder() to construct.
    private SpecializeResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private SpecializeResponse() {
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private SpecializeResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(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 {
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return xla.Xla.internal_static_xla_SpecializeResponse_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return xla.Xla.internal_static_xla_SpecializeResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              xla.Xla.SpecializeResponse.class, xla.Xla.SpecializeResponse.Builder.class);
    }

    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 {
    }

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

      size = 0;
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof xla.Xla.SpecializeResponse)) {
        return super.equals(obj);
      }
      xla.Xla.SpecializeResponse other = (xla.Xla.SpecializeResponse) obj;

      boolean result = true;
      return result;
    }

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

    public static xla.Xla.SpecializeResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.SpecializeResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.SpecializeResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.SpecializeResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.SpecializeResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.SpecializeResponse 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 xla.Xla.SpecializeResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static xla.Xla.SpecializeResponse 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 xla.Xla.SpecializeResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.SpecializeResponse 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(xla.Xla.SpecializeResponse 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 xla.SpecializeResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:xla.SpecializeResponse)
        xla.Xla.SpecializeResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return xla.Xla.internal_static_xla_SpecializeResponse_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return xla.Xla.internal_static_xla_SpecializeResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                xla.Xla.SpecializeResponse.class, xla.Xla.SpecializeResponse.Builder.class);
      }

      // Construct using xla.Xla.SpecializeResponse.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();
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return xla.Xla.internal_static_xla_SpecializeResponse_descriptor;
      }

      public xla.Xla.SpecializeResponse getDefaultInstanceForType() {
        return xla.Xla.SpecializeResponse.getDefaultInstance();
      }

      public xla.Xla.SpecializeResponse build() {
        xla.Xla.SpecializeResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public xla.Xla.SpecializeResponse buildPartial() {
        xla.Xla.SpecializeResponse result = new xla.Xla.SpecializeResponse(this);
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof xla.Xla.SpecializeResponse) {
          return mergeFrom((xla.Xla.SpecializeResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(xla.Xla.SpecializeResponse other) {
        if (other == xla.Xla.SpecializeResponse.getDefaultInstance()) return this;
        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 {
        xla.Xla.SpecializeResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (xla.Xla.SpecializeResponse) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

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


      // @@protoc_insertion_point(builder_scope:xla.SpecializeResponse)
    }

    // @@protoc_insertion_point(class_scope:xla.SpecializeResponse)
    private static final xla.Xla.SpecializeResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new xla.Xla.SpecializeResponse();
    }

    public static xla.Xla.SpecializeResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public xla.Xla.SpecializeResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface GetShapeRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:xla.GetShapeRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.xla.GlobalDataHandle data = 1;</code>
     */
    boolean hasData();
    /**
     * <code>.xla.GlobalDataHandle data = 1;</code>
     */
    xla.XlaData.GlobalDataHandle getData();
    /**
     * <code>.xla.GlobalDataHandle data = 1;</code>
     */
    xla.XlaData.GlobalDataHandleOrBuilder getDataOrBuilder();
  }
  /**
   * Protobuf type {@code xla.GetShapeRequest}
   */
  public  static final class GetShapeRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:xla.GetShapeRequest)
      GetShapeRequestOrBuilder {
    // Use GetShapeRequest.newBuilder() to construct.
    private GetShapeRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private GetShapeRequest() {
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private GetShapeRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              xla.XlaData.GlobalDataHandle.Builder subBuilder = null;
              if (data_ != null) {
                subBuilder = data_.toBuilder();
              }
              data_ = input.readMessage(xla.XlaData.GlobalDataHandle.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(data_);
                data_ = 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 {
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return xla.Xla.internal_static_xla_GetShapeRequest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return xla.Xla.internal_static_xla_GetShapeRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              xla.Xla.GetShapeRequest.class, xla.Xla.GetShapeRequest.Builder.class);
    }

    public static final int DATA_FIELD_NUMBER = 1;
    private xla.XlaData.GlobalDataHandle data_;
    /**
     * <code>.xla.GlobalDataHandle data = 1;</code>
     */
    public boolean hasData() {
      return data_ != null;
    }
    /**
     * <code>.xla.GlobalDataHandle data = 1;</code>
     */
    public xla.XlaData.GlobalDataHandle getData() {
      return data_ == null ? xla.XlaData.GlobalDataHandle.getDefaultInstance() : data_;
    }
    /**
     * <code>.xla.GlobalDataHandle data = 1;</code>
     */
    public xla.XlaData.GlobalDataHandleOrBuilder getDataOrBuilder() {
      return getData();
    }

    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 (data_ != null) {
        output.writeMessage(1, getData());
      }
    }

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

      size = 0;
      if (data_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getData());
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof xla.Xla.GetShapeRequest)) {
        return super.equals(obj);
      }
      xla.Xla.GetShapeRequest other = (xla.Xla.GetShapeRequest) obj;

      boolean result = true;
      result = result && (hasData() == other.hasData());
      if (hasData()) {
        result = result && getData()
            .equals(other.getData());
      }
      return result;
    }

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

    public static xla.Xla.GetShapeRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.GetShapeRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.GetShapeRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.GetShapeRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.GetShapeRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.GetShapeRequest 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 xla.Xla.GetShapeRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static xla.Xla.GetShapeRequest 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 xla.Xla.GetShapeRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.GetShapeRequest 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(xla.Xla.GetShapeRequest 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 xla.GetShapeRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:xla.GetShapeRequest)
        xla.Xla.GetShapeRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return xla.Xla.internal_static_xla_GetShapeRequest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return xla.Xla.internal_static_xla_GetShapeRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                xla.Xla.GetShapeRequest.class, xla.Xla.GetShapeRequest.Builder.class);
      }

      // Construct using xla.Xla.GetShapeRequest.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 (dataBuilder_ == null) {
          data_ = null;
        } else {
          data_ = null;
          dataBuilder_ = null;
        }
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return xla.Xla.internal_static_xla_GetShapeRequest_descriptor;
      }

      public xla.Xla.GetShapeRequest getDefaultInstanceForType() {
        return xla.Xla.GetShapeRequest.getDefaultInstance();
      }

      public xla.Xla.GetShapeRequest build() {
        xla.Xla.GetShapeRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public xla.Xla.GetShapeRequest buildPartial() {
        xla.Xla.GetShapeRequest result = new xla.Xla.GetShapeRequest(this);
        if (dataBuilder_ == null) {
          result.data_ = data_;
        } else {
          result.data_ = dataBuilder_.build();
        }
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof xla.Xla.GetShapeRequest) {
          return mergeFrom((xla.Xla.GetShapeRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(xla.Xla.GetShapeRequest other) {
        if (other == xla.Xla.GetShapeRequest.getDefaultInstance()) return this;
        if (other.hasData()) {
          mergeData(other.getData());
        }
        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 {
        xla.Xla.GetShapeRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (xla.Xla.GetShapeRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private xla.XlaData.GlobalDataHandle data_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.XlaData.GlobalDataHandle, xla.XlaData.GlobalDataHandle.Builder, xla.XlaData.GlobalDataHandleOrBuilder> dataBuilder_;
      /**
       * <code>.xla.GlobalDataHandle data = 1;</code>
       */
      public boolean hasData() {
        return dataBuilder_ != null || data_ != null;
      }
      /**
       * <code>.xla.GlobalDataHandle data = 1;</code>
       */
      public xla.XlaData.GlobalDataHandle getData() {
        if (dataBuilder_ == null) {
          return data_ == null ? xla.XlaData.GlobalDataHandle.getDefaultInstance() : data_;
        } else {
          return dataBuilder_.getMessage();
        }
      }
      /**
       * <code>.xla.GlobalDataHandle data = 1;</code>
       */
      public Builder setData(xla.XlaData.GlobalDataHandle value) {
        if (dataBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          data_ = value;
          onChanged();
        } else {
          dataBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.xla.GlobalDataHandle data = 1;</code>
       */
      public Builder setData(
          xla.XlaData.GlobalDataHandle.Builder builderForValue) {
        if (dataBuilder_ == null) {
          data_ = builderForValue.build();
          onChanged();
        } else {
          dataBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.xla.GlobalDataHandle data = 1;</code>
       */
      public Builder mergeData(xla.XlaData.GlobalDataHandle value) {
        if (dataBuilder_ == null) {
          if (data_ != null) {
            data_ =
              xla.XlaData.GlobalDataHandle.newBuilder(data_).mergeFrom(value).buildPartial();
          } else {
            data_ = value;
          }
          onChanged();
        } else {
          dataBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.xla.GlobalDataHandle data = 1;</code>
       */
      public Builder clearData() {
        if (dataBuilder_ == null) {
          data_ = null;
          onChanged();
        } else {
          data_ = null;
          dataBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.xla.GlobalDataHandle data = 1;</code>
       */
      public xla.XlaData.GlobalDataHandle.Builder getDataBuilder() {
        
        onChanged();
        return getDataFieldBuilder().getBuilder();
      }
      /**
       * <code>.xla.GlobalDataHandle data = 1;</code>
       */
      public xla.XlaData.GlobalDataHandleOrBuilder getDataOrBuilder() {
        if (dataBuilder_ != null) {
          return dataBuilder_.getMessageOrBuilder();
        } else {
          return data_ == null ?
              xla.XlaData.GlobalDataHandle.getDefaultInstance() : data_;
        }
      }
      /**
       * <code>.xla.GlobalDataHandle data = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.XlaData.GlobalDataHandle, xla.XlaData.GlobalDataHandle.Builder, xla.XlaData.GlobalDataHandleOrBuilder> 
          getDataFieldBuilder() {
        if (dataBuilder_ == null) {
          dataBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              xla.XlaData.GlobalDataHandle, xla.XlaData.GlobalDataHandle.Builder, xla.XlaData.GlobalDataHandleOrBuilder>(
                  getData(),
                  getParentForChildren(),
                  isClean());
          data_ = null;
        }
        return dataBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

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


      // @@protoc_insertion_point(builder_scope:xla.GetShapeRequest)
    }

    // @@protoc_insertion_point(class_scope:xla.GetShapeRequest)
    private static final xla.Xla.GetShapeRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new xla.Xla.GetShapeRequest();
    }

    public static xla.Xla.GetShapeRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public xla.Xla.GetShapeRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface GetShapeResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:xla.GetShapeResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.xla.Shape shape = 1;</code>
     */
    boolean hasShape();
    /**
     * <code>.xla.Shape shape = 1;</code>
     */
    xla.XlaData.Shape getShape();
    /**
     * <code>.xla.Shape shape = 1;</code>
     */
    xla.XlaData.ShapeOrBuilder getShapeOrBuilder();
  }
  /**
   * Protobuf type {@code xla.GetShapeResponse}
   */
  public  static final class GetShapeResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:xla.GetShapeResponse)
      GetShapeResponseOrBuilder {
    // Use GetShapeResponse.newBuilder() to construct.
    private GetShapeResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private GetShapeResponse() {
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private GetShapeResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              xla.XlaData.Shape.Builder subBuilder = null;
              if (shape_ != null) {
                subBuilder = shape_.toBuilder();
              }
              shape_ = input.readMessage(xla.XlaData.Shape.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(shape_);
                shape_ = 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 {
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return xla.Xla.internal_static_xla_GetShapeResponse_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return xla.Xla.internal_static_xla_GetShapeResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              xla.Xla.GetShapeResponse.class, xla.Xla.GetShapeResponse.Builder.class);
    }

    public static final int SHAPE_FIELD_NUMBER = 1;
    private xla.XlaData.Shape shape_;
    /**
     * <code>.xla.Shape shape = 1;</code>
     */
    public boolean hasShape() {
      return shape_ != null;
    }
    /**
     * <code>.xla.Shape shape = 1;</code>
     */
    public xla.XlaData.Shape getShape() {
      return shape_ == null ? xla.XlaData.Shape.getDefaultInstance() : shape_;
    }
    /**
     * <code>.xla.Shape shape = 1;</code>
     */
    public xla.XlaData.ShapeOrBuilder getShapeOrBuilder() {
      return getShape();
    }

    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 (shape_ != null) {
        output.writeMessage(1, getShape());
      }
    }

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

      size = 0;
      if (shape_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getShape());
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof xla.Xla.GetShapeResponse)) {
        return super.equals(obj);
      }
      xla.Xla.GetShapeResponse other = (xla.Xla.GetShapeResponse) obj;

      boolean result = true;
      result = result && (hasShape() == other.hasShape());
      if (hasShape()) {
        result = result && getShape()
            .equals(other.getShape());
      }
      return result;
    }

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

    public static xla.Xla.GetShapeResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.GetShapeResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.GetShapeResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.GetShapeResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.GetShapeResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.GetShapeResponse 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 xla.Xla.GetShapeResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static xla.Xla.GetShapeResponse 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 xla.Xla.GetShapeResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.GetShapeResponse 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(xla.Xla.GetShapeResponse 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 xla.GetShapeResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:xla.GetShapeResponse)
        xla.Xla.GetShapeResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return xla.Xla.internal_static_xla_GetShapeResponse_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return xla.Xla.internal_static_xla_GetShapeResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                xla.Xla.GetShapeResponse.class, xla.Xla.GetShapeResponse.Builder.class);
      }

      // Construct using xla.Xla.GetShapeResponse.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 (shapeBuilder_ == null) {
          shape_ = null;
        } else {
          shape_ = null;
          shapeBuilder_ = null;
        }
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return xla.Xla.internal_static_xla_GetShapeResponse_descriptor;
      }

      public xla.Xla.GetShapeResponse getDefaultInstanceForType() {
        return xla.Xla.GetShapeResponse.getDefaultInstance();
      }

      public xla.Xla.GetShapeResponse build() {
        xla.Xla.GetShapeResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public xla.Xla.GetShapeResponse buildPartial() {
        xla.Xla.GetShapeResponse result = new xla.Xla.GetShapeResponse(this);
        if (shapeBuilder_ == null) {
          result.shape_ = shape_;
        } else {
          result.shape_ = shapeBuilder_.build();
        }
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof xla.Xla.GetShapeResponse) {
          return mergeFrom((xla.Xla.GetShapeResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(xla.Xla.GetShapeResponse other) {
        if (other == xla.Xla.GetShapeResponse.getDefaultInstance()) return this;
        if (other.hasShape()) {
          mergeShape(other.getShape());
        }
        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 {
        xla.Xla.GetShapeResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (xla.Xla.GetShapeResponse) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private xla.XlaData.Shape shape_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.XlaData.Shape, xla.XlaData.Shape.Builder, xla.XlaData.ShapeOrBuilder> shapeBuilder_;
      /**
       * <code>.xla.Shape shape = 1;</code>
       */
      public boolean hasShape() {
        return shapeBuilder_ != null || shape_ != null;
      }
      /**
       * <code>.xla.Shape shape = 1;</code>
       */
      public xla.XlaData.Shape getShape() {
        if (shapeBuilder_ == null) {
          return shape_ == null ? xla.XlaData.Shape.getDefaultInstance() : shape_;
        } else {
          return shapeBuilder_.getMessage();
        }
      }
      /**
       * <code>.xla.Shape shape = 1;</code>
       */
      public Builder setShape(xla.XlaData.Shape value) {
        if (shapeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          shape_ = value;
          onChanged();
        } else {
          shapeBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.xla.Shape shape = 1;</code>
       */
      public Builder setShape(
          xla.XlaData.Shape.Builder builderForValue) {
        if (shapeBuilder_ == null) {
          shape_ = builderForValue.build();
          onChanged();
        } else {
          shapeBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.xla.Shape shape = 1;</code>
       */
      public Builder mergeShape(xla.XlaData.Shape value) {
        if (shapeBuilder_ == null) {
          if (shape_ != null) {
            shape_ =
              xla.XlaData.Shape.newBuilder(shape_).mergeFrom(value).buildPartial();
          } else {
            shape_ = value;
          }
          onChanged();
        } else {
          shapeBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.xla.Shape shape = 1;</code>
       */
      public Builder clearShape() {
        if (shapeBuilder_ == null) {
          shape_ = null;
          onChanged();
        } else {
          shape_ = null;
          shapeBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.xla.Shape shape = 1;</code>
       */
      public xla.XlaData.Shape.Builder getShapeBuilder() {
        
        onChanged();
        return getShapeFieldBuilder().getBuilder();
      }
      /**
       * <code>.xla.Shape shape = 1;</code>
       */
      public xla.XlaData.ShapeOrBuilder getShapeOrBuilder() {
        if (shapeBuilder_ != null) {
          return shapeBuilder_.getMessageOrBuilder();
        } else {
          return shape_ == null ?
              xla.XlaData.Shape.getDefaultInstance() : shape_;
        }
      }
      /**
       * <code>.xla.Shape shape = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.XlaData.Shape, xla.XlaData.Shape.Builder, xla.XlaData.ShapeOrBuilder> 
          getShapeFieldBuilder() {
        if (shapeBuilder_ == null) {
          shapeBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              xla.XlaData.Shape, xla.XlaData.Shape.Builder, xla.XlaData.ShapeOrBuilder>(
                  getShape(),
                  getParentForChildren(),
                  isClean());
          shape_ = null;
        }
        return shapeBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

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


      // @@protoc_insertion_point(builder_scope:xla.GetShapeResponse)
    }

    // @@protoc_insertion_point(class_scope:xla.GetShapeResponse)
    private static final xla.Xla.GetShapeResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new xla.Xla.GetShapeResponse();
    }

    public static xla.Xla.GetShapeResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public xla.Xla.GetShapeResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface GetComputationShapeRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:xla.GetComputationShapeRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.xla.ComputationHandle computation = 1;</code>
     */
    boolean hasComputation();
    /**
     * <code>.xla.ComputationHandle computation = 1;</code>
     */
    xla.XlaData.ComputationHandle getComputation();
    /**
     * <code>.xla.ComputationHandle computation = 1;</code>
     */
    xla.XlaData.ComputationHandleOrBuilder getComputationOrBuilder();
  }
  /**
   * Protobuf type {@code xla.GetComputationShapeRequest}
   */
  public  static final class GetComputationShapeRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:xla.GetComputationShapeRequest)
      GetComputationShapeRequestOrBuilder {
    // Use GetComputationShapeRequest.newBuilder() to construct.
    private GetComputationShapeRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private GetComputationShapeRequest() {
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private GetComputationShapeRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              xla.XlaData.ComputationHandle.Builder subBuilder = null;
              if (computation_ != null) {
                subBuilder = computation_.toBuilder();
              }
              computation_ = input.readMessage(xla.XlaData.ComputationHandle.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(computation_);
                computation_ = 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 {
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return xla.Xla.internal_static_xla_GetComputationShapeRequest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return xla.Xla.internal_static_xla_GetComputationShapeRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              xla.Xla.GetComputationShapeRequest.class, xla.Xla.GetComputationShapeRequest.Builder.class);
    }

    public static final int COMPUTATION_FIELD_NUMBER = 1;
    private xla.XlaData.ComputationHandle computation_;
    /**
     * <code>.xla.ComputationHandle computation = 1;</code>
     */
    public boolean hasComputation() {
      return computation_ != null;
    }
    /**
     * <code>.xla.ComputationHandle computation = 1;</code>
     */
    public xla.XlaData.ComputationHandle getComputation() {
      return computation_ == null ? xla.XlaData.ComputationHandle.getDefaultInstance() : computation_;
    }
    /**
     * <code>.xla.ComputationHandle computation = 1;</code>
     */
    public xla.XlaData.ComputationHandleOrBuilder getComputationOrBuilder() {
      return getComputation();
    }

    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 (computation_ != null) {
        output.writeMessage(1, getComputation());
      }
    }

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

      size = 0;
      if (computation_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getComputation());
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof xla.Xla.GetComputationShapeRequest)) {
        return super.equals(obj);
      }
      xla.Xla.GetComputationShapeRequest other = (xla.Xla.GetComputationShapeRequest) obj;

      boolean result = true;
      result = result && (hasComputation() == other.hasComputation());
      if (hasComputation()) {
        result = result && getComputation()
            .equals(other.getComputation());
      }
      return result;
    }

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

    public static xla.Xla.GetComputationShapeRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.GetComputationShapeRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.GetComputationShapeRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.GetComputationShapeRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.GetComputationShapeRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.GetComputationShapeRequest 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 xla.Xla.GetComputationShapeRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static xla.Xla.GetComputationShapeRequest 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 xla.Xla.GetComputationShapeRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.GetComputationShapeRequest 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(xla.Xla.GetComputationShapeRequest 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 xla.GetComputationShapeRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:xla.GetComputationShapeRequest)
        xla.Xla.GetComputationShapeRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return xla.Xla.internal_static_xla_GetComputationShapeRequest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return xla.Xla.internal_static_xla_GetComputationShapeRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                xla.Xla.GetComputationShapeRequest.class, xla.Xla.GetComputationShapeRequest.Builder.class);
      }

      // Construct using xla.Xla.GetComputationShapeRequest.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 (computationBuilder_ == null) {
          computation_ = null;
        } else {
          computation_ = null;
          computationBuilder_ = null;
        }
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return xla.Xla.internal_static_xla_GetComputationShapeRequest_descriptor;
      }

      public xla.Xla.GetComputationShapeRequest getDefaultInstanceForType() {
        return xla.Xla.GetComputationShapeRequest.getDefaultInstance();
      }

      public xla.Xla.GetComputationShapeRequest build() {
        xla.Xla.GetComputationShapeRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public xla.Xla.GetComputationShapeRequest buildPartial() {
        xla.Xla.GetComputationShapeRequest result = new xla.Xla.GetComputationShapeRequest(this);
        if (computationBuilder_ == null) {
          result.computation_ = computation_;
        } else {
          result.computation_ = computationBuilder_.build();
        }
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof xla.Xla.GetComputationShapeRequest) {
          return mergeFrom((xla.Xla.GetComputationShapeRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(xla.Xla.GetComputationShapeRequest other) {
        if (other == xla.Xla.GetComputationShapeRequest.getDefaultInstance()) return this;
        if (other.hasComputation()) {
          mergeComputation(other.getComputation());
        }
        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 {
        xla.Xla.GetComputationShapeRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (xla.Xla.GetComputationShapeRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private xla.XlaData.ComputationHandle computation_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.XlaData.ComputationHandle, xla.XlaData.ComputationHandle.Builder, xla.XlaData.ComputationHandleOrBuilder> computationBuilder_;
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      public boolean hasComputation() {
        return computationBuilder_ != null || computation_ != null;
      }
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      public xla.XlaData.ComputationHandle getComputation() {
        if (computationBuilder_ == null) {
          return computation_ == null ? xla.XlaData.ComputationHandle.getDefaultInstance() : computation_;
        } else {
          return computationBuilder_.getMessage();
        }
      }
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      public Builder setComputation(xla.XlaData.ComputationHandle value) {
        if (computationBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          computation_ = value;
          onChanged();
        } else {
          computationBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      public Builder setComputation(
          xla.XlaData.ComputationHandle.Builder builderForValue) {
        if (computationBuilder_ == null) {
          computation_ = builderForValue.build();
          onChanged();
        } else {
          computationBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      public Builder mergeComputation(xla.XlaData.ComputationHandle value) {
        if (computationBuilder_ == null) {
          if (computation_ != null) {
            computation_ =
              xla.XlaData.ComputationHandle.newBuilder(computation_).mergeFrom(value).buildPartial();
          } else {
            computation_ = value;
          }
          onChanged();
        } else {
          computationBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      public Builder clearComputation() {
        if (computationBuilder_ == null) {
          computation_ = null;
          onChanged();
        } else {
          computation_ = null;
          computationBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      public xla.XlaData.ComputationHandle.Builder getComputationBuilder() {
        
        onChanged();
        return getComputationFieldBuilder().getBuilder();
      }
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      public xla.XlaData.ComputationHandleOrBuilder getComputationOrBuilder() {
        if (computationBuilder_ != null) {
          return computationBuilder_.getMessageOrBuilder();
        } else {
          return computation_ == null ?
              xla.XlaData.ComputationHandle.getDefaultInstance() : computation_;
        }
      }
      /**
       * <code>.xla.ComputationHandle computation = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.XlaData.ComputationHandle, xla.XlaData.ComputationHandle.Builder, xla.XlaData.ComputationHandleOrBuilder> 
          getComputationFieldBuilder() {
        if (computationBuilder_ == null) {
          computationBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              xla.XlaData.ComputationHandle, xla.XlaData.ComputationHandle.Builder, xla.XlaData.ComputationHandleOrBuilder>(
                  getComputation(),
                  getParentForChildren(),
                  isClean());
          computation_ = null;
        }
        return computationBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

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


      // @@protoc_insertion_point(builder_scope:xla.GetComputationShapeRequest)
    }

    // @@protoc_insertion_point(class_scope:xla.GetComputationShapeRequest)
    private static final xla.Xla.GetComputationShapeRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new xla.Xla.GetComputationShapeRequest();
    }

    public static xla.Xla.GetComputationShapeRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public xla.Xla.GetComputationShapeRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface GetComputationShapeResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:xla.GetComputationShapeResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.xla.ProgramShape program_shape = 1;</code>
     */
    boolean hasProgramShape();
    /**
     * <code>.xla.ProgramShape program_shape = 1;</code>
     */
    xla.XlaData.ProgramShape getProgramShape();
    /**
     * <code>.xla.ProgramShape program_shape = 1;</code>
     */
    xla.XlaData.ProgramShapeOrBuilder getProgramShapeOrBuilder();
  }
  /**
   * Protobuf type {@code xla.GetComputationShapeResponse}
   */
  public  static final class GetComputationShapeResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:xla.GetComputationShapeResponse)
      GetComputationShapeResponseOrBuilder {
    // Use GetComputationShapeResponse.newBuilder() to construct.
    private GetComputationShapeResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private GetComputationShapeResponse() {
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private GetComputationShapeResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              xla.XlaData.ProgramShape.Builder subBuilder = null;
              if (programShape_ != null) {
                subBuilder = programShape_.toBuilder();
              }
              programShape_ = input.readMessage(xla.XlaData.ProgramShape.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(programShape_);
                programShape_ = 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 {
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return xla.Xla.internal_static_xla_GetComputationShapeResponse_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return xla.Xla.internal_static_xla_GetComputationShapeResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              xla.Xla.GetComputationShapeResponse.class, xla.Xla.GetComputationShapeResponse.Builder.class);
    }

    public static final int PROGRAM_SHAPE_FIELD_NUMBER = 1;
    private xla.XlaData.ProgramShape programShape_;
    /**
     * <code>.xla.ProgramShape program_shape = 1;</code>
     */
    public boolean hasProgramShape() {
      return programShape_ != null;
    }
    /**
     * <code>.xla.ProgramShape program_shape = 1;</code>
     */
    public xla.XlaData.ProgramShape getProgramShape() {
      return programShape_ == null ? xla.XlaData.ProgramShape.getDefaultInstance() : programShape_;
    }
    /**
     * <code>.xla.ProgramShape program_shape = 1;</code>
     */
    public xla.XlaData.ProgramShapeOrBuilder getProgramShapeOrBuilder() {
      return getProgramShape();
    }

    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 (programShape_ != null) {
        output.writeMessage(1, getProgramShape());
      }
    }

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

      size = 0;
      if (programShape_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getProgramShape());
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof xla.Xla.GetComputationShapeResponse)) {
        return super.equals(obj);
      }
      xla.Xla.GetComputationShapeResponse other = (xla.Xla.GetComputationShapeResponse) obj;

      boolean result = true;
      result = result && (hasProgramShape() == other.hasProgramShape());
      if (hasProgramShape()) {
        result = result && getProgramShape()
            .equals(other.getProgramShape());
      }
      return result;
    }

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

    public static xla.Xla.GetComputationShapeResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.GetComputationShapeResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.GetComputationShapeResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.GetComputationShapeResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.GetComputationShapeResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.GetComputationShapeResponse 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 xla.Xla.GetComputationShapeResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static xla.Xla.GetComputationShapeResponse 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 xla.Xla.GetComputationShapeResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.GetComputationShapeResponse 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(xla.Xla.GetComputationShapeResponse 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 xla.GetComputationShapeResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:xla.GetComputationShapeResponse)
        xla.Xla.GetComputationShapeResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return xla.Xla.internal_static_xla_GetComputationShapeResponse_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return xla.Xla.internal_static_xla_GetComputationShapeResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                xla.Xla.GetComputationShapeResponse.class, xla.Xla.GetComputationShapeResponse.Builder.class);
      }

      // Construct using xla.Xla.GetComputationShapeResponse.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 (programShapeBuilder_ == null) {
          programShape_ = null;
        } else {
          programShape_ = null;
          programShapeBuilder_ = null;
        }
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return xla.Xla.internal_static_xla_GetComputationShapeResponse_descriptor;
      }

      public xla.Xla.GetComputationShapeResponse getDefaultInstanceForType() {
        return xla.Xla.GetComputationShapeResponse.getDefaultInstance();
      }

      public xla.Xla.GetComputationShapeResponse build() {
        xla.Xla.GetComputationShapeResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public xla.Xla.GetComputationShapeResponse buildPartial() {
        xla.Xla.GetComputationShapeResponse result = new xla.Xla.GetComputationShapeResponse(this);
        if (programShapeBuilder_ == null) {
          result.programShape_ = programShape_;
        } else {
          result.programShape_ = programShapeBuilder_.build();
        }
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof xla.Xla.GetComputationShapeResponse) {
          return mergeFrom((xla.Xla.GetComputationShapeResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(xla.Xla.GetComputationShapeResponse other) {
        if (other == xla.Xla.GetComputationShapeResponse.getDefaultInstance()) return this;
        if (other.hasProgramShape()) {
          mergeProgramShape(other.getProgramShape());
        }
        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 {
        xla.Xla.GetComputationShapeResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (xla.Xla.GetComputationShapeResponse) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private xla.XlaData.ProgramShape programShape_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.XlaData.ProgramShape, xla.XlaData.ProgramShape.Builder, xla.XlaData.ProgramShapeOrBuilder> programShapeBuilder_;
      /**
       * <code>.xla.ProgramShape program_shape = 1;</code>
       */
      public boolean hasProgramShape() {
        return programShapeBuilder_ != null || programShape_ != null;
      }
      /**
       * <code>.xla.ProgramShape program_shape = 1;</code>
       */
      public xla.XlaData.ProgramShape getProgramShape() {
        if (programShapeBuilder_ == null) {
          return programShape_ == null ? xla.XlaData.ProgramShape.getDefaultInstance() : programShape_;
        } else {
          return programShapeBuilder_.getMessage();
        }
      }
      /**
       * <code>.xla.ProgramShape program_shape = 1;</code>
       */
      public Builder setProgramShape(xla.XlaData.ProgramShape value) {
        if (programShapeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          programShape_ = value;
          onChanged();
        } else {
          programShapeBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.xla.ProgramShape program_shape = 1;</code>
       */
      public Builder setProgramShape(
          xla.XlaData.ProgramShape.Builder builderForValue) {
        if (programShapeBuilder_ == null) {
          programShape_ = builderForValue.build();
          onChanged();
        } else {
          programShapeBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.xla.ProgramShape program_shape = 1;</code>
       */
      public Builder mergeProgramShape(xla.XlaData.ProgramShape value) {
        if (programShapeBuilder_ == null) {
          if (programShape_ != null) {
            programShape_ =
              xla.XlaData.ProgramShape.newBuilder(programShape_).mergeFrom(value).buildPartial();
          } else {
            programShape_ = value;
          }
          onChanged();
        } else {
          programShapeBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.xla.ProgramShape program_shape = 1;</code>
       */
      public Builder clearProgramShape() {
        if (programShapeBuilder_ == null) {
          programShape_ = null;
          onChanged();
        } else {
          programShape_ = null;
          programShapeBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.xla.ProgramShape program_shape = 1;</code>
       */
      public xla.XlaData.ProgramShape.Builder getProgramShapeBuilder() {
        
        onChanged();
        return getProgramShapeFieldBuilder().getBuilder();
      }
      /**
       * <code>.xla.ProgramShape program_shape = 1;</code>
       */
      public xla.XlaData.ProgramShapeOrBuilder getProgramShapeOrBuilder() {
        if (programShapeBuilder_ != null) {
          return programShapeBuilder_.getMessageOrBuilder();
        } else {
          return programShape_ == null ?
              xla.XlaData.ProgramShape.getDefaultInstance() : programShape_;
        }
      }
      /**
       * <code>.xla.ProgramShape program_shape = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.XlaData.ProgramShape, xla.XlaData.ProgramShape.Builder, xla.XlaData.ProgramShapeOrBuilder> 
          getProgramShapeFieldBuilder() {
        if (programShapeBuilder_ == null) {
          programShapeBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              xla.XlaData.ProgramShape, xla.XlaData.ProgramShape.Builder, xla.XlaData.ProgramShapeOrBuilder>(
                  getProgramShape(),
                  getParentForChildren(),
                  isClean());
          programShape_ = null;
        }
        return programShapeBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

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


      // @@protoc_insertion_point(builder_scope:xla.GetComputationShapeResponse)
    }

    // @@protoc_insertion_point(class_scope:xla.GetComputationShapeResponse)
    private static final xla.Xla.GetComputationShapeResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new xla.Xla.GetComputationShapeResponse();
    }

    public static xla.Xla.GetComputationShapeResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public xla.Xla.GetComputationShapeResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface UnpackRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:xla.UnpackRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.xla.GlobalDataHandle data = 1;</code>
     */
    boolean hasData();
    /**
     * <code>.xla.GlobalDataHandle data = 1;</code>
     */
    xla.XlaData.GlobalDataHandle getData();
    /**
     * <code>.xla.GlobalDataHandle data = 1;</code>
     */
    xla.XlaData.GlobalDataHandleOrBuilder getDataOrBuilder();
  }
  /**
   * Protobuf type {@code xla.UnpackRequest}
   */
  public  static final class UnpackRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:xla.UnpackRequest)
      UnpackRequestOrBuilder {
    // Use UnpackRequest.newBuilder() to construct.
    private UnpackRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private UnpackRequest() {
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private UnpackRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              xla.XlaData.GlobalDataHandle.Builder subBuilder = null;
              if (data_ != null) {
                subBuilder = data_.toBuilder();
              }
              data_ = input.readMessage(xla.XlaData.GlobalDataHandle.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(data_);
                data_ = 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 {
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return xla.Xla.internal_static_xla_UnpackRequest_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return xla.Xla.internal_static_xla_UnpackRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              xla.Xla.UnpackRequest.class, xla.Xla.UnpackRequest.Builder.class);
    }

    public static final int DATA_FIELD_NUMBER = 1;
    private xla.XlaData.GlobalDataHandle data_;
    /**
     * <code>.xla.GlobalDataHandle data = 1;</code>
     */
    public boolean hasData() {
      return data_ != null;
    }
    /**
     * <code>.xla.GlobalDataHandle data = 1;</code>
     */
    public xla.XlaData.GlobalDataHandle getData() {
      return data_ == null ? xla.XlaData.GlobalDataHandle.getDefaultInstance() : data_;
    }
    /**
     * <code>.xla.GlobalDataHandle data = 1;</code>
     */
    public xla.XlaData.GlobalDataHandleOrBuilder getDataOrBuilder() {
      return getData();
    }

    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 (data_ != null) {
        output.writeMessage(1, getData());
      }
    }

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

      size = 0;
      if (data_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getData());
      }
      memoizedSize = size;
      return size;
    }

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof xla.Xla.UnpackRequest)) {
        return super.equals(obj);
      }
      xla.Xla.UnpackRequest other = (xla.Xla.UnpackRequest) obj;

      boolean result = true;
      result = result && (hasData() == other.hasData());
      if (hasData()) {
        result = result && getData()
            .equals(other.getData());
      }
      return result;
    }

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

    public static xla.Xla.UnpackRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.UnpackRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.UnpackRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.UnpackRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.UnpackRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.UnpackRequest 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 xla.Xla.UnpackRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static xla.Xla.UnpackRequest 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 xla.Xla.UnpackRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.UnpackRequest 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(xla.Xla.UnpackRequest 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 xla.UnpackRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:xla.UnpackRequest)
        xla.Xla.UnpackRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return xla.Xla.internal_static_xla_UnpackRequest_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return xla.Xla.internal_static_xla_UnpackRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                xla.Xla.UnpackRequest.class, xla.Xla.UnpackRequest.Builder.class);
      }

      // Construct using xla.Xla.UnpackRequest.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 (dataBuilder_ == null) {
          data_ = null;
        } else {
          data_ = null;
          dataBuilder_ = null;
        }
        return this;
      }

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return xla.Xla.internal_static_xla_UnpackRequest_descriptor;
      }

      public xla.Xla.UnpackRequest getDefaultInstanceForType() {
        return xla.Xla.UnpackRequest.getDefaultInstance();
      }

      public xla.Xla.UnpackRequest build() {
        xla.Xla.UnpackRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public xla.Xla.UnpackRequest buildPartial() {
        xla.Xla.UnpackRequest result = new xla.Xla.UnpackRequest(this);
        if (dataBuilder_ == null) {
          result.data_ = data_;
        } else {
          result.data_ = dataBuilder_.build();
        }
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof xla.Xla.UnpackRequest) {
          return mergeFrom((xla.Xla.UnpackRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(xla.Xla.UnpackRequest other) {
        if (other == xla.Xla.UnpackRequest.getDefaultInstance()) return this;
        if (other.hasData()) {
          mergeData(other.getData());
        }
        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 {
        xla.Xla.UnpackRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (xla.Xla.UnpackRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private xla.XlaData.GlobalDataHandle data_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.XlaData.GlobalDataHandle, xla.XlaData.GlobalDataHandle.Builder, xla.XlaData.GlobalDataHandleOrBuilder> dataBuilder_;
      /**
       * <code>.xla.GlobalDataHandle data = 1;</code>
       */
      public boolean hasData() {
        return dataBuilder_ != null || data_ != null;
      }
      /**
       * <code>.xla.GlobalDataHandle data = 1;</code>
       */
      public xla.XlaData.GlobalDataHandle getData() {
        if (dataBuilder_ == null) {
          return data_ == null ? xla.XlaData.GlobalDataHandle.getDefaultInstance() : data_;
        } else {
          return dataBuilder_.getMessage();
        }
      }
      /**
       * <code>.xla.GlobalDataHandle data = 1;</code>
       */
      public Builder setData(xla.XlaData.GlobalDataHandle value) {
        if (dataBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          data_ = value;
          onChanged();
        } else {
          dataBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.xla.GlobalDataHandle data = 1;</code>
       */
      public Builder setData(
          xla.XlaData.GlobalDataHandle.Builder builderForValue) {
        if (dataBuilder_ == null) {
          data_ = builderForValue.build();
          onChanged();
        } else {
          dataBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.xla.GlobalDataHandle data = 1;</code>
       */
      public Builder mergeData(xla.XlaData.GlobalDataHandle value) {
        if (dataBuilder_ == null) {
          if (data_ != null) {
            data_ =
              xla.XlaData.GlobalDataHandle.newBuilder(data_).mergeFrom(value).buildPartial();
          } else {
            data_ = value;
          }
          onChanged();
        } else {
          dataBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.xla.GlobalDataHandle data = 1;</code>
       */
      public Builder clearData() {
        if (dataBuilder_ == null) {
          data_ = null;
          onChanged();
        } else {
          data_ = null;
          dataBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.xla.GlobalDataHandle data = 1;</code>
       */
      public xla.XlaData.GlobalDataHandle.Builder getDataBuilder() {
        
        onChanged();
        return getDataFieldBuilder().getBuilder();
      }
      /**
       * <code>.xla.GlobalDataHandle data = 1;</code>
       */
      public xla.XlaData.GlobalDataHandleOrBuilder getDataOrBuilder() {
        if (dataBuilder_ != null) {
          return dataBuilder_.getMessageOrBuilder();
        } else {
          return data_ == null ?
              xla.XlaData.GlobalDataHandle.getDefaultInstance() : data_;
        }
      }
      /**
       * <code>.xla.GlobalDataHandle data = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          xla.XlaData.GlobalDataHandle, xla.XlaData.GlobalDataHandle.Builder, xla.XlaData.GlobalDataHandleOrBuilder> 
          getDataFieldBuilder() {
        if (dataBuilder_ == null) {
          dataBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              xla.XlaData.GlobalDataHandle, xla.XlaData.GlobalDataHandle.Builder, xla.XlaData.GlobalDataHandleOrBuilder>(
                  getData(),
                  getParentForChildren(),
                  isClean());
          data_ = null;
        }
        return dataBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

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


      // @@protoc_insertion_point(builder_scope:xla.UnpackRequest)
    }

    // @@protoc_insertion_point(class_scope:xla.UnpackRequest)
    private static final xla.Xla.UnpackRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new xla.Xla.UnpackRequest();
    }

    public static xla.Xla.UnpackRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public xla.Xla.UnpackRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface UnpackResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:xla.UnpackResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>repeated .xla.GlobalDataHandle tied_data = 1;</code>
     */
    java.util.List<xla.XlaData.GlobalDataHandle> 
        getTiedDataList();
    /**
     * <code>repeated .xla.GlobalDataHandle tied_data = 1;</code>
     */
    xla.XlaData.GlobalDataHandle getTiedData(int index);
    /**
     * <code>repeated .xla.GlobalDataHandle tied_data = 1;</code>
     */
    int getTiedDataCount();
    /**
     * <code>repeated .xla.GlobalDataHandle tied_data = 1;</code>
     */
    java.util.List<? extends xla.XlaData.GlobalDataHandleOrBuilder> 
        getTiedDataOrBuilderList();
    /**
     * <code>repeated .xla.GlobalDataHandle tied_data = 1;</code>
     */
    xla.XlaData.GlobalDataHandleOrBuilder getTiedDataOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code xla.UnpackResponse}
   */
  public  static final class UnpackResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:xla.UnpackResponse)
      UnpackResponseOrBuilder {
    // Use UnpackResponse.newBuilder() to construct.
    private UnpackResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private UnpackResponse() {
      tiedData_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return com.google.protobuf.UnknownFieldSet.getDefaultInstance();
    }
    private UnpackResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      int mutable_bitField0_ = 0;
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!input.skipField(tag)) {
                done = true;
              }
              break;
            }
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                tiedData_ = new java.util.ArrayList<xla.XlaData.GlobalDataHandle>();
                mutable_bitField0_ |= 0x00000001;
              }
              tiedData_.add(
                  input.readMessage(xla.XlaData.GlobalDataHandle.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)) {
          tiedData_ = java.util.Collections.unmodifiableList(tiedData_);
        }
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return xla.Xla.internal_static_xla_UnpackResponse_descriptor;
    }

    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return xla.Xla.internal_static_xla_UnpackResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              xla.Xla.UnpackResponse.class, xla.Xla.UnpackResponse.Builder.class);
    }

    public static final int TIED_DATA_FIELD_NUMBER = 1;
    private java.util.List<xla.XlaData.GlobalDataHandle> tiedData_;
    /**
     * <code>repeated .xla.GlobalDataHandle tied_data = 1;</code>
     */
    public java.util.List<xla.XlaData.GlobalDataHandle> getTiedDataList() {
      return tiedData_;
    }
    /**
     * <code>repeated .xla.GlobalDataHandle tied_data = 1;</code>
     */
    public java.util.List<? extends xla.XlaData.GlobalDataHandleOrBuilder> 
        getTiedDataOrBuilderList() {
      return tiedData_;
    }
    /**
     * <code>repeated .xla.GlobalDataHandle tied_data = 1;</code>
     */
    public int getTiedDataCount() {
      return tiedData_.size();
    }
    /**
     * <code>repeated .xla.GlobalDataHandle tied_data = 1;</code>
     */
    public xla.XlaData.GlobalDataHandle getTiedData(int index) {
      return tiedData_.get(index);
    }
    /**
     * <code>repeated .xla.GlobalDataHandle tied_data = 1;</code>
     */
    public xla.XlaData.GlobalDataHandleOrBuilder getTiedDataOrBuilder(
        int index) {
      return tiedData_.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 < tiedData_.size(); i++) {
        output.writeMessage(1, tiedData_.get(i));
      }
    }

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

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

    private static final long serialVersionUID = 0L;
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof xla.Xla.UnpackResponse)) {
        return super.equals(obj);
      }
      xla.Xla.UnpackResponse other = (xla.Xla.UnpackResponse) obj;

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

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

    public static xla.Xla.UnpackResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.UnpackResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.UnpackResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static xla.Xla.UnpackResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static xla.Xla.UnpackResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.UnpackResponse 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 xla.Xla.UnpackResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static xla.Xla.UnpackResponse 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 xla.Xla.UnpackResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static xla.Xla.UnpackResponse 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(xla.Xla.UnpackResponse 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 xla.UnpackResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:xla.UnpackResponse)
        xla.Xla.UnpackResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return xla.Xla.internal_static_xla_UnpackResponse_descriptor;
      }

      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return xla.Xla.internal_static_xla_UnpackResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                xla.Xla.UnpackResponse.class, xla.Xla.UnpackResponse.Builder.class);
      }

      // Construct using xla.Xla.UnpackResponse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return xla.Xla.internal_static_xla_UnpackResponse_descriptor;
      }

      public xla.Xla.UnpackResponse getDefaultInstanceForType() {
        return xla.Xla.UnpackResponse.getDefaultInstance();
      }

      public xla.Xla.UnpackResponse build() {
        xla.Xla.UnpackResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      public xla.Xla.UnpackResponse buildPartial() {
        xla.Xla.UnpackResponse result = new xla.Xla.UnpackResponse(this);
        int from_bitField0_ = bitField0_;
        if (tiedDataBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            tiedData_ = java.util.Collections.unmodifiableList(tiedData_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.tiedData_ = tiedData_;
        } else {
          result.tiedData_ = tiedDataBuilder_.build();
        }
        onBuilt();
        return result;
      }

      public Builder clone() {
        return (Builder) super.clone();
      }
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.setField(field, value);
      }
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof xla.Xla.UnpackResponse) {
          return mergeFrom((xla.Xla.UnpackResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(xla.Xla.UnpackResponse other) {
        if (other == xla.Xla.UnpackResponse.getDefaultInstance()) return this;
        if (tiedDataBuilder_ == null) {
          if (!other.tiedData_.isEmpty()) {
            if (tiedData_.isEmpty()) {
              tiedData_ = other.tiedData_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureTiedDataIsMutable();
              tiedData_.addAll(other.tiedData_);
            }
            onChanged();
          }
        } else {
          if (!other.tiedData_.isEmpty()) {
            if (tiedDataBuilder_.isEmpty()) {
              tiedDataBuilder_.dispose();
              tiedDataBuilder_ = null;
              tiedData_ = other.tiedData_;
              bitField0_ = (bitField0_ & ~0x00000001);
              tiedDataBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getTiedDataFieldBuilder() : null;
            } else {
              tiedDataBuilder_.addAllMessages(other.tiedData_);
            }
          }
        }
        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 {
        xla.Xla.UnpackResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (xla.Xla.UnpackResponse) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.util.List<xla.XlaData.GlobalDataHandle> tiedData_ =
        java.util.Collections.emptyList();
      private void ensureTiedDataIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          tiedData_ = new java.util.ArrayList<xla.XlaData.GlobalDataHandle>(tiedData_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          xla.XlaData.GlobalDataHandle, xla.XlaData.GlobalDataHandle.Builder, xla.XlaData.GlobalDataHandleOrBuilder> tiedDataBuilder_;

      /**
       * <code>repeated .xla.GlobalDataHandle tied_data = 1;</code>
       */
      public java.util.List<xla.XlaData.GlobalDataHandle> getTiedDataList() {
        if (tiedDataBuilder_ == null) {
          return java.util.Collections.unmodifiableList(tiedData_);
        } else {
          return tiedDataBuilder_.getMessageList();
        }
      }
      /**
       * <code>repeated .xla.GlobalDataHandle tied_data = 1;</code>
       */
      public int getTiedDataCount() {
        if (tiedDataBuilder_ == null) {
          return tiedData_.size();
        } else {
          return tiedDataBuilder_.getCount();
        }
      }
      /**
       * <code>repeated .xla.GlobalDataHandle tied_data = 1;</code>
       */
      public xla.XlaData.GlobalDataHandle getTiedData(int index) {
        if (tiedDataBuilder_ == null) {
          return tiedData_.get(index);
        } else {
          return tiedDataBuilder_.getMessage(index);
        }
      }
      /**
       * <code>repeated .xla.GlobalDataHandle tied_data = 1;</code>
       */
      public Builder setTiedData(
          int index, xla.XlaData.GlobalDataHandle value) {
        if (tiedDataBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTiedDataIsMutable();
          tiedData_.set(index, value);
          onChanged();
        } else {
          tiedDataBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .xla.GlobalDataHandle tied_data = 1;</code>
       */
      public Builder setTiedData(
          int index, xla.XlaData.GlobalDataHandle.Builder builderForValue) {
        if (tiedDataBuilder_ == null) {
          ensureTiedDataIsMutable();
          tiedData_.set(index, builderForValue.build());
          onChanged();
        } else {
          tiedDataBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .xla.GlobalDataHandle tied_data = 1;</code>
       */
      public Builder addTiedData(xla.XlaData.GlobalDataHandle value) {
        if (tiedDataBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTiedDataIsMutable();
          tiedData_.add(value);
          onChanged();
        } else {
          tiedDataBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <code>repeated .xla.GlobalDataHandle tied_data = 1;</code>
       */
      public Builder addTiedData(
          int index, xla.XlaData.GlobalDataHandle value) {
        if (tiedDataBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTiedDataIsMutable();
          tiedData_.add(index, value);
          onChanged();
        } else {
          tiedDataBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <code>repeated .xla.GlobalDataHandle tied_data = 1;</code>
       */
      public Builder addTiedData(
          xla.XlaData.GlobalDataHandle.Builder builderForValue) {
        if (tiedDataBuilder_ == null) {
          ensureTiedDataIsMutable();
          tiedData_.add(builderForValue.build());
          onChanged();
        } else {
          tiedDataBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .xla.GlobalDataHandle tied_data = 1;</code>
       */
      public Builder addTiedData(
          int index, xla.XlaData.GlobalDataHandle.Builder builderForValue) {
        if (tiedDataBuilder_ == null) {
          ensureTiedDataIsMutable();
          tiedData_.add(index, builderForValue.build());
          onChanged();
        } else {
          tiedDataBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <code>repeated .xla.GlobalDataHandle tied_data = 1;</code>
       */
      public Builder addAllTiedData(
          java.lang.Iterable<? extends xla.XlaData.GlobalDataHandle> values) {
        if (tiedDataBuilder_ == null) {
          ensureTiedDataIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, tiedData_);
          onChanged();
        } else {
          tiedDataBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <code>repeated .xla.GlobalDataHandle tied_data = 1;</code>
       */
      public Builder clearTiedData() {
        if (tiedDataBuilder_ == null) {
          tiedData_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          tiedDataBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>repeated .xla.GlobalDataHandle tied_data = 1;</code>
       */
      public Builder removeTiedData(int index) {
        if (tiedDataBuilder_ == null) {
          ensureTiedDataIsMutable();
          tiedData_.remove(index);
          onChanged();
        } else {
          tiedDataBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <code>repeated .xla.GlobalDataHandle tied_data = 1;</code>
       */
      public xla.XlaData.GlobalDataHandle.Builder getTiedDataBuilder(
          int index) {
        return getTiedDataFieldBuilder().getBuilder(index);
      }
      /**
       * <code>repeated .xla.GlobalDataHandle tied_data = 1;</code>
       */
      public xla.XlaData.GlobalDataHandleOrBuilder getTiedDataOrBuilder(
          int index) {
        if (tiedDataBuilder_ == null) {
          return tiedData_.get(index);  } else {
          return tiedDataBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <code>repeated .xla.GlobalDataHandle tied_data = 1;</code>
       */
      public java.util.List<? extends xla.XlaData.GlobalDataHandleOrBuilder> 
           getTiedDataOrBuilderList() {
        if (tiedDataBuilder_ != null) {
          return tiedDataBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(tiedData_);
        }
      }
      /**
       * <code>repeated .xla.GlobalDataHandle tied_data = 1;</code>
       */
      public xla.XlaData.GlobalDataHandle.Builder addTiedDataBuilder() {
        return getTiedDataFieldBuilder().addBuilder(
            xla.XlaData.GlobalDataHandle.getDefaultInstance());
      }
      /**
       * <code>repeated .xla.GlobalDataHandle tied_data = 1;</code>
       */
      public xla.XlaData.GlobalDataHandle.Builder addTiedDataBuilder(
          int index) {
        return getTiedDataFieldBuilder().addBuilder(
            index, xla.XlaData.GlobalDataHandle.getDefaultInstance());
      }
      /**
       * <code>repeated .xla.GlobalDataHandle tied_data = 1;</code>
       */
      public java.util.List<xla.XlaData.GlobalDataHandle.Builder> 
           getTiedDataBuilderList() {
        return getTiedDataFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          xla.XlaData.GlobalDataHandle, xla.XlaData.GlobalDataHandle.Builder, xla.XlaData.GlobalDataHandleOrBuilder> 
          getTiedDataFieldBuilder() {
        if (tiedDataBuilder_ == null) {
          tiedDataBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              xla.XlaData.GlobalDataHandle, xla.XlaData.GlobalDataHandle.Builder, xla.XlaData.GlobalDataHandleOrBuilder>(
                  tiedData_,
                  ((bitField0_ & 0x00000001) == 0x00000001),
                  getParentForChildren(),
                  isClean());
          tiedData_ = null;
        }
        return tiedDataBuilder_;
      }
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return this;
      }

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


      // @@protoc_insertion_point(builder_scope:xla.UnpackResponse)
    }

    // @@protoc_insertion_point(class_scope:xla.UnpackResponse)
    private static final xla.Xla.UnpackResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new xla.Xla.UnpackResponse();
    }

    public static xla.Xla.UnpackResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    public xla.Xla.UnpackResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_xla_HloReducePrecisionOptions_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_xla_HloReducePrecisionOptions_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_xla_DebugOptions_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_xla_DebugOptions_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_xla_DebugOptions_XlaBackendExtraOptionsEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_xla_DebugOptions_XlaBackendExtraOptionsEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_xla_ExecutionOptions_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_xla_ExecutionOptions_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_xla_SnapshotComputationRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_xla_SnapshotComputationRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_xla_SnapshotComputationResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_xla_SnapshotComputationResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_xla_LoadComputationSnapshotRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_xla_LoadComputationSnapshotRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_xla_LoadComputationSnapshotResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_xla_LoadComputationSnapshotResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_xla_GetDeviceHandlesRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_xla_GetDeviceHandlesRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_xla_GetDeviceHandlesResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_xla_GetDeviceHandlesResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_xla_TransferToClientRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_xla_TransferToClientRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_xla_TransferToClientResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_xla_TransferToClientResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_xla_TransferToServerRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_xla_TransferToServerRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_xla_TransferToServerResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_xla_TransferToServerResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_xla_TransferToInfeedRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_xla_TransferToInfeedRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_xla_TransferToInfeedResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_xla_TransferToInfeedResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_xla_TransferFromOutfeedRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_xla_TransferFromOutfeedRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_xla_TransferFromOutfeedResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_xla_TransferFromOutfeedResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_xla_ResetDeviceRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_xla_ResetDeviceRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_xla_ResetDeviceResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_xla_ResetDeviceResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_xla_ComputationStatsRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_xla_ComputationStatsRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_xla_ComputationGraphStatsRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_xla_ComputationGraphStatsRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_xla_ComputationStatsResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_xla_ComputationStatsResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_xla_ComputationRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_xla_ComputationRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_xla_ComputationResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_xla_ComputationResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_xla_CreateChannelHandleRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_xla_CreateChannelHandleRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_xla_CreateChannelHandleResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_xla_CreateChannelHandleResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_xla_UnregisterRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_xla_UnregisterRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_xla_UnregisterResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_xla_UnregisterResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_xla_SetReturnValueRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_xla_SetReturnValueRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_xla_SetReturnValueResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_xla_SetReturnValueResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_xla_ExecuteRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_xla_ExecuteRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_xla_ExecuteGraphRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_xla_ExecuteGraphRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_xla_ExecuteParallelRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_xla_ExecuteParallelRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_xla_ExecuteGraphParallelRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_xla_ExecuteGraphParallelRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_xla_ExecuteResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_xla_ExecuteResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_xla_ExecuteParallelResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_xla_ExecuteParallelResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_xla_ExecuteAsyncRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_xla_ExecuteAsyncRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_xla_ExecuteAsyncResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_xla_ExecuteAsyncResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_xla_WaitForExecutionRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_xla_WaitForExecutionRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_xla_WaitForExecutionResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_xla_WaitForExecutionResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_xla_IsConstantRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_xla_IsConstantRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_xla_IsConstantResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_xla_IsConstantResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_xla_ComputeConstantRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_xla_ComputeConstantRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_xla_ComputeConstantResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_xla_ComputeConstantResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_xla_DeconstructTupleRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_xla_DeconstructTupleRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_xla_DeconstructTupleResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_xla_DeconstructTupleResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_xla_LoadDataRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_xla_LoadDataRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_xla_LoadDataResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_xla_LoadDataResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_xla_SpecializeRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_xla_SpecializeRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_xla_SpecializeResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_xla_SpecializeResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_xla_GetShapeRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_xla_GetShapeRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_xla_GetShapeResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_xla_GetShapeResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_xla_GetComputationShapeRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_xla_GetComputationShapeRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_xla_GetComputationShapeResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_xla_GetComputationShapeResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_xla_UnpackRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_xla_UnpackRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_xla_UnpackResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_xla_UnpackResponse_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!tensorflow/compiler/xla/xla.proto\022\003xla" +
      "\032&tensorflow/compiler/xla/xla_data.proto" +
      "\032)tensorflow/compiler/xla/service/hlo.pr" +
      "oto\032-tensorflow/compiler/xla/service/ses" +
      "sion.proto\"\304\002\n\031HloReducePrecisionOptions" +
      "\0229\n\010location\030\001 \001(\0162\'.xla.HloReducePrecis" +
      "ionOptions.Location\022\025\n\rexponent_bits\030\002 \001" +
      "(\r\022\025\n\rmantissa_bits\030\003 \001(\r\022\031\n\021opcodes_to_" +
      "suffix\030\004 \003(\r\022#\n\033opname_substrings_to_suf" +
      "fix\030\005 \003(\t\"~\n\010Location\022\r\n\tOP_INPUTS\020\000\022\016\n\n",
      "OP_OUTPUTS\020\001\022\026\n\022UNFUSED_OP_OUTPUTS\020\002\022\034\n\030" +
      "FUSION_INPUTS_BY_CONTENT\020\003\022\035\n\031FUSION_OUT" +
      "PUTS_BY_CONTENT\020\004\"\325\n\n\014DebugOptions\022\036\n\026xl" +
      "a_generate_hlo_graph\030\001 \001(\t\022\037\n\027xla_hlo_gr" +
      "aph_addresses\030\002 \001(\010\022\032\n\022xla_hlo_graph_pat" +
      "h\030\004 \001(\t\022 \n\030xla_hlo_dump_as_graphdef\030\005 \001(" +
      "\010\022\030\n\020xla_log_hlo_text\030\006 \001(\t\022 \n\030xla_gener" +
      "ate_hlo_text_to\030\007 \001(\t\022\'\n\037xla_dump_optimi" +
      "zed_hlo_proto_to\030\010 \001(\t\022\027\n\017xla_hlo_profil" +
      "e\030\t \001(\010\022 \n\030xla_dump_computations_to\030\n \001(",
      "\t\022\036\n\026xla_dump_executions_to\030\013 \001(\t\022\036\n\026xla" +
      "_disable_hlo_passes\030\036 \003(\t\022&\n\036xla_backend" +
      "_optimization_level\030\037 \001(\005\022\034\n\024xla_enable_" +
      "fast_math\030  \001(\010\022\"\n\032xla_embed_ir_in_execu" +
      "table\030! \001(\010\022\026\n\016xla_dump_ir_to\030\" \001(\t\022,\n$x" +
      "la_eliminate_hlo_implicit_broadcast\030# \001(" +
      "\010\022\"\n\032xla_cpu_multi_thread_eigen\030< \001(\010\022\035\n" +
      "\025xla_gpu_cuda_data_dir\030= \001(\t\022\023\n\013xla_gpu_" +
      "ftz\030> \001(\010\022\'\n\037xla_gpu_disable_multi_strea" +
      "ming\030? \001(\010\022,\n$xla_llvm_enable_alias_scop",
      "e_metadata\030F \001(\010\022(\n xla_llvm_enable_noal" +
      "ias_metadata\030G \001(\010\022/\n\'xla_llvm_enable_in" +
      "variant_load_metadata\030H \001(\010\022)\n!xla_llvm_" +
      "disable_expensive_passes\030I \001(\010\022D\n\034hlo_re" +
      "duce_precision_options\030P \003(\0132\036.xla.HloRe" +
      "ducePrecisionOptions\022#\n\033xla_test_all_out" +
      "put_layouts\030Z \001(\010\022\"\n\032xla_test_all_input_" +
      "layouts\030[ \001(\010\022$\n\034xla_hlo_graph_sharding_" +
      "color\030\\ \001(\010\022%\n\035xla_hlo_tfgraph_device_sc" +
      "opes\030] \001(\010\022#\n\033xla_gpu_use_cudnn_batchnor",
      "m\030^ \001(\010\022)\n!xla_dump_unoptimized_hlo_prot" +
      "o_to\030_ \001(\t\022&\n\036xla_dump_per_pass_hlo_prot" +
      "o_to\030` \001(\t\022\033\n\023xla_cpu_use_mkl_dnn\030a \001(\010\022" +
      "Q\n\031xla_backend_extra_options\030\364\003 \003(\0132-.xl" +
      "a.DebugOptions.XlaBackendExtraOptionsEnt" +
      "ry\032=\n\033XlaBackendExtraOptionsEntry\022\013\n\003key" +
      "\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001\"\243\001\n\020ExecutionO" +
      "ptions\022,\n\030shape_with_output_layout\030\002 \001(\013" +
      "2\n.xla.Shape\022\014\n\004seed\030\003 \001(\004\022(\n\rdebug_opti" +
      "ons\030\004 \001(\0132\021.xla.DebugOptions\022)\n\016device_h",
      "andles\030\005 \003(\0132\021.xla.DeviceHandle\"I\n\032Snaps" +
      "hotComputationRequest\022+\n\013computation\030\001 \001" +
      "(\0132\026.xla.ComputationHandle\"A\n\033SnapshotCo" +
      "mputationResponse\022\"\n\006module\030\001 \001(\0132\022.xla." +
      "SessionModule\"D\n\036LoadComputationSnapshot" +
      "Request\022\"\n\006module\030\001 \001(\0132\022.xla.SessionMod" +
      "ule\"N\n\037LoadComputationSnapshotResponse\022+" +
      "\n\013computation\030\001 \001(\0132\026.xla.ComputationHan" +
      "dle\"/\n\027GetDeviceHandlesRequest\022\024\n\014device" +
      "_count\030\001 \001(\003\"E\n\030GetDeviceHandlesResponse",
      "\022)\n\016device_handles\030\001 \003(\0132\021.xla.DeviceHan" +
      "dle\"e\n\027TransferToClientRequest\022#\n\004data\030\001" +
      " \001(\0132\025.xla.GlobalDataHandle\022%\n\021shape_wit" +
      "h_layout\030\002 \001(\0132\n.xla.Shape\">\n\030TransferTo" +
      "ClientResponse\022\"\n\007literal\030\001 \001(\0132\021.xla.Li" +
      "teralProto\"g\n\027TransferToServerRequest\022\"\n" +
      "\007literal\030\001 \001(\0132\021.xla.LiteralProto\022(\n\rdev" +
      "ice_handle\030\002 \001(\0132\021.xla.DeviceHandle\"?\n\030T" +
      "ransferToServerResponse\022#\n\004data\030\001 \001(\0132\025." +
      "xla.GlobalDataHandle\"{\n\027TransferToInfeed",
      "Request\022\"\n\007literal\030\001 \001(\0132\021.xla.LiteralPr" +
      "oto\022\022\n\nreplica_id\030\002 \001(\003\022(\n\rdevice_handle" +
      "\030\003 \001(\0132\021.xla.DeviceHandle\"\032\n\030TransferToI" +
      "nfeedResponse\"\201\001\n\032TransferFromOutfeedReq" +
      "uest\022%\n\021shape_with_layout\030\001 \001(\0132\n.xla.Sh" +
      "ape\022\022\n\nreplica_id\030\002 \001(\003\022(\n\rdevice_handle" +
      "\030\003 \001(\0132\021.xla.DeviceHandle\"A\n\033TransferFro" +
      "mOutfeedResponse\022\"\n\007literal\030\001 \001(\0132\021.xla." +
      "LiteralProto\">\n\022ResetDeviceRequest\022(\n\rde" +
      "vice_handle\030\001 \001(\0132\021.xla.DeviceHandle\"\025\n\023",
      "ResetDeviceResponse\"p\n\027ComputationStatsR" +
      "equest\022+\n\013computation\030\001 \001(\0132\026.xla.Comput" +
      "ationHandle\022(\n\rdebug_options\030\002 \001(\0132\021.xla" +
      ".DebugOptions\"r\n\034ComputationGraphStatsRe" +
      "quest\022(\n\013computation\030\001 \001(\0132\023.xla.HloModu" +
      "leProto\022(\n\rdebug_options\030\002 \001(\0132\021.xla.Deb" +
      "ugOptions\"@\n\030ComputationStatsResponse\022$\n" +
      "\005stats\030\001 \001(\0132\025.xla.ComputationStats\"\"\n\022C" +
      "omputationRequest\022\014\n\004name\030\001 \001(\t\"B\n\023Compu" +
      "tationResponse\022+\n\013computation\030\001 \001(\0132\026.xl",
      "a.ComputationHandle\"\034\n\032CreateChannelHand" +
      "leRequest\"B\n\033CreateChannelHandleResponse" +
      "\022#\n\007channel\030\001 \001(\0132\022.xla.ChannelHandle\"8\n" +
      "\021UnregisterRequest\022#\n\004data\030\001 \001(\0132\025.xla.G" +
      "lobalDataHandle\"\024\n\022UnregisterResponse\"q\n" +
      "\025SetReturnValueRequest\022+\n\013computation\030\001 " +
      "\001(\0132\026.xla.ComputationHandle\022+\n\007operand\030\002" +
      " \001(\0132\032.xla.ComputationDataHandle\"\030\n\026SetR" +
      "eturnValueResponse\"\245\001\n\016ExecuteRequest\022+\n" +
      "\013computation\030\001 \001(\0132\026.xla.ComputationHand",
      "le\022(\n\targuments\030\002 \003(\0132\025.xla.GlobalDataHa" +
      "ndle\0220\n\021execution_options\030\005 \001(\0132\025.xla.Ex" +
      "ecutionOptionsJ\004\010\003\020\004J\004\010\004\020\005\"\233\001\n\023ExecuteGr" +
      "aphRequest\022(\n\013computation\030\001 \001(\0132\023.xla.Hl" +
      "oModuleProto\022(\n\targuments\030\002 \003(\0132\025.xla.Gl" +
      "obalDataHandle\0220\n\021execution_options\030\003 \001(" +
      "\0132\025.xla.ExecutionOptions\"?\n\026ExecuteParal" +
      "lelRequest\022%\n\010requests\030\001 \003(\0132\023.xla.Execu" +
      "teRequest\"I\n\033ExecuteGraphParallelRequest" +
      "\022*\n\010requests\030\001 \003(\0132\030.xla.ExecuteGraphReq",
      "uest\"`\n\017ExecuteResponse\022%\n\006output\030\001 \001(\0132" +
      "\025.xla.GlobalDataHandle\022&\n\007profile\030\002 \001(\0132" +
      "\025.xla.ExecutionProfile\"B\n\027ExecuteParalle" +
      "lResponse\022\'\n\tresponses\030\001 \003(\0132\024.xla.Execu" +
      "teResponse\"\252\001\n\023ExecuteAsyncRequest\022+\n\013co" +
      "mputation\030\001 \001(\0132\026.xla.ComputationHandle\022" +
      "(\n\targuments\030\002 \003(\0132\025.xla.GlobalDataHandl" +
      "e\0220\n\021execution_options\030\006 \001(\0132\025.xla.Execu" +
      "tionOptionsJ\004\010\003\020\004J\004\010\004\020\005\"?\n\024ExecuteAsyncR" +
      "esponse\022\'\n\texecution\030\001 \001(\0132\024.xla.Executi",
      "onHandle\"B\n\027WaitForExecutionRequest\022\'\n\te" +
      "xecution\030\001 \001(\0132\024.xla.ExecutionHandle\"i\n\030" +
      "WaitForExecutionResponse\022%\n\006output\030\001 \001(\013" +
      "2\025.xla.GlobalDataHandle\022&\n\007profile\030\002 \001(\013" +
      "2\025.xla.ExecutionProfile\"\205\001\n\021IsConstantRe" +
      "quest\022+\n\013computation\030\001 \001(\0132\026.xla.Computa" +
      "tionHandle\022+\n\007operand\030\002 \001(\0132\032.xla.Comput" +
      "ationDataHandle\022\026\n\016num_parameters\030\003 \001(\003\"" +
      ")\n\022IsConstantResponse\022\023\n\013is_constant\030\001 \001" +
      "(\010\"\275\001\n\026ComputeConstantRequest\022+\n\013computa",
      "tion\030\001 \001(\0132\026.xla.ComputationHandle\022+\n\007op" +
      "erand\030\002 \001(\0132\032.xla.ComputationDataHandle\022" +
      "\"\n\routput_layout\030\003 \001(\0132\013.xla.Layout\022%\n\np" +
      "arameters\030\004 \003(\0132\021.xla.LiteralProto\"=\n\027Co" +
      "mputeConstantResponse\022\"\n\007literal\030\001 \001(\0132\021" +
      ".xla.LiteralProto\"F\n\027DeconstructTupleReq" +
      "uest\022+\n\014tuple_handle\030\002 \001(\0132\025.xla.GlobalD" +
      "ataHandle\"J\n\030DeconstructTupleResponse\022.\n" +
      "\017element_handles\030\001 \003(\0132\025.xla.GlobalDataH" +
      "andle\"\226\001\n\017LoadDataRequest\022\034\n\024columnio_ta",
      "blet_path\030\001 \001(\t\022\026\n\016columnio_field\030\002 \001(\t\022" +
      "!\n\relement_shape\030\003 \001(\0132\n.xla.Shape\022\016\n\006of" +
      "fset\030\004 \001(\003\022\r\n\005limit\030\005 \001(\003\022\013\n\003zip\030\006 \001(\010\"\231" +
      "\001\n\020LoadDataResponse\022#\n\004data\030\001 \001(\0132\025.xla." +
      "GlobalDataHandle\022\036\n\ndata_shape\030\002 \001(\0132\n.x" +
      "la.Shape\022\026\n\016available_rows\030\003 \001(\003\022\023\n\013rows" +
      "_loaded\030\004 \001(\003\022\023\n\013nanoseconds\030\005 \001(\003\"j\n\021Sp" +
      "ecializeRequest\022+\n\013computation\030\001 \001(\0132\026.x" +
      "la.ComputationHandle\022(\n\targuments\030\002 \003(\0132" +
      "\025.xla.GlobalDataHandle\"\024\n\022SpecializeResp",
      "onse\"6\n\017GetShapeRequest\022#\n\004data\030\001 \001(\0132\025." +
      "xla.GlobalDataHandle\"-\n\020GetShapeResponse" +
      "\022\031\n\005shape\030\001 \001(\0132\n.xla.Shape\"I\n\032GetComput" +
      "ationShapeRequest\022+\n\013computation\030\001 \001(\0132\026" +
      ".xla.ComputationHandle\"G\n\033GetComputation" +
      "ShapeResponse\022(\n\rprogram_shape\030\001 \001(\0132\021.x" +
      "la.ProgramShape\"4\n\rUnpackRequest\022#\n\004data" +
      "\030\001 \001(\0132\025.xla.GlobalDataHandle\":\n\016UnpackR" +
      "esponse\022(\n\ttied_data\030\001 \003(\0132\025.xla.GlobalD" +
      "ataHandleb\006proto3"
    };
    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[] {
          xla.XlaData.getDescriptor(),
          xla.Hlo.getDescriptor(),
          xla.Session.getDescriptor(),
        }, assigner);
    internal_static_xla_HloReducePrecisionOptions_descriptor =
      getDescriptor().getMessageTypes().get(0);
    internal_static_xla_HloReducePrecisionOptions_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_xla_HloReducePrecisionOptions_descriptor,
        new java.lang.String[] { "Location", "ExponentBits", "MantissaBits", "OpcodesToSuffix", "OpnameSubstringsToSuffix", });
    internal_static_xla_DebugOptions_descriptor =
      getDescriptor().getMessageTypes().get(1);
    internal_static_xla_DebugOptions_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_xla_DebugOptions_descriptor,
        new java.lang.String[] { "XlaGenerateHloGraph", "XlaHloGraphAddresses", "XlaHloGraphPath", "XlaHloDumpAsGraphdef", "XlaLogHloText", "XlaGenerateHloTextTo", "XlaDumpOptimizedHloProtoTo", "XlaHloProfile", "XlaDumpComputationsTo", "XlaDumpExecutionsTo", "XlaDisableHloPasses", "XlaBackendOptimizationLevel", "XlaEnableFastMath", "XlaEmbedIrInExecutable", "XlaDumpIrTo", "XlaEliminateHloImplicitBroadcast", "XlaCpuMultiThreadEigen", "XlaGpuCudaDataDir", "XlaGpuFtz", "XlaGpuDisableMultiStreaming", "XlaLlvmEnableAliasScopeMetadata", "XlaLlvmEnableNoaliasMetadata", "XlaLlvmEnableInvariantLoadMetadata", "XlaLlvmDisableExpensivePasses", "HloReducePrecisionOptions", "XlaTestAllOutputLayouts", "XlaTestAllInputLayouts", "XlaHloGraphShardingColor", "XlaHloTfgraphDeviceScopes", "XlaGpuUseCudnnBatchnorm", "XlaDumpUnoptimizedHloProtoTo", "XlaDumpPerPassHloProtoTo", "XlaCpuUseMklDnn", "XlaBackendExtraOptions", });
    internal_static_xla_DebugOptions_XlaBackendExtraOptionsEntry_descriptor =
      internal_static_xla_DebugOptions_descriptor.getNestedTypes().get(0);
    internal_static_xla_DebugOptions_XlaBackendExtraOptionsEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_xla_DebugOptions_XlaBackendExtraOptionsEntry_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_xla_ExecutionOptions_descriptor =
      getDescriptor().getMessageTypes().get(2);
    internal_static_xla_ExecutionOptions_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_xla_ExecutionOptions_descriptor,
        new java.lang.String[] { "ShapeWithOutputLayout", "Seed", "DebugOptions", "DeviceHandles", });
    internal_static_xla_SnapshotComputationRequest_descriptor =
      getDescriptor().getMessageTypes().get(3);
    internal_static_xla_SnapshotComputationRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_xla_SnapshotComputationRequest_descriptor,
        new java.lang.String[] { "Computation", });
    internal_static_xla_SnapshotComputationResponse_descriptor =
      getDescriptor().getMessageTypes().get(4);
    internal_static_xla_SnapshotComputationResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_xla_SnapshotComputationResponse_descriptor,
        new java.lang.String[] { "Module", });
    internal_static_xla_LoadComputationSnapshotRequest_descriptor =
      getDescriptor().getMessageTypes().get(5);
    internal_static_xla_LoadComputationSnapshotRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_xla_LoadComputationSnapshotRequest_descriptor,
        new java.lang.String[] { "Module", });
    internal_static_xla_LoadComputationSnapshotResponse_descriptor =
      getDescriptor().getMessageTypes().get(6);
    internal_static_xla_LoadComputationSnapshotResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_xla_LoadComputationSnapshotResponse_descriptor,
        new java.lang.String[] { "Computation", });
    internal_static_xla_GetDeviceHandlesRequest_descriptor =
      getDescriptor().getMessageTypes().get(7);
    internal_static_xla_GetDeviceHandlesRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_xla_GetDeviceHandlesRequest_descriptor,
        new java.lang.String[] { "DeviceCount", });
    internal_static_xla_GetDeviceHandlesResponse_descriptor =
      getDescriptor().getMessageTypes().get(8);
    internal_static_xla_GetDeviceHandlesResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_xla_GetDeviceHandlesResponse_descriptor,
        new java.lang.String[] { "DeviceHandles", });
    internal_static_xla_TransferToClientRequest_descriptor =
      getDescriptor().getMessageTypes().get(9);
    internal_static_xla_TransferToClientRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_xla_TransferToClientRequest_descriptor,
        new java.lang.String[] { "Data", "ShapeWithLayout", });
    internal_static_xla_TransferToClientResponse_descriptor =
      getDescriptor().getMessageTypes().get(10);
    internal_static_xla_TransferToClientResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_xla_TransferToClientResponse_descriptor,
        new java.lang.String[] { "Literal", });
    internal_static_xla_TransferToServerRequest_descriptor =
      getDescriptor().getMessageTypes().get(11);
    internal_static_xla_TransferToServerRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_xla_TransferToServerRequest_descriptor,
        new java.lang.String[] { "Literal", "DeviceHandle", });
    internal_static_xla_TransferToServerResponse_descriptor =
      getDescriptor().getMessageTypes().get(12);
    internal_static_xla_TransferToServerResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_xla_TransferToServerResponse_descriptor,
        new java.lang.String[] { "Data", });
    internal_static_xla_TransferToInfeedRequest_descriptor =
      getDescriptor().getMessageTypes().get(13);
    internal_static_xla_TransferToInfeedRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_xla_TransferToInfeedRequest_descriptor,
        new java.lang.String[] { "Literal", "ReplicaId", "DeviceHandle", });
    internal_static_xla_TransferToInfeedResponse_descriptor =
      getDescriptor().getMessageTypes().get(14);
    internal_static_xla_TransferToInfeedResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_xla_TransferToInfeedResponse_descriptor,
        new java.lang.String[] { });
    internal_static_xla_TransferFromOutfeedRequest_descriptor =
      getDescriptor().getMessageTypes().get(15);
    internal_static_xla_TransferFromOutfeedRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_xla_TransferFromOutfeedRequest_descriptor,
        new java.lang.String[] { "ShapeWithLayout", "ReplicaId", "DeviceHandle", });
    internal_static_xla_TransferFromOutfeedResponse_descriptor =
      getDescriptor().getMessageTypes().get(16);
    internal_static_xla_TransferFromOutfeedResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_xla_TransferFromOutfeedResponse_descriptor,
        new java.lang.String[] { "Literal", });
    internal_static_xla_ResetDeviceRequest_descriptor =
      getDescriptor().getMessageTypes().get(17);
    internal_static_xla_ResetDeviceRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_xla_ResetDeviceRequest_descriptor,
        new java.lang.String[] { "DeviceHandle", });
    internal_static_xla_ResetDeviceResponse_descriptor =
      getDescriptor().getMessageTypes().get(18);
    internal_static_xla_ResetDeviceResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_xla_ResetDeviceResponse_descriptor,
        new java.lang.String[] { });
    internal_static_xla_ComputationStatsRequest_descriptor =
      getDescriptor().getMessageTypes().get(19);
    internal_static_xla_ComputationStatsRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_xla_ComputationStatsRequest_descriptor,
        new java.lang.String[] { "Computation", "DebugOptions", });
    internal_static_xla_ComputationGraphStatsRequest_descriptor =
      getDescriptor().getMessageTypes().get(20);
    internal_static_xla_ComputationGraphStatsRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_xla_ComputationGraphStatsRequest_descriptor,
        new java.lang.String[] { "Computation", "DebugOptions", });
    internal_static_xla_ComputationStatsResponse_descriptor =
      getDescriptor().getMessageTypes().get(21);
    internal_static_xla_ComputationStatsResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_xla_ComputationStatsResponse_descriptor,
        new java.lang.String[] { "Stats", });
    internal_static_xla_ComputationRequest_descriptor =
      getDescriptor().getMessageTypes().get(22);
    internal_static_xla_ComputationRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_xla_ComputationRequest_descriptor,
        new java.lang.String[] { "Name", });
    internal_static_xla_ComputationResponse_descriptor =
      getDescriptor().getMessageTypes().get(23);
    internal_static_xla_ComputationResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_xla_ComputationResponse_descriptor,
        new java.lang.String[] { "Computation", });
    internal_static_xla_CreateChannelHandleRequest_descriptor =
      getDescriptor().getMessageTypes().get(24);
    internal_static_xla_CreateChannelHandleRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_xla_CreateChannelHandleRequest_descriptor,
        new java.lang.String[] { });
    internal_static_xla_CreateChannelHandleResponse_descriptor =
      getDescriptor().getMessageTypes().get(25);
    internal_static_xla_CreateChannelHandleResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_xla_CreateChannelHandleResponse_descriptor,
        new java.lang.String[] { "Channel", });
    internal_static_xla_UnregisterRequest_descriptor =
      getDescriptor().getMessageTypes().get(26);
    internal_static_xla_UnregisterRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_xla_UnregisterRequest_descriptor,
        new java.lang.String[] { "Data", });
    internal_static_xla_UnregisterResponse_descriptor =
      getDescriptor().getMessageTypes().get(27);
    internal_static_xla_UnregisterResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_xla_UnregisterResponse_descriptor,
        new java.lang.String[] { });
    internal_static_xla_SetReturnValueRequest_descriptor =
      getDescriptor().getMessageTypes().get(28);
    internal_static_xla_SetReturnValueRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_xla_SetReturnValueRequest_descriptor,
        new java.lang.String[] { "Computation", "Operand", });
    internal_static_xla_SetReturnValueResponse_descriptor =
      getDescriptor().getMessageTypes().get(29);
    internal_static_xla_SetReturnValueResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_xla_SetReturnValueResponse_descriptor,
        new java.lang.String[] { });
    internal_static_xla_ExecuteRequest_descriptor =
      getDescriptor().getMessageTypes().get(30);
    internal_static_xla_ExecuteRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_xla_ExecuteRequest_descriptor,
        new java.lang.String[] { "Computation", "Arguments", "ExecutionOptions", });
    internal_static_xla_ExecuteGraphRequest_descriptor =
      getDescriptor().getMessageTypes().get(31);
    internal_static_xla_ExecuteGraphRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_xla_ExecuteGraphRequest_descriptor,
        new java.lang.String[] { "Computation", "Arguments", "ExecutionOptions", });
    internal_static_xla_ExecuteParallelRequest_descriptor =
      getDescriptor().getMessageTypes().get(32);
    internal_static_xla_ExecuteParallelRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_xla_ExecuteParallelRequest_descriptor,
        new java.lang.String[] { "Requests", });
    internal_static_xla_ExecuteGraphParallelRequest_descriptor =
      getDescriptor().getMessageTypes().get(33);
    internal_static_xla_ExecuteGraphParallelRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_xla_ExecuteGraphParallelRequest_descriptor,
        new java.lang.String[] { "Requests", });
    internal_static_xla_ExecuteResponse_descriptor =
      getDescriptor().getMessageTypes().get(34);
    internal_static_xla_ExecuteResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_xla_ExecuteResponse_descriptor,
        new java.lang.String[] { "Output", "Profile", });
    internal_static_xla_ExecuteParallelResponse_descriptor =
      getDescriptor().getMessageTypes().get(35);
    internal_static_xla_ExecuteParallelResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_xla_ExecuteParallelResponse_descriptor,
        new java.lang.String[] { "Responses", });
    internal_static_xla_ExecuteAsyncRequest_descriptor =
      getDescriptor().getMessageTypes().get(36);
    internal_static_xla_ExecuteAsyncRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_xla_ExecuteAsyncRequest_descriptor,
        new java.lang.String[] { "Computation", "Arguments", "ExecutionOptions", });
    internal_static_xla_ExecuteAsyncResponse_descriptor =
      getDescriptor().getMessageTypes().get(37);
    internal_static_xla_ExecuteAsyncResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_xla_ExecuteAsyncResponse_descriptor,
        new java.lang.String[] { "Execution", });
    internal_static_xla_WaitForExecutionRequest_descriptor =
      getDescriptor().getMessageTypes().get(38);
    internal_static_xla_WaitForExecutionRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_xla_WaitForExecutionRequest_descriptor,
        new java.lang.String[] { "Execution", });
    internal_static_xla_WaitForExecutionResponse_descriptor =
      getDescriptor().getMessageTypes().get(39);
    internal_static_xla_WaitForExecutionResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_xla_WaitForExecutionResponse_descriptor,
        new java.lang.String[] { "Output", "Profile", });
    internal_static_xla_IsConstantRequest_descriptor =
      getDescriptor().getMessageTypes().get(40);
    internal_static_xla_IsConstantRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_xla_IsConstantRequest_descriptor,
        new java.lang.String[] { "Computation", "Operand", "NumParameters", });
    internal_static_xla_IsConstantResponse_descriptor =
      getDescriptor().getMessageTypes().get(41);
    internal_static_xla_IsConstantResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_xla_IsConstantResponse_descriptor,
        new java.lang.String[] { "IsConstant", });
    internal_static_xla_ComputeConstantRequest_descriptor =
      getDescriptor().getMessageTypes().get(42);
    internal_static_xla_ComputeConstantRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_xla_ComputeConstantRequest_descriptor,
        new java.lang.String[] { "Computation", "Operand", "OutputLayout", "Parameters", });
    internal_static_xla_ComputeConstantResponse_descriptor =
      getDescriptor().getMessageTypes().get(43);
    internal_static_xla_ComputeConstantResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_xla_ComputeConstantResponse_descriptor,
        new java.lang.String[] { "Literal", });
    internal_static_xla_DeconstructTupleRequest_descriptor =
      getDescriptor().getMessageTypes().get(44);
    internal_static_xla_DeconstructTupleRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_xla_DeconstructTupleRequest_descriptor,
        new java.lang.String[] { "TupleHandle", });
    internal_static_xla_DeconstructTupleResponse_descriptor =
      getDescriptor().getMessageTypes().get(45);
    internal_static_xla_DeconstructTupleResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_xla_DeconstructTupleResponse_descriptor,
        new java.lang.String[] { "ElementHandles", });
    internal_static_xla_LoadDataRequest_descriptor =
      getDescriptor().getMessageTypes().get(46);
    internal_static_xla_LoadDataRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_xla_LoadDataRequest_descriptor,
        new java.lang.String[] { "ColumnioTabletPath", "ColumnioField", "ElementShape", "Offset", "Limit", "Zip", });
    internal_static_xla_LoadDataResponse_descriptor =
      getDescriptor().getMessageTypes().get(47);
    internal_static_xla_LoadDataResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_xla_LoadDataResponse_descriptor,
        new java.lang.String[] { "Data", "DataShape", "AvailableRows", "RowsLoaded", "Nanoseconds", });
    internal_static_xla_SpecializeRequest_descriptor =
      getDescriptor().getMessageTypes().get(48);
    internal_static_xla_SpecializeRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_xla_SpecializeRequest_descriptor,
        new java.lang.String[] { "Computation", "Arguments", });
    internal_static_xla_SpecializeResponse_descriptor =
      getDescriptor().getMessageTypes().get(49);
    internal_static_xla_SpecializeResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_xla_SpecializeResponse_descriptor,
        new java.lang.String[] { });
    internal_static_xla_GetShapeRequest_descriptor =
      getDescriptor().getMessageTypes().get(50);
    internal_static_xla_GetShapeRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_xla_GetShapeRequest_descriptor,
        new java.lang.String[] { "Data", });
    internal_static_xla_GetShapeResponse_descriptor =
      getDescriptor().getMessageTypes().get(51);
    internal_static_xla_GetShapeResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_xla_GetShapeResponse_descriptor,
        new java.lang.String[] { "Shape", });
    internal_static_xla_GetComputationShapeRequest_descriptor =
      getDescriptor().getMessageTypes().get(52);
    internal_static_xla_GetComputationShapeRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_xla_GetComputationShapeRequest_descriptor,
        new java.lang.String[] { "Computation", });
    internal_static_xla_GetComputationShapeResponse_descriptor =
      getDescriptor().getMessageTypes().get(53);
    internal_static_xla_GetComputationShapeResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_xla_GetComputationShapeResponse_descriptor,
        new java.lang.String[] { "ProgramShape", });
    internal_static_xla_UnpackRequest_descriptor =
      getDescriptor().getMessageTypes().get(54);
    internal_static_xla_UnpackRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_xla_UnpackRequest_descriptor,
        new java.lang.String[] { "Data", });
    internal_static_xla_UnpackResponse_descriptor =
      getDescriptor().getMessageTypes().get(55);
    internal_static_xla_UnpackResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_xla_UnpackResponse_descriptor,
        new java.lang.String[] { "TiedData", });
    xla.XlaData.getDescriptor();
    xla.Hlo.getDescriptor();
    xla.Session.getDescriptor();
  }

  // @@protoc_insertion_point(outer_class_scope)
}
