// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: google/cloud/bigquery/storage/v1beta1/storage.proto

package com.google.cloud.bigquery.storage.v1beta1;

public final class Storage {
  private Storage() {}

  public static void registerAllExtensions(com.google.protobuf.ExtensionRegistryLite registry) {}

  public static void registerAllExtensions(com.google.protobuf.ExtensionRegistry registry) {
    registerAllExtensions((com.google.protobuf.ExtensionRegistryLite) registry);
  }
  /**
   *
   *
   * <pre>
   * Data format for input or output data.
   * </pre>
   *
   * Protobuf enum {@code google.cloud.bigquery.storage.v1beta1.DataFormat}
   */
  public enum DataFormat implements com.google.protobuf.ProtocolMessageEnum {
    /**
     *
     *
     * <pre>
     * Data format is unspecified.
     * </pre>
     *
     * <code>DATA_FORMAT_UNSPECIFIED = 0;</code>
     */
    DATA_FORMAT_UNSPECIFIED(0),
    /**
     *
     *
     * <pre>
     * Avro is a standard open source row based file format.
     * See https://avro.apache.org/ for more details.
     * </pre>
     *
     * <code>AVRO = 1;</code>
     */
    AVRO(1),
    UNRECOGNIZED(-1),
    ;

    /**
     *
     *
     * <pre>
     * Data format is unspecified.
     * </pre>
     *
     * <code>DATA_FORMAT_UNSPECIFIED = 0;</code>
     */
    public static final int DATA_FORMAT_UNSPECIFIED_VALUE = 0;
    /**
     *
     *
     * <pre>
     * Avro is a standard open source row based file format.
     * See https://avro.apache.org/ for more details.
     * </pre>
     *
     * <code>AVRO = 1;</code>
     */
    public static final int AVRO_VALUE = 1;

    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 DataFormat valueOf(int value) {
      return forNumber(value);
    }

    public static DataFormat forNumber(int value) {
      switch (value) {
        case 0:
          return DATA_FORMAT_UNSPECIFIED;
        case 1:
          return AVRO;
        default:
          return null;
      }
    }

    public static com.google.protobuf.Internal.EnumLiteMap<DataFormat> internalGetValueMap() {
      return internalValueMap;
    }

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

    public final com.google.protobuf.Descriptors.EnumValueDescriptor getValueDescriptor() {
      return getDescriptor().getValues().get(ordinal());
    }

    public final com.google.protobuf.Descriptors.EnumDescriptor getDescriptorForType() {
      return getDescriptor();
    }

    public static final com.google.protobuf.Descriptors.EnumDescriptor getDescriptor() {
      return com.google.cloud.bigquery.storage.v1beta1.Storage.getDescriptor()
          .getEnumTypes()
          .get(0);
    }

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

    public static DataFormat 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 DataFormat(int value) {
      this.value = value;
    }

    // @@protoc_insertion_point(enum_scope:google.cloud.bigquery.storage.v1beta1.DataFormat)
  }

  public interface StreamOrBuilder
      extends
      // @@protoc_insertion_point(interface_extends:google.cloud.bigquery.storage.v1beta1.Stream)
      com.google.protobuf.MessageOrBuilder {

    /**
     *
     *
     * <pre>
     * Name of the stream. In the form
     * `/projects/{project_id}/stream/{stream_id}`
     * </pre>
     *
     * <code>string name = 1;</code>
     */
    java.lang.String getName();
    /**
     *
     *
     * <pre>
     * Name of the stream. In the form
     * `/projects/{project_id}/stream/{stream_id}`
     * </pre>
     *
     * <code>string name = 1;</code>
     */
    com.google.protobuf.ByteString getNameBytes();

    /**
     *
     *
     * <pre>
     * Rows in the stream.
     * </pre>
     *
     * <code>int64 row_count = 2;</code>
     */
    long getRowCount();
  }
  /**
   *
   *
   * <pre>
   * Information about a single data stream within a read session.
   * </pre>
   *
   * Protobuf type {@code google.cloud.bigquery.storage.v1beta1.Stream}
   */
  public static final class Stream extends com.google.protobuf.GeneratedMessageV3
      implements
      // @@protoc_insertion_point(message_implements:google.cloud.bigquery.storage.v1beta1.Stream)
      StreamOrBuilder {
    private static final long serialVersionUID = 0L;
    // Use Stream.newBuilder() to construct.
    private Stream(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }

    private Stream() {
      name_ = "";
      rowCount_ = 0L;
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
      return this.unknownFields;
    }

    private Stream(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10:
              {
                java.lang.String s = input.readStringRequireUtf8();

                name_ = s;
                break;
              }
            case 16:
              {
                rowCount_ = input.readInt64();
                break;
              }
            default:
              {
                if (!parseUnknownFieldProto3(input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }

    public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
      return com.google.cloud.bigquery.storage.v1beta1.Storage
          .internal_static_google_cloud_bigquery_storage_v1beta1_Stream_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.cloud.bigquery.storage.v1beta1.Storage
          .internal_static_google_cloud_bigquery_storage_v1beta1_Stream_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.cloud.bigquery.storage.v1beta1.Storage.Stream.class,
              com.google.cloud.bigquery.storage.v1beta1.Storage.Stream.Builder.class);
    }

    public static final int NAME_FIELD_NUMBER = 1;
    private volatile java.lang.Object name_;
    /**
     *
     *
     * <pre>
     * Name of the stream. In the form
     * `/projects/{project_id}/stream/{stream_id}`
     * </pre>
     *
     * <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;
      }
    }
    /**
     *
     *
     * <pre>
     * Name of the stream. In the form
     * `/projects/{project_id}/stream/{stream_id}`
     * </pre>
     *
     * <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;
      }
    }

    public static final int ROW_COUNT_FIELD_NUMBER = 2;
    private long rowCount_;
    /**
     *
     *
     * <pre>
     * Rows in the stream.
     * </pre>
     *
     * <code>int64 row_count = 2;</code>
     */
    public long getRowCount() {
      return rowCount_;
    }

    private byte memoizedIsInitialized = -1;

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
      if (!getNameBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
      }
      if (rowCount_ != 0L) {
        output.writeInt64(2, rowCount_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (!getNameBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
      }
      if (rowCount_ != 0L) {
        size += com.google.protobuf.CodedOutputStream.computeInt64Size(2, rowCount_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
        return true;
      }
      if (!(obj instanceof com.google.cloud.bigquery.storage.v1beta1.Storage.Stream)) {
        return super.equals(obj);
      }
      com.google.cloud.bigquery.storage.v1beta1.Storage.Stream other =
          (com.google.cloud.bigquery.storage.v1beta1.Storage.Stream) obj;

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

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

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.Stream parseFrom(
        java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.Stream parseFrom(
        java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.Stream parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.Stream parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.Stream parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.Stream parseFrom(
        byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.Stream parseFrom(
        java.io.InputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.Stream parseFrom(
        java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
          PARSER, input, extensionRegistry);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.Stream parseDelimitedFrom(
        java.io.InputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.Stream parseDelimitedFrom(
        java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(
          PARSER, input, extensionRegistry);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.Stream parseFrom(
        com.google.protobuf.CodedInputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.Stream parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
          PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() {
      return newBuilder();
    }

    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }

    public static Builder newBuilder(
        com.google.cloud.bigquery.storage.v1beta1.Storage.Stream prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }

    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     *
     *
     * <pre>
     * Information about a single data stream within a read session.
     * </pre>
     *
     * Protobuf type {@code google.cloud.bigquery.storage.v1beta1.Stream}
     */
    public static final class Builder
        extends com.google.protobuf.GeneratedMessageV3.Builder<Builder>
        implements
        // @@protoc_insertion_point(builder_implements:google.cloud.bigquery.storage.v1beta1.Stream)
        com.google.cloud.bigquery.storage.v1beta1.Storage.StreamOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
        return com.google.cloud.bigquery.storage.v1beta1.Storage
            .internal_static_google_cloud_bigquery_storage_v1beta1_Stream_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.cloud.bigquery.storage.v1beta1.Storage
            .internal_static_google_cloud_bigquery_storage_v1beta1_Stream_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.cloud.bigquery.storage.v1beta1.Storage.Stream.class,
                com.google.cloud.bigquery.storage.v1beta1.Storage.Stream.Builder.class);
      }

      // Construct using com.google.cloud.bigquery.storage.v1beta1.Storage.Stream.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }

      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {}
      }

      @java.lang.Override
      public Builder clear() {
        super.clear();
        name_ = "";

        rowCount_ = 0L;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
        return com.google.cloud.bigquery.storage.v1beta1.Storage
            .internal_static_google_cloud_bigquery_storage_v1beta1_Stream_descriptor;
      }

      @java.lang.Override
      public com.google.cloud.bigquery.storage.v1beta1.Storage.Stream getDefaultInstanceForType() {
        return com.google.cloud.bigquery.storage.v1beta1.Storage.Stream.getDefaultInstance();
      }

      @java.lang.Override
      public com.google.cloud.bigquery.storage.v1beta1.Storage.Stream build() {
        com.google.cloud.bigquery.storage.v1beta1.Storage.Stream result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.google.cloud.bigquery.storage.v1beta1.Storage.Stream buildPartial() {
        com.google.cloud.bigquery.storage.v1beta1.Storage.Stream result =
            new com.google.cloud.bigquery.storage.v1beta1.Storage.Stream(this);
        result.name_ = name_;
        result.rowCount_ = rowCount_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return (Builder) super.clone();
      }

      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }

      @java.lang.Override
      public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }

      @java.lang.Override
      public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }

      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index,
          java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }

      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.cloud.bigquery.storage.v1beta1.Storage.Stream) {
          return mergeFrom((com.google.cloud.bigquery.storage.v1beta1.Storage.Stream) other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.google.cloud.bigquery.storage.v1beta1.Storage.Stream other) {
        if (other == com.google.cloud.bigquery.storage.v1beta1.Storage.Stream.getDefaultInstance())
          return this;
        if (!other.getName().isEmpty()) {
          name_ = other.name_;
          onChanged();
        }
        if (other.getRowCount() != 0L) {
          setRowCount(other.getRowCount());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

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

      private java.lang.Object name_ = "";
      /**
       *
       *
       * <pre>
       * Name of the stream. In the form
       * `/projects/{project_id}/stream/{stream_id}`
       * </pre>
       *
       * <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;
        }
      }
      /**
       *
       *
       * <pre>
       * Name of the stream. In the form
       * `/projects/{project_id}/stream/{stream_id}`
       * </pre>
       *
       * <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;
        }
      }
      /**
       *
       *
       * <pre>
       * Name of the stream. In the form
       * `/projects/{project_id}/stream/{stream_id}`
       * </pre>
       *
       * <code>string name = 1;</code>
       */
      public Builder setName(java.lang.String value) {
        if (value == null) {
          throw new NullPointerException();
        }

        name_ = value;
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Name of the stream. In the form
       * `/projects/{project_id}/stream/{stream_id}`
       * </pre>
       *
       * <code>string name = 1;</code>
       */
      public Builder clearName() {

        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Name of the stream. In the form
       * `/projects/{project_id}/stream/{stream_id}`
       * </pre>
       *
       * <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;
      }

      private long rowCount_;
      /**
       *
       *
       * <pre>
       * Rows in the stream.
       * </pre>
       *
       * <code>int64 row_count = 2;</code>
       */
      public long getRowCount() {
        return rowCount_;
      }
      /**
       *
       *
       * <pre>
       * Rows in the stream.
       * </pre>
       *
       * <code>int64 row_count = 2;</code>
       */
      public Builder setRowCount(long value) {

        rowCount_ = value;
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Rows in the stream.
       * </pre>
       *
       * <code>int64 row_count = 2;</code>
       */
      public Builder clearRowCount() {

        rowCount_ = 0L;
        onChanged();
        return this;
      }

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

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

      // @@protoc_insertion_point(builder_scope:google.cloud.bigquery.storage.v1beta1.Stream)
    }

    // @@protoc_insertion_point(class_scope:google.cloud.bigquery.storage.v1beta1.Stream)
    private static final com.google.cloud.bigquery.storage.v1beta1.Storage.Stream DEFAULT_INSTANCE;

    static {
      DEFAULT_INSTANCE = new com.google.cloud.bigquery.storage.v1beta1.Storage.Stream();
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.Stream getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.google.cloud.bigquery.storage.v1beta1.Storage.Stream getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }
  }

  public interface StreamPositionOrBuilder
      extends
      // @@protoc_insertion_point(interface_extends:google.cloud.bigquery.storage.v1beta1.StreamPosition)
      com.google.protobuf.MessageOrBuilder {

    /**
     *
     *
     * <pre>
     * Identifier for a given Stream.
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.Stream stream = 1;</code>
     */
    boolean hasStream();
    /**
     *
     *
     * <pre>
     * Identifier for a given Stream.
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.Stream stream = 1;</code>
     */
    com.google.cloud.bigquery.storage.v1beta1.Storage.Stream getStream();
    /**
     *
     *
     * <pre>
     * Identifier for a given Stream.
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.Stream stream = 1;</code>
     */
    com.google.cloud.bigquery.storage.v1beta1.Storage.StreamOrBuilder getStreamOrBuilder();

    /**
     *
     *
     * <pre>
     * Position in the stream.
     * </pre>
     *
     * <code>int64 offset = 2;</code>
     */
    long getOffset();
  }
  /**
   *
   *
   * <pre>
   * Expresses a point within a given stream using an offset position.
   * </pre>
   *
   * Protobuf type {@code google.cloud.bigquery.storage.v1beta1.StreamPosition}
   */
  public static final class StreamPosition extends com.google.protobuf.GeneratedMessageV3
      implements
      // @@protoc_insertion_point(message_implements:google.cloud.bigquery.storage.v1beta1.StreamPosition)
      StreamPositionOrBuilder {
    private static final long serialVersionUID = 0L;
    // Use StreamPosition.newBuilder() to construct.
    private StreamPosition(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }

    private StreamPosition() {
      offset_ = 0L;
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
      return this.unknownFields;
    }

    private StreamPosition(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10:
              {
                com.google.cloud.bigquery.storage.v1beta1.Storage.Stream.Builder subBuilder = null;
                if (stream_ != null) {
                  subBuilder = stream_.toBuilder();
                }
                stream_ =
                    input.readMessage(
                        com.google.cloud.bigquery.storage.v1beta1.Storage.Stream.parser(),
                        extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(stream_);
                  stream_ = subBuilder.buildPartial();
                }

                break;
              }
            case 16:
              {
                offset_ = input.readInt64();
                break;
              }
            default:
              {
                if (!parseUnknownFieldProto3(input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }

    public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
      return com.google.cloud.bigquery.storage.v1beta1.Storage
          .internal_static_google_cloud_bigquery_storage_v1beta1_StreamPosition_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.cloud.bigquery.storage.v1beta1.Storage
          .internal_static_google_cloud_bigquery_storage_v1beta1_StreamPosition_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.cloud.bigquery.storage.v1beta1.Storage.StreamPosition.class,
              com.google.cloud.bigquery.storage.v1beta1.Storage.StreamPosition.Builder.class);
    }

    public static final int STREAM_FIELD_NUMBER = 1;
    private com.google.cloud.bigquery.storage.v1beta1.Storage.Stream stream_;
    /**
     *
     *
     * <pre>
     * Identifier for a given Stream.
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.Stream stream = 1;</code>
     */
    public boolean hasStream() {
      return stream_ != null;
    }
    /**
     *
     *
     * <pre>
     * Identifier for a given Stream.
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.Stream stream = 1;</code>
     */
    public com.google.cloud.bigquery.storage.v1beta1.Storage.Stream getStream() {
      return stream_ == null
          ? com.google.cloud.bigquery.storage.v1beta1.Storage.Stream.getDefaultInstance()
          : stream_;
    }
    /**
     *
     *
     * <pre>
     * Identifier for a given Stream.
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.Stream stream = 1;</code>
     */
    public com.google.cloud.bigquery.storage.v1beta1.Storage.StreamOrBuilder getStreamOrBuilder() {
      return getStream();
    }

    public static final int OFFSET_FIELD_NUMBER = 2;
    private long offset_;
    /**
     *
     *
     * <pre>
     * Position in the stream.
     * </pre>
     *
     * <code>int64 offset = 2;</code>
     */
    public long getOffset() {
      return offset_;
    }

    private byte memoizedIsInitialized = -1;

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
      if (stream_ != null) {
        output.writeMessage(1, getStream());
      }
      if (offset_ != 0L) {
        output.writeInt64(2, offset_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (stream_ != null) {
        size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getStream());
      }
      if (offset_ != 0L) {
        size += com.google.protobuf.CodedOutputStream.computeInt64Size(2, offset_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
        return true;
      }
      if (!(obj instanceof com.google.cloud.bigquery.storage.v1beta1.Storage.StreamPosition)) {
        return super.equals(obj);
      }
      com.google.cloud.bigquery.storage.v1beta1.Storage.StreamPosition other =
          (com.google.cloud.bigquery.storage.v1beta1.Storage.StreamPosition) obj;

      boolean result = true;
      result = result && (hasStream() == other.hasStream());
      if (hasStream()) {
        result = result && getStream().equals(other.getStream());
      }
      result = result && (getOffset() == other.getOffset());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

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

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.StreamPosition parseFrom(
        java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.StreamPosition parseFrom(
        java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.StreamPosition parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.StreamPosition parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.StreamPosition parseFrom(
        byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.StreamPosition parseFrom(
        byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.StreamPosition parseFrom(
        java.io.InputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.StreamPosition parseFrom(
        java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
          PARSER, input, extensionRegistry);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.StreamPosition
        parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.StreamPosition
        parseDelimitedFrom(
            java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(
          PARSER, input, extensionRegistry);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.StreamPosition parseFrom(
        com.google.protobuf.CodedInputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.StreamPosition parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
          PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() {
      return newBuilder();
    }

    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }

    public static Builder newBuilder(
        com.google.cloud.bigquery.storage.v1beta1.Storage.StreamPosition prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }

    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     *
     *
     * <pre>
     * Expresses a point within a given stream using an offset position.
     * </pre>
     *
     * Protobuf type {@code google.cloud.bigquery.storage.v1beta1.StreamPosition}
     */
    public static final class Builder
        extends com.google.protobuf.GeneratedMessageV3.Builder<Builder>
        implements
        // @@protoc_insertion_point(builder_implements:google.cloud.bigquery.storage.v1beta1.StreamPosition)
        com.google.cloud.bigquery.storage.v1beta1.Storage.StreamPositionOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
        return com.google.cloud.bigquery.storage.v1beta1.Storage
            .internal_static_google_cloud_bigquery_storage_v1beta1_StreamPosition_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.cloud.bigquery.storage.v1beta1.Storage
            .internal_static_google_cloud_bigquery_storage_v1beta1_StreamPosition_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.cloud.bigquery.storage.v1beta1.Storage.StreamPosition.class,
                com.google.cloud.bigquery.storage.v1beta1.Storage.StreamPosition.Builder.class);
      }

      // Construct using
      // com.google.cloud.bigquery.storage.v1beta1.Storage.StreamPosition.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }

      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {}
      }

      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (streamBuilder_ == null) {
          stream_ = null;
        } else {
          stream_ = null;
          streamBuilder_ = null;
        }
        offset_ = 0L;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
        return com.google.cloud.bigquery.storage.v1beta1.Storage
            .internal_static_google_cloud_bigquery_storage_v1beta1_StreamPosition_descriptor;
      }

      @java.lang.Override
      public com.google.cloud.bigquery.storage.v1beta1.Storage.StreamPosition
          getDefaultInstanceForType() {
        return com.google.cloud.bigquery.storage.v1beta1.Storage.StreamPosition
            .getDefaultInstance();
      }

      @java.lang.Override
      public com.google.cloud.bigquery.storage.v1beta1.Storage.StreamPosition build() {
        com.google.cloud.bigquery.storage.v1beta1.Storage.StreamPosition result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.google.cloud.bigquery.storage.v1beta1.Storage.StreamPosition buildPartial() {
        com.google.cloud.bigquery.storage.v1beta1.Storage.StreamPosition result =
            new com.google.cloud.bigquery.storage.v1beta1.Storage.StreamPosition(this);
        if (streamBuilder_ == null) {
          result.stream_ = stream_;
        } else {
          result.stream_ = streamBuilder_.build();
        }
        result.offset_ = offset_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return (Builder) super.clone();
      }

      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }

      @java.lang.Override
      public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }

      @java.lang.Override
      public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }

      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index,
          java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }

      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.cloud.bigquery.storage.v1beta1.Storage.StreamPosition) {
          return mergeFrom(
              (com.google.cloud.bigquery.storage.v1beta1.Storage.StreamPosition) other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(
          com.google.cloud.bigquery.storage.v1beta1.Storage.StreamPosition other) {
        if (other
            == com.google.cloud.bigquery.storage.v1beta1.Storage.StreamPosition
                .getDefaultInstance()) return this;
        if (other.hasStream()) {
          mergeStream(other.getStream());
        }
        if (other.getOffset() != 0L) {
          setOffset(other.getOffset());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

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

      private com.google.cloud.bigquery.storage.v1beta1.Storage.Stream stream_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
              com.google.cloud.bigquery.storage.v1beta1.Storage.Stream,
              com.google.cloud.bigquery.storage.v1beta1.Storage.Stream.Builder,
              com.google.cloud.bigquery.storage.v1beta1.Storage.StreamOrBuilder>
          streamBuilder_;
      /**
       *
       *
       * <pre>
       * Identifier for a given Stream.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.Stream stream = 1;</code>
       */
      public boolean hasStream() {
        return streamBuilder_ != null || stream_ != null;
      }
      /**
       *
       *
       * <pre>
       * Identifier for a given Stream.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.Stream stream = 1;</code>
       */
      public com.google.cloud.bigquery.storage.v1beta1.Storage.Stream getStream() {
        if (streamBuilder_ == null) {
          return stream_ == null
              ? com.google.cloud.bigquery.storage.v1beta1.Storage.Stream.getDefaultInstance()
              : stream_;
        } else {
          return streamBuilder_.getMessage();
        }
      }
      /**
       *
       *
       * <pre>
       * Identifier for a given Stream.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.Stream stream = 1;</code>
       */
      public Builder setStream(com.google.cloud.bigquery.storage.v1beta1.Storage.Stream value) {
        if (streamBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          stream_ = value;
          onChanged();
        } else {
          streamBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       *
       *
       * <pre>
       * Identifier for a given Stream.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.Stream stream = 1;</code>
       */
      public Builder setStream(
          com.google.cloud.bigquery.storage.v1beta1.Storage.Stream.Builder builderForValue) {
        if (streamBuilder_ == null) {
          stream_ = builderForValue.build();
          onChanged();
        } else {
          streamBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       *
       *
       * <pre>
       * Identifier for a given Stream.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.Stream stream = 1;</code>
       */
      public Builder mergeStream(com.google.cloud.bigquery.storage.v1beta1.Storage.Stream value) {
        if (streamBuilder_ == null) {
          if (stream_ != null) {
            stream_ =
                com.google.cloud.bigquery.storage.v1beta1.Storage.Stream.newBuilder(stream_)
                    .mergeFrom(value)
                    .buildPartial();
          } else {
            stream_ = value;
          }
          onChanged();
        } else {
          streamBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       *
       *
       * <pre>
       * Identifier for a given Stream.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.Stream stream = 1;</code>
       */
      public Builder clearStream() {
        if (streamBuilder_ == null) {
          stream_ = null;
          onChanged();
        } else {
          stream_ = null;
          streamBuilder_ = null;
        }

        return this;
      }
      /**
       *
       *
       * <pre>
       * Identifier for a given Stream.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.Stream stream = 1;</code>
       */
      public com.google.cloud.bigquery.storage.v1beta1.Storage.Stream.Builder getStreamBuilder() {

        onChanged();
        return getStreamFieldBuilder().getBuilder();
      }
      /**
       *
       *
       * <pre>
       * Identifier for a given Stream.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.Stream stream = 1;</code>
       */
      public com.google.cloud.bigquery.storage.v1beta1.Storage.StreamOrBuilder
          getStreamOrBuilder() {
        if (streamBuilder_ != null) {
          return streamBuilder_.getMessageOrBuilder();
        } else {
          return stream_ == null
              ? com.google.cloud.bigquery.storage.v1beta1.Storage.Stream.getDefaultInstance()
              : stream_;
        }
      }
      /**
       *
       *
       * <pre>
       * Identifier for a given Stream.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.Stream stream = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
              com.google.cloud.bigquery.storage.v1beta1.Storage.Stream,
              com.google.cloud.bigquery.storage.v1beta1.Storage.Stream.Builder,
              com.google.cloud.bigquery.storage.v1beta1.Storage.StreamOrBuilder>
          getStreamFieldBuilder() {
        if (streamBuilder_ == null) {
          streamBuilder_ =
              new com.google.protobuf.SingleFieldBuilderV3<
                  com.google.cloud.bigquery.storage.v1beta1.Storage.Stream,
                  com.google.cloud.bigquery.storage.v1beta1.Storage.Stream.Builder,
                  com.google.cloud.bigquery.storage.v1beta1.Storage.StreamOrBuilder>(
                  getStream(), getParentForChildren(), isClean());
          stream_ = null;
        }
        return streamBuilder_;
      }

      private long offset_;
      /**
       *
       *
       * <pre>
       * Position in the stream.
       * </pre>
       *
       * <code>int64 offset = 2;</code>
       */
      public long getOffset() {
        return offset_;
      }
      /**
       *
       *
       * <pre>
       * Position in the stream.
       * </pre>
       *
       * <code>int64 offset = 2;</code>
       */
      public Builder setOffset(long value) {

        offset_ = value;
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Position in the stream.
       * </pre>
       *
       * <code>int64 offset = 2;</code>
       */
      public Builder clearOffset() {

        offset_ = 0L;
        onChanged();
        return this;
      }

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

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

      // @@protoc_insertion_point(builder_scope:google.cloud.bigquery.storage.v1beta1.StreamPosition)
    }

    // @@protoc_insertion_point(class_scope:google.cloud.bigquery.storage.v1beta1.StreamPosition)
    private static final com.google.cloud.bigquery.storage.v1beta1.Storage.StreamPosition
        DEFAULT_INSTANCE;

    static {
      DEFAULT_INSTANCE = new com.google.cloud.bigquery.storage.v1beta1.Storage.StreamPosition();
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.StreamPosition
        getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.google.cloud.bigquery.storage.v1beta1.Storage.StreamPosition
        getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }
  }

  public interface ReadSessionOrBuilder
      extends
      // @@protoc_insertion_point(interface_extends:google.cloud.bigquery.storage.v1beta1.ReadSession)
      com.google.protobuf.MessageOrBuilder {

    /**
     *
     *
     * <pre>
     * Unique identifier for the session. In the form
     * `projects/{project_id}/sessions/{session_id}`
     * </pre>
     *
     * <code>string name = 1;</code>
     */
    java.lang.String getName();
    /**
     *
     *
     * <pre>
     * Unique identifier for the session. In the form
     * `projects/{project_id}/sessions/{session_id}`
     * </pre>
     *
     * <code>string name = 1;</code>
     */
    com.google.protobuf.ByteString getNameBytes();

    /**
     *
     *
     * <pre>
     * Time at which the session becomes invalid. After this time, subsequent
     * requests to read this Session will return errors.
     * </pre>
     *
     * <code>.google.protobuf.Timestamp expire_time = 2;</code>
     */
    boolean hasExpireTime();
    /**
     *
     *
     * <pre>
     * Time at which the session becomes invalid. After this time, subsequent
     * requests to read this Session will return errors.
     * </pre>
     *
     * <code>.google.protobuf.Timestamp expire_time = 2;</code>
     */
    com.google.protobuf.Timestamp getExpireTime();
    /**
     *
     *
     * <pre>
     * Time at which the session becomes invalid. After this time, subsequent
     * requests to read this Session will return errors.
     * </pre>
     *
     * <code>.google.protobuf.Timestamp expire_time = 2;</code>
     */
    com.google.protobuf.TimestampOrBuilder getExpireTimeOrBuilder();

    /**
     *
     *
     * <pre>
     * Avro schema.
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.AvroSchema avro_schema = 5;</code>
     */
    boolean hasAvroSchema();
    /**
     *
     *
     * <pre>
     * Avro schema.
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.AvroSchema avro_schema = 5;</code>
     */
    com.google.cloud.bigquery.storage.v1beta1.AvroProto.AvroSchema getAvroSchema();
    /**
     *
     *
     * <pre>
     * Avro schema.
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.AvroSchema avro_schema = 5;</code>
     */
    com.google.cloud.bigquery.storage.v1beta1.AvroProto.AvroSchemaOrBuilder
        getAvroSchemaOrBuilder();

    /**
     *
     *
     * <pre>
     * Streams associated with this session.
     * </pre>
     *
     * <code>repeated .google.cloud.bigquery.storage.v1beta1.Stream streams = 4;</code>
     */
    java.util.List<com.google.cloud.bigquery.storage.v1beta1.Storage.Stream> getStreamsList();
    /**
     *
     *
     * <pre>
     * Streams associated with this session.
     * </pre>
     *
     * <code>repeated .google.cloud.bigquery.storage.v1beta1.Stream streams = 4;</code>
     */
    com.google.cloud.bigquery.storage.v1beta1.Storage.Stream getStreams(int index);
    /**
     *
     *
     * <pre>
     * Streams associated with this session.
     * </pre>
     *
     * <code>repeated .google.cloud.bigquery.storage.v1beta1.Stream streams = 4;</code>
     */
    int getStreamsCount();
    /**
     *
     *
     * <pre>
     * Streams associated with this session.
     * </pre>
     *
     * <code>repeated .google.cloud.bigquery.storage.v1beta1.Stream streams = 4;</code>
     */
    java.util.List<? extends com.google.cloud.bigquery.storage.v1beta1.Storage.StreamOrBuilder>
        getStreamsOrBuilderList();
    /**
     *
     *
     * <pre>
     * Streams associated with this session.
     * </pre>
     *
     * <code>repeated .google.cloud.bigquery.storage.v1beta1.Stream streams = 4;</code>
     */
    com.google.cloud.bigquery.storage.v1beta1.Storage.StreamOrBuilder getStreamsOrBuilder(
        int index);

    /**
     *
     *
     * <pre>
     * Table that this ReadSession is reading from.
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.TableReference table_reference = 7;</code>
     */
    boolean hasTableReference();
    /**
     *
     *
     * <pre>
     * Table that this ReadSession is reading from.
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.TableReference table_reference = 7;</code>
     */
    com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableReference
        getTableReference();
    /**
     *
     *
     * <pre>
     * Table that this ReadSession is reading from.
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.TableReference table_reference = 7;</code>
     */
    com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableReferenceOrBuilder
        getTableReferenceOrBuilder();

    /**
     *
     *
     * <pre>
     * Any modifiers which are applied when reading from the specified table.
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.TableModifiers table_modifiers = 8;</code>
     */
    boolean hasTableModifiers();
    /**
     *
     *
     * <pre>
     * Any modifiers which are applied when reading from the specified table.
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.TableModifiers table_modifiers = 8;</code>
     */
    com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableModifiers
        getTableModifiers();
    /**
     *
     *
     * <pre>
     * Any modifiers which are applied when reading from the specified table.
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.TableModifiers table_modifiers = 8;</code>
     */
    com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableModifiersOrBuilder
        getTableModifiersOrBuilder();

    public com.google.cloud.bigquery.storage.v1beta1.Storage.ReadSession.SchemaCase getSchemaCase();
  }
  /**
   *
   *
   * <pre>
   * Information returned from a `CreateReadSession` request.
   * </pre>
   *
   * Protobuf type {@code google.cloud.bigquery.storage.v1beta1.ReadSession}
   */
  public static final class ReadSession extends com.google.protobuf.GeneratedMessageV3
      implements
      // @@protoc_insertion_point(message_implements:google.cloud.bigquery.storage.v1beta1.ReadSession)
      ReadSessionOrBuilder {
    private static final long serialVersionUID = 0L;
    // Use ReadSession.newBuilder() to construct.
    private ReadSession(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }

    private ReadSession() {
      name_ = "";
      streams_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
      return this.unknownFields;
    }

    private ReadSession(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10:
              {
                java.lang.String s = input.readStringRequireUtf8();

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

                break;
              }
            case 34:
              {
                if (!((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
                  streams_ =
                      new java.util.ArrayList<
                          com.google.cloud.bigquery.storage.v1beta1.Storage.Stream>();
                  mutable_bitField0_ |= 0x00000008;
                }
                streams_.add(
                    input.readMessage(
                        com.google.cloud.bigquery.storage.v1beta1.Storage.Stream.parser(),
                        extensionRegistry));
                break;
              }
            case 42:
              {
                com.google.cloud.bigquery.storage.v1beta1.AvroProto.AvroSchema.Builder subBuilder =
                    null;
                if (schemaCase_ == 5) {
                  subBuilder =
                      ((com.google.cloud.bigquery.storage.v1beta1.AvroProto.AvroSchema) schema_)
                          .toBuilder();
                }
                schema_ =
                    input.readMessage(
                        com.google.cloud.bigquery.storage.v1beta1.AvroProto.AvroSchema.parser(),
                        extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(
                      (com.google.cloud.bigquery.storage.v1beta1.AvroProto.AvroSchema) schema_);
                  schema_ = subBuilder.buildPartial();
                }
                schemaCase_ = 5;
                break;
              }
            case 58:
              {
                com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableReference.Builder
                    subBuilder = null;
                if (tableReference_ != null) {
                  subBuilder = tableReference_.toBuilder();
                }
                tableReference_ =
                    input.readMessage(
                        com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableReference
                            .parser(),
                        extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(tableReference_);
                  tableReference_ = subBuilder.buildPartial();
                }

                break;
              }
            case 66:
              {
                com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableModifiers.Builder
                    subBuilder = null;
                if (tableModifiers_ != null) {
                  subBuilder = tableModifiers_.toBuilder();
                }
                tableModifiers_ =
                    input.readMessage(
                        com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableModifiers
                            .parser(),
                        extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(tableModifiers_);
                  tableModifiers_ = subBuilder.buildPartial();
                }

                break;
              }
            default:
              {
                if (!parseUnknownFieldProto3(input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000008) == 0x00000008)) {
          streams_ = java.util.Collections.unmodifiableList(streams_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }

    public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
      return com.google.cloud.bigquery.storage.v1beta1.Storage
          .internal_static_google_cloud_bigquery_storage_v1beta1_ReadSession_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.cloud.bigquery.storage.v1beta1.Storage
          .internal_static_google_cloud_bigquery_storage_v1beta1_ReadSession_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.cloud.bigquery.storage.v1beta1.Storage.ReadSession.class,
              com.google.cloud.bigquery.storage.v1beta1.Storage.ReadSession.Builder.class);
    }

    private int bitField0_;
    private int schemaCase_ = 0;
    private java.lang.Object schema_;

    public enum SchemaCase implements com.google.protobuf.Internal.EnumLite {
      AVRO_SCHEMA(5),
      SCHEMA_NOT_SET(0);
      private final int value;

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

      public static SchemaCase forNumber(int value) {
        switch (value) {
          case 5:
            return AVRO_SCHEMA;
          case 0:
            return SCHEMA_NOT_SET;
          default:
            return null;
        }
      }

      public int getNumber() {
        return this.value;
      }
    };

    public SchemaCase getSchemaCase() {
      return SchemaCase.forNumber(schemaCase_);
    }

    public static final int NAME_FIELD_NUMBER = 1;
    private volatile java.lang.Object name_;
    /**
     *
     *
     * <pre>
     * Unique identifier for the session. In the form
     * `projects/{project_id}/sessions/{session_id}`
     * </pre>
     *
     * <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;
      }
    }
    /**
     *
     *
     * <pre>
     * Unique identifier for the session. In the form
     * `projects/{project_id}/sessions/{session_id}`
     * </pre>
     *
     * <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;
      }
    }

    public static final int EXPIRE_TIME_FIELD_NUMBER = 2;
    private com.google.protobuf.Timestamp expireTime_;
    /**
     *
     *
     * <pre>
     * Time at which the session becomes invalid. After this time, subsequent
     * requests to read this Session will return errors.
     * </pre>
     *
     * <code>.google.protobuf.Timestamp expire_time = 2;</code>
     */
    public boolean hasExpireTime() {
      return expireTime_ != null;
    }
    /**
     *
     *
     * <pre>
     * Time at which the session becomes invalid. After this time, subsequent
     * requests to read this Session will return errors.
     * </pre>
     *
     * <code>.google.protobuf.Timestamp expire_time = 2;</code>
     */
    public com.google.protobuf.Timestamp getExpireTime() {
      return expireTime_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : expireTime_;
    }
    /**
     *
     *
     * <pre>
     * Time at which the session becomes invalid. After this time, subsequent
     * requests to read this Session will return errors.
     * </pre>
     *
     * <code>.google.protobuf.Timestamp expire_time = 2;</code>
     */
    public com.google.protobuf.TimestampOrBuilder getExpireTimeOrBuilder() {
      return getExpireTime();
    }

    public static final int AVRO_SCHEMA_FIELD_NUMBER = 5;
    /**
     *
     *
     * <pre>
     * Avro schema.
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.AvroSchema avro_schema = 5;</code>
     */
    public boolean hasAvroSchema() {
      return schemaCase_ == 5;
    }
    /**
     *
     *
     * <pre>
     * Avro schema.
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.AvroSchema avro_schema = 5;</code>
     */
    public com.google.cloud.bigquery.storage.v1beta1.AvroProto.AvroSchema getAvroSchema() {
      if (schemaCase_ == 5) {
        return (com.google.cloud.bigquery.storage.v1beta1.AvroProto.AvroSchema) schema_;
      }
      return com.google.cloud.bigquery.storage.v1beta1.AvroProto.AvroSchema.getDefaultInstance();
    }
    /**
     *
     *
     * <pre>
     * Avro schema.
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.AvroSchema avro_schema = 5;</code>
     */
    public com.google.cloud.bigquery.storage.v1beta1.AvroProto.AvroSchemaOrBuilder
        getAvroSchemaOrBuilder() {
      if (schemaCase_ == 5) {
        return (com.google.cloud.bigquery.storage.v1beta1.AvroProto.AvroSchema) schema_;
      }
      return com.google.cloud.bigquery.storage.v1beta1.AvroProto.AvroSchema.getDefaultInstance();
    }

    public static final int STREAMS_FIELD_NUMBER = 4;
    private java.util.List<com.google.cloud.bigquery.storage.v1beta1.Storage.Stream> streams_;
    /**
     *
     *
     * <pre>
     * Streams associated with this session.
     * </pre>
     *
     * <code>repeated .google.cloud.bigquery.storage.v1beta1.Stream streams = 4;</code>
     */
    public java.util.List<com.google.cloud.bigquery.storage.v1beta1.Storage.Stream>
        getStreamsList() {
      return streams_;
    }
    /**
     *
     *
     * <pre>
     * Streams associated with this session.
     * </pre>
     *
     * <code>repeated .google.cloud.bigquery.storage.v1beta1.Stream streams = 4;</code>
     */
    public java.util.List<
            ? extends com.google.cloud.bigquery.storage.v1beta1.Storage.StreamOrBuilder>
        getStreamsOrBuilderList() {
      return streams_;
    }
    /**
     *
     *
     * <pre>
     * Streams associated with this session.
     * </pre>
     *
     * <code>repeated .google.cloud.bigquery.storage.v1beta1.Stream streams = 4;</code>
     */
    public int getStreamsCount() {
      return streams_.size();
    }
    /**
     *
     *
     * <pre>
     * Streams associated with this session.
     * </pre>
     *
     * <code>repeated .google.cloud.bigquery.storage.v1beta1.Stream streams = 4;</code>
     */
    public com.google.cloud.bigquery.storage.v1beta1.Storage.Stream getStreams(int index) {
      return streams_.get(index);
    }
    /**
     *
     *
     * <pre>
     * Streams associated with this session.
     * </pre>
     *
     * <code>repeated .google.cloud.bigquery.storage.v1beta1.Stream streams = 4;</code>
     */
    public com.google.cloud.bigquery.storage.v1beta1.Storage.StreamOrBuilder getStreamsOrBuilder(
        int index) {
      return streams_.get(index);
    }

    public static final int TABLE_REFERENCE_FIELD_NUMBER = 7;
    private com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableReference
        tableReference_;
    /**
     *
     *
     * <pre>
     * Table that this ReadSession is reading from.
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.TableReference table_reference = 7;</code>
     */
    public boolean hasTableReference() {
      return tableReference_ != null;
    }
    /**
     *
     *
     * <pre>
     * Table that this ReadSession is reading from.
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.TableReference table_reference = 7;</code>
     */
    public com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableReference
        getTableReference() {
      return tableReference_ == null
          ? com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableReference
              .getDefaultInstance()
          : tableReference_;
    }
    /**
     *
     *
     * <pre>
     * Table that this ReadSession is reading from.
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.TableReference table_reference = 7;</code>
     */
    public com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableReferenceOrBuilder
        getTableReferenceOrBuilder() {
      return getTableReference();
    }

    public static final int TABLE_MODIFIERS_FIELD_NUMBER = 8;
    private com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableModifiers
        tableModifiers_;
    /**
     *
     *
     * <pre>
     * Any modifiers which are applied when reading from the specified table.
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.TableModifiers table_modifiers = 8;</code>
     */
    public boolean hasTableModifiers() {
      return tableModifiers_ != null;
    }
    /**
     *
     *
     * <pre>
     * Any modifiers which are applied when reading from the specified table.
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.TableModifiers table_modifiers = 8;</code>
     */
    public com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableModifiers
        getTableModifiers() {
      return tableModifiers_ == null
          ? com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableModifiers
              .getDefaultInstance()
          : tableModifiers_;
    }
    /**
     *
     *
     * <pre>
     * Any modifiers which are applied when reading from the specified table.
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.TableModifiers table_modifiers = 8;</code>
     */
    public com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableModifiersOrBuilder
        getTableModifiersOrBuilder() {
      return getTableModifiers();
    }

    private byte memoizedIsInitialized = -1;

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
      if (!getNameBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
      }
      if (expireTime_ != null) {
        output.writeMessage(2, getExpireTime());
      }
      for (int i = 0; i < streams_.size(); i++) {
        output.writeMessage(4, streams_.get(i));
      }
      if (schemaCase_ == 5) {
        output.writeMessage(
            5, (com.google.cloud.bigquery.storage.v1beta1.AvroProto.AvroSchema) schema_);
      }
      if (tableReference_ != null) {
        output.writeMessage(7, getTableReference());
      }
      if (tableModifiers_ != null) {
        output.writeMessage(8, getTableModifiers());
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (!getNameBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
      }
      if (expireTime_ != null) {
        size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getExpireTime());
      }
      for (int i = 0; i < streams_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream.computeMessageSize(4, streams_.get(i));
      }
      if (schemaCase_ == 5) {
        size +=
            com.google.protobuf.CodedOutputStream.computeMessageSize(
                5, (com.google.cloud.bigquery.storage.v1beta1.AvroProto.AvroSchema) schema_);
      }
      if (tableReference_ != null) {
        size += com.google.protobuf.CodedOutputStream.computeMessageSize(7, getTableReference());
      }
      if (tableModifiers_ != null) {
        size += com.google.protobuf.CodedOutputStream.computeMessageSize(8, getTableModifiers());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
        return true;
      }
      if (!(obj instanceof com.google.cloud.bigquery.storage.v1beta1.Storage.ReadSession)) {
        return super.equals(obj);
      }
      com.google.cloud.bigquery.storage.v1beta1.Storage.ReadSession other =
          (com.google.cloud.bigquery.storage.v1beta1.Storage.ReadSession) obj;

      boolean result = true;
      result = result && getName().equals(other.getName());
      result = result && (hasExpireTime() == other.hasExpireTime());
      if (hasExpireTime()) {
        result = result && getExpireTime().equals(other.getExpireTime());
      }
      result = result && getStreamsList().equals(other.getStreamsList());
      result = result && (hasTableReference() == other.hasTableReference());
      if (hasTableReference()) {
        result = result && getTableReference().equals(other.getTableReference());
      }
      result = result && (hasTableModifiers() == other.hasTableModifiers());
      if (hasTableModifiers()) {
        result = result && getTableModifiers().equals(other.getTableModifiers());
      }
      result = result && getSchemaCase().equals(other.getSchemaCase());
      if (!result) return false;
      switch (schemaCase_) {
        case 5:
          result = result && getAvroSchema().equals(other.getAvroSchema());
          break;
        case 0:
        default:
      }
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + NAME_FIELD_NUMBER;
      hash = (53 * hash) + getName().hashCode();
      if (hasExpireTime()) {
        hash = (37 * hash) + EXPIRE_TIME_FIELD_NUMBER;
        hash = (53 * hash) + getExpireTime().hashCode();
      }
      if (getStreamsCount() > 0) {
        hash = (37 * hash) + STREAMS_FIELD_NUMBER;
        hash = (53 * hash) + getStreamsList().hashCode();
      }
      if (hasTableReference()) {
        hash = (37 * hash) + TABLE_REFERENCE_FIELD_NUMBER;
        hash = (53 * hash) + getTableReference().hashCode();
      }
      if (hasTableModifiers()) {
        hash = (37 * hash) + TABLE_MODIFIERS_FIELD_NUMBER;
        hash = (53 * hash) + getTableModifiers().hashCode();
      }
      switch (schemaCase_) {
        case 5:
          hash = (37 * hash) + AVRO_SCHEMA_FIELD_NUMBER;
          hash = (53 * hash) + getAvroSchema().hashCode();
          break;
        case 0:
        default:
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.ReadSession parseFrom(
        java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.ReadSession parseFrom(
        java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.ReadSession parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.ReadSession parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.ReadSession parseFrom(
        byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.ReadSession parseFrom(
        byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.ReadSession parseFrom(
        java.io.InputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.ReadSession parseFrom(
        java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
          PARSER, input, extensionRegistry);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.ReadSession parseDelimitedFrom(
        java.io.InputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.ReadSession parseDelimitedFrom(
        java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(
          PARSER, input, extensionRegistry);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.ReadSession parseFrom(
        com.google.protobuf.CodedInputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.ReadSession parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
          PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() {
      return newBuilder();
    }

    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }

    public static Builder newBuilder(
        com.google.cloud.bigquery.storage.v1beta1.Storage.ReadSession prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }

    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     *
     *
     * <pre>
     * Information returned from a `CreateReadSession` request.
     * </pre>
     *
     * Protobuf type {@code google.cloud.bigquery.storage.v1beta1.ReadSession}
     */
    public static final class Builder
        extends com.google.protobuf.GeneratedMessageV3.Builder<Builder>
        implements
        // @@protoc_insertion_point(builder_implements:google.cloud.bigquery.storage.v1beta1.ReadSession)
        com.google.cloud.bigquery.storage.v1beta1.Storage.ReadSessionOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
        return com.google.cloud.bigquery.storage.v1beta1.Storage
            .internal_static_google_cloud_bigquery_storage_v1beta1_ReadSession_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.cloud.bigquery.storage.v1beta1.Storage
            .internal_static_google_cloud_bigquery_storage_v1beta1_ReadSession_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.cloud.bigquery.storage.v1beta1.Storage.ReadSession.class,
                com.google.cloud.bigquery.storage.v1beta1.Storage.ReadSession.Builder.class);
      }

      // Construct using com.google.cloud.bigquery.storage.v1beta1.Storage.ReadSession.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }

      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
          getStreamsFieldBuilder();
        }
      }

      @java.lang.Override
      public Builder clear() {
        super.clear();
        name_ = "";

        if (expireTimeBuilder_ == null) {
          expireTime_ = null;
        } else {
          expireTime_ = null;
          expireTimeBuilder_ = null;
        }
        if (streamsBuilder_ == null) {
          streams_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000008);
        } else {
          streamsBuilder_.clear();
        }
        if (tableReferenceBuilder_ == null) {
          tableReference_ = null;
        } else {
          tableReference_ = null;
          tableReferenceBuilder_ = null;
        }
        if (tableModifiersBuilder_ == null) {
          tableModifiers_ = null;
        } else {
          tableModifiers_ = null;
          tableModifiersBuilder_ = null;
        }
        schemaCase_ = 0;
        schema_ = null;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
        return com.google.cloud.bigquery.storage.v1beta1.Storage
            .internal_static_google_cloud_bigquery_storage_v1beta1_ReadSession_descriptor;
      }

      @java.lang.Override
      public com.google.cloud.bigquery.storage.v1beta1.Storage.ReadSession
          getDefaultInstanceForType() {
        return com.google.cloud.bigquery.storage.v1beta1.Storage.ReadSession.getDefaultInstance();
      }

      @java.lang.Override
      public com.google.cloud.bigquery.storage.v1beta1.Storage.ReadSession build() {
        com.google.cloud.bigquery.storage.v1beta1.Storage.ReadSession result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.google.cloud.bigquery.storage.v1beta1.Storage.ReadSession buildPartial() {
        com.google.cloud.bigquery.storage.v1beta1.Storage.ReadSession result =
            new com.google.cloud.bigquery.storage.v1beta1.Storage.ReadSession(this);
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        result.name_ = name_;
        if (expireTimeBuilder_ == null) {
          result.expireTime_ = expireTime_;
        } else {
          result.expireTime_ = expireTimeBuilder_.build();
        }
        if (schemaCase_ == 5) {
          if (avroSchemaBuilder_ == null) {
            result.schema_ = schema_;
          } else {
            result.schema_ = avroSchemaBuilder_.build();
          }
        }
        if (streamsBuilder_ == null) {
          if (((bitField0_ & 0x00000008) == 0x00000008)) {
            streams_ = java.util.Collections.unmodifiableList(streams_);
            bitField0_ = (bitField0_ & ~0x00000008);
          }
          result.streams_ = streams_;
        } else {
          result.streams_ = streamsBuilder_.build();
        }
        if (tableReferenceBuilder_ == null) {
          result.tableReference_ = tableReference_;
        } else {
          result.tableReference_ = tableReferenceBuilder_.build();
        }
        if (tableModifiersBuilder_ == null) {
          result.tableModifiers_ = tableModifiers_;
        } else {
          result.tableModifiers_ = tableModifiersBuilder_.build();
        }
        result.bitField0_ = to_bitField0_;
        result.schemaCase_ = schemaCase_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return (Builder) super.clone();
      }

      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }

      @java.lang.Override
      public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }

      @java.lang.Override
      public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }

      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index,
          java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }

      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.cloud.bigquery.storage.v1beta1.Storage.ReadSession) {
          return mergeFrom((com.google.cloud.bigquery.storage.v1beta1.Storage.ReadSession) other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(
          com.google.cloud.bigquery.storage.v1beta1.Storage.ReadSession other) {
        if (other
            == com.google.cloud.bigquery.storage.v1beta1.Storage.ReadSession.getDefaultInstance())
          return this;
        if (!other.getName().isEmpty()) {
          name_ = other.name_;
          onChanged();
        }
        if (other.hasExpireTime()) {
          mergeExpireTime(other.getExpireTime());
        }
        if (streamsBuilder_ == null) {
          if (!other.streams_.isEmpty()) {
            if (streams_.isEmpty()) {
              streams_ = other.streams_;
              bitField0_ = (bitField0_ & ~0x00000008);
            } else {
              ensureStreamsIsMutable();
              streams_.addAll(other.streams_);
            }
            onChanged();
          }
        } else {
          if (!other.streams_.isEmpty()) {
            if (streamsBuilder_.isEmpty()) {
              streamsBuilder_.dispose();
              streamsBuilder_ = null;
              streams_ = other.streams_;
              bitField0_ = (bitField0_ & ~0x00000008);
              streamsBuilder_ =
                  com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders
                      ? getStreamsFieldBuilder()
                      : null;
            } else {
              streamsBuilder_.addAllMessages(other.streams_);
            }
          }
        }
        if (other.hasTableReference()) {
          mergeTableReference(other.getTableReference());
        }
        if (other.hasTableModifiers()) {
          mergeTableModifiers(other.getTableModifiers());
        }
        switch (other.getSchemaCase()) {
          case AVRO_SCHEMA:
            {
              mergeAvroSchema(other.getAvroSchema());
              break;
            }
          case SCHEMA_NOT_SET:
            {
              break;
            }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

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

      private int schemaCase_ = 0;
      private java.lang.Object schema_;

      public SchemaCase getSchemaCase() {
        return SchemaCase.forNumber(schemaCase_);
      }

      public Builder clearSchema() {
        schemaCase_ = 0;
        schema_ = null;
        onChanged();
        return this;
      }

      private int bitField0_;

      private java.lang.Object name_ = "";
      /**
       *
       *
       * <pre>
       * Unique identifier for the session. In the form
       * `projects/{project_id}/sessions/{session_id}`
       * </pre>
       *
       * <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;
        }
      }
      /**
       *
       *
       * <pre>
       * Unique identifier for the session. In the form
       * `projects/{project_id}/sessions/{session_id}`
       * </pre>
       *
       * <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;
        }
      }
      /**
       *
       *
       * <pre>
       * Unique identifier for the session. In the form
       * `projects/{project_id}/sessions/{session_id}`
       * </pre>
       *
       * <code>string name = 1;</code>
       */
      public Builder setName(java.lang.String value) {
        if (value == null) {
          throw new NullPointerException();
        }

        name_ = value;
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Unique identifier for the session. In the form
       * `projects/{project_id}/sessions/{session_id}`
       * </pre>
       *
       * <code>string name = 1;</code>
       */
      public Builder clearName() {

        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Unique identifier for the session. In the form
       * `projects/{project_id}/sessions/{session_id}`
       * </pre>
       *
       * <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;
      }

      private com.google.protobuf.Timestamp expireTime_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
              com.google.protobuf.Timestamp,
              com.google.protobuf.Timestamp.Builder,
              com.google.protobuf.TimestampOrBuilder>
          expireTimeBuilder_;
      /**
       *
       *
       * <pre>
       * Time at which the session becomes invalid. After this time, subsequent
       * requests to read this Session will return errors.
       * </pre>
       *
       * <code>.google.protobuf.Timestamp expire_time = 2;</code>
       */
      public boolean hasExpireTime() {
        return expireTimeBuilder_ != null || expireTime_ != null;
      }
      /**
       *
       *
       * <pre>
       * Time at which the session becomes invalid. After this time, subsequent
       * requests to read this Session will return errors.
       * </pre>
       *
       * <code>.google.protobuf.Timestamp expire_time = 2;</code>
       */
      public com.google.protobuf.Timestamp getExpireTime() {
        if (expireTimeBuilder_ == null) {
          return expireTime_ == null
              ? com.google.protobuf.Timestamp.getDefaultInstance()
              : expireTime_;
        } else {
          return expireTimeBuilder_.getMessage();
        }
      }
      /**
       *
       *
       * <pre>
       * Time at which the session becomes invalid. After this time, subsequent
       * requests to read this Session will return errors.
       * </pre>
       *
       * <code>.google.protobuf.Timestamp expire_time = 2;</code>
       */
      public Builder setExpireTime(com.google.protobuf.Timestamp value) {
        if (expireTimeBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          expireTime_ = value;
          onChanged();
        } else {
          expireTimeBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       *
       *
       * <pre>
       * Time at which the session becomes invalid. After this time, subsequent
       * requests to read this Session will return errors.
       * </pre>
       *
       * <code>.google.protobuf.Timestamp expire_time = 2;</code>
       */
      public Builder setExpireTime(com.google.protobuf.Timestamp.Builder builderForValue) {
        if (expireTimeBuilder_ == null) {
          expireTime_ = builderForValue.build();
          onChanged();
        } else {
          expireTimeBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       *
       *
       * <pre>
       * Time at which the session becomes invalid. After this time, subsequent
       * requests to read this Session will return errors.
       * </pre>
       *
       * <code>.google.protobuf.Timestamp expire_time = 2;</code>
       */
      public Builder mergeExpireTime(com.google.protobuf.Timestamp value) {
        if (expireTimeBuilder_ == null) {
          if (expireTime_ != null) {
            expireTime_ =
                com.google.protobuf.Timestamp.newBuilder(expireTime_)
                    .mergeFrom(value)
                    .buildPartial();
          } else {
            expireTime_ = value;
          }
          onChanged();
        } else {
          expireTimeBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       *
       *
       * <pre>
       * Time at which the session becomes invalid. After this time, subsequent
       * requests to read this Session will return errors.
       * </pre>
       *
       * <code>.google.protobuf.Timestamp expire_time = 2;</code>
       */
      public Builder clearExpireTime() {
        if (expireTimeBuilder_ == null) {
          expireTime_ = null;
          onChanged();
        } else {
          expireTime_ = null;
          expireTimeBuilder_ = null;
        }

        return this;
      }
      /**
       *
       *
       * <pre>
       * Time at which the session becomes invalid. After this time, subsequent
       * requests to read this Session will return errors.
       * </pre>
       *
       * <code>.google.protobuf.Timestamp expire_time = 2;</code>
       */
      public com.google.protobuf.Timestamp.Builder getExpireTimeBuilder() {

        onChanged();
        return getExpireTimeFieldBuilder().getBuilder();
      }
      /**
       *
       *
       * <pre>
       * Time at which the session becomes invalid. After this time, subsequent
       * requests to read this Session will return errors.
       * </pre>
       *
       * <code>.google.protobuf.Timestamp expire_time = 2;</code>
       */
      public com.google.protobuf.TimestampOrBuilder getExpireTimeOrBuilder() {
        if (expireTimeBuilder_ != null) {
          return expireTimeBuilder_.getMessageOrBuilder();
        } else {
          return expireTime_ == null
              ? com.google.protobuf.Timestamp.getDefaultInstance()
              : expireTime_;
        }
      }
      /**
       *
       *
       * <pre>
       * Time at which the session becomes invalid. After this time, subsequent
       * requests to read this Session will return errors.
       * </pre>
       *
       * <code>.google.protobuf.Timestamp expire_time = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
              com.google.protobuf.Timestamp,
              com.google.protobuf.Timestamp.Builder,
              com.google.protobuf.TimestampOrBuilder>
          getExpireTimeFieldBuilder() {
        if (expireTimeBuilder_ == null) {
          expireTimeBuilder_ =
              new com.google.protobuf.SingleFieldBuilderV3<
                  com.google.protobuf.Timestamp,
                  com.google.protobuf.Timestamp.Builder,
                  com.google.protobuf.TimestampOrBuilder>(
                  getExpireTime(), getParentForChildren(), isClean());
          expireTime_ = null;
        }
        return expireTimeBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
              com.google.cloud.bigquery.storage.v1beta1.AvroProto.AvroSchema,
              com.google.cloud.bigquery.storage.v1beta1.AvroProto.AvroSchema.Builder,
              com.google.cloud.bigquery.storage.v1beta1.AvroProto.AvroSchemaOrBuilder>
          avroSchemaBuilder_;
      /**
       *
       *
       * <pre>
       * Avro schema.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.AvroSchema avro_schema = 5;</code>
       */
      public boolean hasAvroSchema() {
        return schemaCase_ == 5;
      }
      /**
       *
       *
       * <pre>
       * Avro schema.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.AvroSchema avro_schema = 5;</code>
       */
      public com.google.cloud.bigquery.storage.v1beta1.AvroProto.AvroSchema getAvroSchema() {
        if (avroSchemaBuilder_ == null) {
          if (schemaCase_ == 5) {
            return (com.google.cloud.bigquery.storage.v1beta1.AvroProto.AvroSchema) schema_;
          }
          return com.google.cloud.bigquery.storage.v1beta1.AvroProto.AvroSchema
              .getDefaultInstance();
        } else {
          if (schemaCase_ == 5) {
            return avroSchemaBuilder_.getMessage();
          }
          return com.google.cloud.bigquery.storage.v1beta1.AvroProto.AvroSchema
              .getDefaultInstance();
        }
      }
      /**
       *
       *
       * <pre>
       * Avro schema.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.AvroSchema avro_schema = 5;</code>
       */
      public Builder setAvroSchema(
          com.google.cloud.bigquery.storage.v1beta1.AvroProto.AvroSchema value) {
        if (avroSchemaBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          schema_ = value;
          onChanged();
        } else {
          avroSchemaBuilder_.setMessage(value);
        }
        schemaCase_ = 5;
        return this;
      }
      /**
       *
       *
       * <pre>
       * Avro schema.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.AvroSchema avro_schema = 5;</code>
       */
      public Builder setAvroSchema(
          com.google.cloud.bigquery.storage.v1beta1.AvroProto.AvroSchema.Builder builderForValue) {
        if (avroSchemaBuilder_ == null) {
          schema_ = builderForValue.build();
          onChanged();
        } else {
          avroSchemaBuilder_.setMessage(builderForValue.build());
        }
        schemaCase_ = 5;
        return this;
      }
      /**
       *
       *
       * <pre>
       * Avro schema.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.AvroSchema avro_schema = 5;</code>
       */
      public Builder mergeAvroSchema(
          com.google.cloud.bigquery.storage.v1beta1.AvroProto.AvroSchema value) {
        if (avroSchemaBuilder_ == null) {
          if (schemaCase_ == 5
              && schema_
                  != com.google.cloud.bigquery.storage.v1beta1.AvroProto.AvroSchema
                      .getDefaultInstance()) {
            schema_ =
                com.google.cloud.bigquery.storage.v1beta1.AvroProto.AvroSchema.newBuilder(
                        (com.google.cloud.bigquery.storage.v1beta1.AvroProto.AvroSchema) schema_)
                    .mergeFrom(value)
                    .buildPartial();
          } else {
            schema_ = value;
          }
          onChanged();
        } else {
          if (schemaCase_ == 5) {
            avroSchemaBuilder_.mergeFrom(value);
          }
          avroSchemaBuilder_.setMessage(value);
        }
        schemaCase_ = 5;
        return this;
      }
      /**
       *
       *
       * <pre>
       * Avro schema.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.AvroSchema avro_schema = 5;</code>
       */
      public Builder clearAvroSchema() {
        if (avroSchemaBuilder_ == null) {
          if (schemaCase_ == 5) {
            schemaCase_ = 0;
            schema_ = null;
            onChanged();
          }
        } else {
          if (schemaCase_ == 5) {
            schemaCase_ = 0;
            schema_ = null;
          }
          avroSchemaBuilder_.clear();
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * Avro schema.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.AvroSchema avro_schema = 5;</code>
       */
      public com.google.cloud.bigquery.storage.v1beta1.AvroProto.AvroSchema.Builder
          getAvroSchemaBuilder() {
        return getAvroSchemaFieldBuilder().getBuilder();
      }
      /**
       *
       *
       * <pre>
       * Avro schema.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.AvroSchema avro_schema = 5;</code>
       */
      public com.google.cloud.bigquery.storage.v1beta1.AvroProto.AvroSchemaOrBuilder
          getAvroSchemaOrBuilder() {
        if ((schemaCase_ == 5) && (avroSchemaBuilder_ != null)) {
          return avroSchemaBuilder_.getMessageOrBuilder();
        } else {
          if (schemaCase_ == 5) {
            return (com.google.cloud.bigquery.storage.v1beta1.AvroProto.AvroSchema) schema_;
          }
          return com.google.cloud.bigquery.storage.v1beta1.AvroProto.AvroSchema
              .getDefaultInstance();
        }
      }
      /**
       *
       *
       * <pre>
       * Avro schema.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.AvroSchema avro_schema = 5;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
              com.google.cloud.bigquery.storage.v1beta1.AvroProto.AvroSchema,
              com.google.cloud.bigquery.storage.v1beta1.AvroProto.AvroSchema.Builder,
              com.google.cloud.bigquery.storage.v1beta1.AvroProto.AvroSchemaOrBuilder>
          getAvroSchemaFieldBuilder() {
        if (avroSchemaBuilder_ == null) {
          if (!(schemaCase_ == 5)) {
            schema_ =
                com.google.cloud.bigquery.storage.v1beta1.AvroProto.AvroSchema.getDefaultInstance();
          }
          avroSchemaBuilder_ =
              new com.google.protobuf.SingleFieldBuilderV3<
                  com.google.cloud.bigquery.storage.v1beta1.AvroProto.AvroSchema,
                  com.google.cloud.bigquery.storage.v1beta1.AvroProto.AvroSchema.Builder,
                  com.google.cloud.bigquery.storage.v1beta1.AvroProto.AvroSchemaOrBuilder>(
                  (com.google.cloud.bigquery.storage.v1beta1.AvroProto.AvroSchema) schema_,
                  getParentForChildren(),
                  isClean());
          schema_ = null;
        }
        schemaCase_ = 5;
        onChanged();
        ;
        return avroSchemaBuilder_;
      }

      private java.util.List<com.google.cloud.bigquery.storage.v1beta1.Storage.Stream> streams_ =
          java.util.Collections.emptyList();

      private void ensureStreamsIsMutable() {
        if (!((bitField0_ & 0x00000008) == 0x00000008)) {
          streams_ =
              new java.util.ArrayList<com.google.cloud.bigquery.storage.v1beta1.Storage.Stream>(
                  streams_);
          bitField0_ |= 0x00000008;
        }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.cloud.bigquery.storage.v1beta1.Storage.Stream,
              com.google.cloud.bigquery.storage.v1beta1.Storage.Stream.Builder,
              com.google.cloud.bigquery.storage.v1beta1.Storage.StreamOrBuilder>
          streamsBuilder_;

      /**
       *
       *
       * <pre>
       * Streams associated with this session.
       * </pre>
       *
       * <code>repeated .google.cloud.bigquery.storage.v1beta1.Stream streams = 4;</code>
       */
      public java.util.List<com.google.cloud.bigquery.storage.v1beta1.Storage.Stream>
          getStreamsList() {
        if (streamsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(streams_);
        } else {
          return streamsBuilder_.getMessageList();
        }
      }
      /**
       *
       *
       * <pre>
       * Streams associated with this session.
       * </pre>
       *
       * <code>repeated .google.cloud.bigquery.storage.v1beta1.Stream streams = 4;</code>
       */
      public int getStreamsCount() {
        if (streamsBuilder_ == null) {
          return streams_.size();
        } else {
          return streamsBuilder_.getCount();
        }
      }
      /**
       *
       *
       * <pre>
       * Streams associated with this session.
       * </pre>
       *
       * <code>repeated .google.cloud.bigquery.storage.v1beta1.Stream streams = 4;</code>
       */
      public com.google.cloud.bigquery.storage.v1beta1.Storage.Stream getStreams(int index) {
        if (streamsBuilder_ == null) {
          return streams_.get(index);
        } else {
          return streamsBuilder_.getMessage(index);
        }
      }
      /**
       *
       *
       * <pre>
       * Streams associated with this session.
       * </pre>
       *
       * <code>repeated .google.cloud.bigquery.storage.v1beta1.Stream streams = 4;</code>
       */
      public Builder setStreams(
          int index, com.google.cloud.bigquery.storage.v1beta1.Storage.Stream value) {
        if (streamsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureStreamsIsMutable();
          streams_.set(index, value);
          onChanged();
        } else {
          streamsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * Streams associated with this session.
       * </pre>
       *
       * <code>repeated .google.cloud.bigquery.storage.v1beta1.Stream streams = 4;</code>
       */
      public Builder setStreams(
          int index,
          com.google.cloud.bigquery.storage.v1beta1.Storage.Stream.Builder builderForValue) {
        if (streamsBuilder_ == null) {
          ensureStreamsIsMutable();
          streams_.set(index, builderForValue.build());
          onChanged();
        } else {
          streamsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * Streams associated with this session.
       * </pre>
       *
       * <code>repeated .google.cloud.bigquery.storage.v1beta1.Stream streams = 4;</code>
       */
      public Builder addStreams(com.google.cloud.bigquery.storage.v1beta1.Storage.Stream value) {
        if (streamsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureStreamsIsMutable();
          streams_.add(value);
          onChanged();
        } else {
          streamsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * Streams associated with this session.
       * </pre>
       *
       * <code>repeated .google.cloud.bigquery.storage.v1beta1.Stream streams = 4;</code>
       */
      public Builder addStreams(
          int index, com.google.cloud.bigquery.storage.v1beta1.Storage.Stream value) {
        if (streamsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureStreamsIsMutable();
          streams_.add(index, value);
          onChanged();
        } else {
          streamsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * Streams associated with this session.
       * </pre>
       *
       * <code>repeated .google.cloud.bigquery.storage.v1beta1.Stream streams = 4;</code>
       */
      public Builder addStreams(
          com.google.cloud.bigquery.storage.v1beta1.Storage.Stream.Builder builderForValue) {
        if (streamsBuilder_ == null) {
          ensureStreamsIsMutable();
          streams_.add(builderForValue.build());
          onChanged();
        } else {
          streamsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * Streams associated with this session.
       * </pre>
       *
       * <code>repeated .google.cloud.bigquery.storage.v1beta1.Stream streams = 4;</code>
       */
      public Builder addStreams(
          int index,
          com.google.cloud.bigquery.storage.v1beta1.Storage.Stream.Builder builderForValue) {
        if (streamsBuilder_ == null) {
          ensureStreamsIsMutable();
          streams_.add(index, builderForValue.build());
          onChanged();
        } else {
          streamsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * Streams associated with this session.
       * </pre>
       *
       * <code>repeated .google.cloud.bigquery.storage.v1beta1.Stream streams = 4;</code>
       */
      public Builder addAllStreams(
          java.lang.Iterable<? extends com.google.cloud.bigquery.storage.v1beta1.Storage.Stream>
              values) {
        if (streamsBuilder_ == null) {
          ensureStreamsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(values, streams_);
          onChanged();
        } else {
          streamsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * Streams associated with this session.
       * </pre>
       *
       * <code>repeated .google.cloud.bigquery.storage.v1beta1.Stream streams = 4;</code>
       */
      public Builder clearStreams() {
        if (streamsBuilder_ == null) {
          streams_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000008);
          onChanged();
        } else {
          streamsBuilder_.clear();
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * Streams associated with this session.
       * </pre>
       *
       * <code>repeated .google.cloud.bigquery.storage.v1beta1.Stream streams = 4;</code>
       */
      public Builder removeStreams(int index) {
        if (streamsBuilder_ == null) {
          ensureStreamsIsMutable();
          streams_.remove(index);
          onChanged();
        } else {
          streamsBuilder_.remove(index);
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * Streams associated with this session.
       * </pre>
       *
       * <code>repeated .google.cloud.bigquery.storage.v1beta1.Stream streams = 4;</code>
       */
      public com.google.cloud.bigquery.storage.v1beta1.Storage.Stream.Builder getStreamsBuilder(
          int index) {
        return getStreamsFieldBuilder().getBuilder(index);
      }
      /**
       *
       *
       * <pre>
       * Streams associated with this session.
       * </pre>
       *
       * <code>repeated .google.cloud.bigquery.storage.v1beta1.Stream streams = 4;</code>
       */
      public com.google.cloud.bigquery.storage.v1beta1.Storage.StreamOrBuilder getStreamsOrBuilder(
          int index) {
        if (streamsBuilder_ == null) {
          return streams_.get(index);
        } else {
          return streamsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       *
       *
       * <pre>
       * Streams associated with this session.
       * </pre>
       *
       * <code>repeated .google.cloud.bigquery.storage.v1beta1.Stream streams = 4;</code>
       */
      public java.util.List<
              ? extends com.google.cloud.bigquery.storage.v1beta1.Storage.StreamOrBuilder>
          getStreamsOrBuilderList() {
        if (streamsBuilder_ != null) {
          return streamsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(streams_);
        }
      }
      /**
       *
       *
       * <pre>
       * Streams associated with this session.
       * </pre>
       *
       * <code>repeated .google.cloud.bigquery.storage.v1beta1.Stream streams = 4;</code>
       */
      public com.google.cloud.bigquery.storage.v1beta1.Storage.Stream.Builder addStreamsBuilder() {
        return getStreamsFieldBuilder()
            .addBuilder(
                com.google.cloud.bigquery.storage.v1beta1.Storage.Stream.getDefaultInstance());
      }
      /**
       *
       *
       * <pre>
       * Streams associated with this session.
       * </pre>
       *
       * <code>repeated .google.cloud.bigquery.storage.v1beta1.Stream streams = 4;</code>
       */
      public com.google.cloud.bigquery.storage.v1beta1.Storage.Stream.Builder addStreamsBuilder(
          int index) {
        return getStreamsFieldBuilder()
            .addBuilder(
                index,
                com.google.cloud.bigquery.storage.v1beta1.Storage.Stream.getDefaultInstance());
      }
      /**
       *
       *
       * <pre>
       * Streams associated with this session.
       * </pre>
       *
       * <code>repeated .google.cloud.bigquery.storage.v1beta1.Stream streams = 4;</code>
       */
      public java.util.List<com.google.cloud.bigquery.storage.v1beta1.Storage.Stream.Builder>
          getStreamsBuilderList() {
        return getStreamsFieldBuilder().getBuilderList();
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.cloud.bigquery.storage.v1beta1.Storage.Stream,
              com.google.cloud.bigquery.storage.v1beta1.Storage.Stream.Builder,
              com.google.cloud.bigquery.storage.v1beta1.Storage.StreamOrBuilder>
          getStreamsFieldBuilder() {
        if (streamsBuilder_ == null) {
          streamsBuilder_ =
              new com.google.protobuf.RepeatedFieldBuilderV3<
                  com.google.cloud.bigquery.storage.v1beta1.Storage.Stream,
                  com.google.cloud.bigquery.storage.v1beta1.Storage.Stream.Builder,
                  com.google.cloud.bigquery.storage.v1beta1.Storage.StreamOrBuilder>(
                  streams_,
                  ((bitField0_ & 0x00000008) == 0x00000008),
                  getParentForChildren(),
                  isClean());
          streams_ = null;
        }
        return streamsBuilder_;
      }

      private com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableReference
          tableReference_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
              com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableReference,
              com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableReference.Builder,
              com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableReferenceOrBuilder>
          tableReferenceBuilder_;
      /**
       *
       *
       * <pre>
       * Table that this ReadSession is reading from.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.TableReference table_reference = 7;</code>
       */
      public boolean hasTableReference() {
        return tableReferenceBuilder_ != null || tableReference_ != null;
      }
      /**
       *
       *
       * <pre>
       * Table that this ReadSession is reading from.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.TableReference table_reference = 7;</code>
       */
      public com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableReference
          getTableReference() {
        if (tableReferenceBuilder_ == null) {
          return tableReference_ == null
              ? com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableReference
                  .getDefaultInstance()
              : tableReference_;
        } else {
          return tableReferenceBuilder_.getMessage();
        }
      }
      /**
       *
       *
       * <pre>
       * Table that this ReadSession is reading from.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.TableReference table_reference = 7;</code>
       */
      public Builder setTableReference(
          com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableReference value) {
        if (tableReferenceBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          tableReference_ = value;
          onChanged();
        } else {
          tableReferenceBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       *
       *
       * <pre>
       * Table that this ReadSession is reading from.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.TableReference table_reference = 7;</code>
       */
      public Builder setTableReference(
          com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableReference.Builder
              builderForValue) {
        if (tableReferenceBuilder_ == null) {
          tableReference_ = builderForValue.build();
          onChanged();
        } else {
          tableReferenceBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       *
       *
       * <pre>
       * Table that this ReadSession is reading from.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.TableReference table_reference = 7;</code>
       */
      public Builder mergeTableReference(
          com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableReference value) {
        if (tableReferenceBuilder_ == null) {
          if (tableReference_ != null) {
            tableReference_ =
                com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableReference
                    .newBuilder(tableReference_)
                    .mergeFrom(value)
                    .buildPartial();
          } else {
            tableReference_ = value;
          }
          onChanged();
        } else {
          tableReferenceBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       *
       *
       * <pre>
       * Table that this ReadSession is reading from.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.TableReference table_reference = 7;</code>
       */
      public Builder clearTableReference() {
        if (tableReferenceBuilder_ == null) {
          tableReference_ = null;
          onChanged();
        } else {
          tableReference_ = null;
          tableReferenceBuilder_ = null;
        }

        return this;
      }
      /**
       *
       *
       * <pre>
       * Table that this ReadSession is reading from.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.TableReference table_reference = 7;</code>
       */
      public com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableReference.Builder
          getTableReferenceBuilder() {

        onChanged();
        return getTableReferenceFieldBuilder().getBuilder();
      }
      /**
       *
       *
       * <pre>
       * Table that this ReadSession is reading from.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.TableReference table_reference = 7;</code>
       */
      public com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableReferenceOrBuilder
          getTableReferenceOrBuilder() {
        if (tableReferenceBuilder_ != null) {
          return tableReferenceBuilder_.getMessageOrBuilder();
        } else {
          return tableReference_ == null
              ? com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableReference
                  .getDefaultInstance()
              : tableReference_;
        }
      }
      /**
       *
       *
       * <pre>
       * Table that this ReadSession is reading from.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.TableReference table_reference = 7;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
              com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableReference,
              com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableReference.Builder,
              com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableReferenceOrBuilder>
          getTableReferenceFieldBuilder() {
        if (tableReferenceBuilder_ == null) {
          tableReferenceBuilder_ =
              new com.google.protobuf.SingleFieldBuilderV3<
                  com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableReference,
                  com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableReference
                      .Builder,
                  com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto
                      .TableReferenceOrBuilder>(
                  getTableReference(), getParentForChildren(), isClean());
          tableReference_ = null;
        }
        return tableReferenceBuilder_;
      }

      private com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableModifiers
          tableModifiers_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
              com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableModifiers,
              com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableModifiers.Builder,
              com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableModifiersOrBuilder>
          tableModifiersBuilder_;
      /**
       *
       *
       * <pre>
       * Any modifiers which are applied when reading from the specified table.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.TableModifiers table_modifiers = 8;</code>
       */
      public boolean hasTableModifiers() {
        return tableModifiersBuilder_ != null || tableModifiers_ != null;
      }
      /**
       *
       *
       * <pre>
       * Any modifiers which are applied when reading from the specified table.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.TableModifiers table_modifiers = 8;</code>
       */
      public com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableModifiers
          getTableModifiers() {
        if (tableModifiersBuilder_ == null) {
          return tableModifiers_ == null
              ? com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableModifiers
                  .getDefaultInstance()
              : tableModifiers_;
        } else {
          return tableModifiersBuilder_.getMessage();
        }
      }
      /**
       *
       *
       * <pre>
       * Any modifiers which are applied when reading from the specified table.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.TableModifiers table_modifiers = 8;</code>
       */
      public Builder setTableModifiers(
          com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableModifiers value) {
        if (tableModifiersBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          tableModifiers_ = value;
          onChanged();
        } else {
          tableModifiersBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       *
       *
       * <pre>
       * Any modifiers which are applied when reading from the specified table.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.TableModifiers table_modifiers = 8;</code>
       */
      public Builder setTableModifiers(
          com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableModifiers.Builder
              builderForValue) {
        if (tableModifiersBuilder_ == null) {
          tableModifiers_ = builderForValue.build();
          onChanged();
        } else {
          tableModifiersBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       *
       *
       * <pre>
       * Any modifiers which are applied when reading from the specified table.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.TableModifiers table_modifiers = 8;</code>
       */
      public Builder mergeTableModifiers(
          com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableModifiers value) {
        if (tableModifiersBuilder_ == null) {
          if (tableModifiers_ != null) {
            tableModifiers_ =
                com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableModifiers
                    .newBuilder(tableModifiers_)
                    .mergeFrom(value)
                    .buildPartial();
          } else {
            tableModifiers_ = value;
          }
          onChanged();
        } else {
          tableModifiersBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       *
       *
       * <pre>
       * Any modifiers which are applied when reading from the specified table.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.TableModifiers table_modifiers = 8;</code>
       */
      public Builder clearTableModifiers() {
        if (tableModifiersBuilder_ == null) {
          tableModifiers_ = null;
          onChanged();
        } else {
          tableModifiers_ = null;
          tableModifiersBuilder_ = null;
        }

        return this;
      }
      /**
       *
       *
       * <pre>
       * Any modifiers which are applied when reading from the specified table.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.TableModifiers table_modifiers = 8;</code>
       */
      public com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableModifiers.Builder
          getTableModifiersBuilder() {

        onChanged();
        return getTableModifiersFieldBuilder().getBuilder();
      }
      /**
       *
       *
       * <pre>
       * Any modifiers which are applied when reading from the specified table.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.TableModifiers table_modifiers = 8;</code>
       */
      public com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableModifiersOrBuilder
          getTableModifiersOrBuilder() {
        if (tableModifiersBuilder_ != null) {
          return tableModifiersBuilder_.getMessageOrBuilder();
        } else {
          return tableModifiers_ == null
              ? com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableModifiers
                  .getDefaultInstance()
              : tableModifiers_;
        }
      }
      /**
       *
       *
       * <pre>
       * Any modifiers which are applied when reading from the specified table.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.TableModifiers table_modifiers = 8;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
              com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableModifiers,
              com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableModifiers.Builder,
              com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableModifiersOrBuilder>
          getTableModifiersFieldBuilder() {
        if (tableModifiersBuilder_ == null) {
          tableModifiersBuilder_ =
              new com.google.protobuf.SingleFieldBuilderV3<
                  com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableModifiers,
                  com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableModifiers
                      .Builder,
                  com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto
                      .TableModifiersOrBuilder>(
                  getTableModifiers(), getParentForChildren(), isClean());
          tableModifiers_ = null;
        }
        return tableModifiersBuilder_;
      }

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

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

      // @@protoc_insertion_point(builder_scope:google.cloud.bigquery.storage.v1beta1.ReadSession)
    }

    // @@protoc_insertion_point(class_scope:google.cloud.bigquery.storage.v1beta1.ReadSession)
    private static final com.google.cloud.bigquery.storage.v1beta1.Storage.ReadSession
        DEFAULT_INSTANCE;

    static {
      DEFAULT_INSTANCE = new com.google.cloud.bigquery.storage.v1beta1.Storage.ReadSession();
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.ReadSession
        getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.google.cloud.bigquery.storage.v1beta1.Storage.ReadSession
        getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }
  }

  public interface CreateReadSessionRequestOrBuilder
      extends
      // @@protoc_insertion_point(interface_extends:google.cloud.bigquery.storage.v1beta1.CreateReadSessionRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     *
     *
     * <pre>
     * Required. Reference to the table to read.
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.TableReference table_reference = 1;</code>
     */
    boolean hasTableReference();
    /**
     *
     *
     * <pre>
     * Required. Reference to the table to read.
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.TableReference table_reference = 1;</code>
     */
    com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableReference
        getTableReference();
    /**
     *
     *
     * <pre>
     * Required. Reference to the table to read.
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.TableReference table_reference = 1;</code>
     */
    com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableReferenceOrBuilder
        getTableReferenceOrBuilder();

    /**
     *
     *
     * <pre>
     * Required. String of the form "projects/your-project-id" indicating the
     * project this ReadSession is associated with. This is the project that will
     * be billed for usage.
     * </pre>
     *
     * <code>string parent = 6;</code>
     */
    java.lang.String getParent();
    /**
     *
     *
     * <pre>
     * Required. String of the form "projects/your-project-id" indicating the
     * project this ReadSession is associated with. This is the project that will
     * be billed for usage.
     * </pre>
     *
     * <code>string parent = 6;</code>
     */
    com.google.protobuf.ByteString getParentBytes();

    /**
     *
     *
     * <pre>
     * Optional. Any modifiers to the Table (e.g. snapshot timestamp).
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.TableModifiers table_modifiers = 2;</code>
     */
    boolean hasTableModifiers();
    /**
     *
     *
     * <pre>
     * Optional. Any modifiers to the Table (e.g. snapshot timestamp).
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.TableModifiers table_modifiers = 2;</code>
     */
    com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableModifiers
        getTableModifiers();
    /**
     *
     *
     * <pre>
     * Optional. Any modifiers to the Table (e.g. snapshot timestamp).
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.TableModifiers table_modifiers = 2;</code>
     */
    com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableModifiersOrBuilder
        getTableModifiersOrBuilder();

    /**
     *
     *
     * <pre>
     * Optional. Initial number of streams. If unset or 0, we will
     * provide a value of streams so as to produce reasonable throughput. Must be
     * non-negative. The number of streams may be lower than the requested number,
     * depending on the amount parallelism that is reasonable for the table and
     * the maximum amount of parallelism allowed by the system.
     * Streams must be read starting from offset 0.
     * </pre>
     *
     * <code>int32 requested_streams = 3;</code>
     */
    int getRequestedStreams();

    /**
     *
     *
     * <pre>
     * Optional. Read options for this session (e.g. column selection, filters).
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.TableReadOptions read_options = 4;</code>
     */
    boolean hasReadOptions();
    /**
     *
     *
     * <pre>
     * Optional. Read options for this session (e.g. column selection, filters).
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.TableReadOptions read_options = 4;</code>
     */
    com.google.cloud.bigquery.storage.v1beta1.ReadOptions.TableReadOptions getReadOptions();
    /**
     *
     *
     * <pre>
     * Optional. Read options for this session (e.g. column selection, filters).
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.TableReadOptions read_options = 4;</code>
     */
    com.google.cloud.bigquery.storage.v1beta1.ReadOptions.TableReadOptionsOrBuilder
        getReadOptionsOrBuilder();

    /**
     *
     *
     * <pre>
     * Data output format. Currently default to Avro.
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.DataFormat format = 5;</code>
     */
    int getFormatValue();
    /**
     *
     *
     * <pre>
     * Data output format. Currently default to Avro.
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.DataFormat format = 5;</code>
     */
    com.google.cloud.bigquery.storage.v1beta1.Storage.DataFormat getFormat();
  }
  /**
   *
   *
   * <pre>
   * Creates a new read session, which may include additional options such as
   * requested parallelism, projection filters and constraints.
   * </pre>
   *
   * Protobuf type {@code google.cloud.bigquery.storage.v1beta1.CreateReadSessionRequest}
   */
  public static final class CreateReadSessionRequest extends com.google.protobuf.GeneratedMessageV3
      implements
      // @@protoc_insertion_point(message_implements:google.cloud.bigquery.storage.v1beta1.CreateReadSessionRequest)
      CreateReadSessionRequestOrBuilder {
    private static final long serialVersionUID = 0L;
    // Use CreateReadSessionRequest.newBuilder() to construct.
    private CreateReadSessionRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }

    private CreateReadSessionRequest() {
      parent_ = "";
      requestedStreams_ = 0;
      format_ = 0;
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
      return this.unknownFields;
    }

    private CreateReadSessionRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10:
              {
                com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableReference.Builder
                    subBuilder = null;
                if (tableReference_ != null) {
                  subBuilder = tableReference_.toBuilder();
                }
                tableReference_ =
                    input.readMessage(
                        com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableReference
                            .parser(),
                        extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(tableReference_);
                  tableReference_ = subBuilder.buildPartial();
                }

                break;
              }
            case 18:
              {
                com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableModifiers.Builder
                    subBuilder = null;
                if (tableModifiers_ != null) {
                  subBuilder = tableModifiers_.toBuilder();
                }
                tableModifiers_ =
                    input.readMessage(
                        com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableModifiers
                            .parser(),
                        extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(tableModifiers_);
                  tableModifiers_ = subBuilder.buildPartial();
                }

                break;
              }
            case 24:
              {
                requestedStreams_ = input.readInt32();
                break;
              }
            case 34:
              {
                com.google.cloud.bigquery.storage.v1beta1.ReadOptions.TableReadOptions.Builder
                    subBuilder = null;
                if (readOptions_ != null) {
                  subBuilder = readOptions_.toBuilder();
                }
                readOptions_ =
                    input.readMessage(
                        com.google.cloud.bigquery.storage.v1beta1.ReadOptions.TableReadOptions
                            .parser(),
                        extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(readOptions_);
                  readOptions_ = subBuilder.buildPartial();
                }

                break;
              }
            case 40:
              {
                int rawValue = input.readEnum();

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

                parent_ = s;
                break;
              }
            default:
              {
                if (!parseUnknownFieldProto3(input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }

    public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
      return com.google.cloud.bigquery.storage.v1beta1.Storage
          .internal_static_google_cloud_bigquery_storage_v1beta1_CreateReadSessionRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.cloud.bigquery.storage.v1beta1.Storage
          .internal_static_google_cloud_bigquery_storage_v1beta1_CreateReadSessionRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.cloud.bigquery.storage.v1beta1.Storage.CreateReadSessionRequest.class,
              com.google.cloud.bigquery.storage.v1beta1.Storage.CreateReadSessionRequest.Builder
                  .class);
    }

    public static final int TABLE_REFERENCE_FIELD_NUMBER = 1;
    private com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableReference
        tableReference_;
    /**
     *
     *
     * <pre>
     * Required. Reference to the table to read.
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.TableReference table_reference = 1;</code>
     */
    public boolean hasTableReference() {
      return tableReference_ != null;
    }
    /**
     *
     *
     * <pre>
     * Required. Reference to the table to read.
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.TableReference table_reference = 1;</code>
     */
    public com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableReference
        getTableReference() {
      return tableReference_ == null
          ? com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableReference
              .getDefaultInstance()
          : tableReference_;
    }
    /**
     *
     *
     * <pre>
     * Required. Reference to the table to read.
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.TableReference table_reference = 1;</code>
     */
    public com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableReferenceOrBuilder
        getTableReferenceOrBuilder() {
      return getTableReference();
    }

    public static final int PARENT_FIELD_NUMBER = 6;
    private volatile java.lang.Object parent_;
    /**
     *
     *
     * <pre>
     * Required. String of the form "projects/your-project-id" indicating the
     * project this ReadSession is associated with. This is the project that will
     * be billed for usage.
     * </pre>
     *
     * <code>string parent = 6;</code>
     */
    public java.lang.String getParent() {
      java.lang.Object ref = parent_;
      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();
        parent_ = s;
        return s;
      }
    }
    /**
     *
     *
     * <pre>
     * Required. String of the form "projects/your-project-id" indicating the
     * project this ReadSession is associated with. This is the project that will
     * be billed for usage.
     * </pre>
     *
     * <code>string parent = 6;</code>
     */
    public com.google.protobuf.ByteString getParentBytes() {
      java.lang.Object ref = parent_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
        parent_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TABLE_MODIFIERS_FIELD_NUMBER = 2;
    private com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableModifiers
        tableModifiers_;
    /**
     *
     *
     * <pre>
     * Optional. Any modifiers to the Table (e.g. snapshot timestamp).
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.TableModifiers table_modifiers = 2;</code>
     */
    public boolean hasTableModifiers() {
      return tableModifiers_ != null;
    }
    /**
     *
     *
     * <pre>
     * Optional. Any modifiers to the Table (e.g. snapshot timestamp).
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.TableModifiers table_modifiers = 2;</code>
     */
    public com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableModifiers
        getTableModifiers() {
      return tableModifiers_ == null
          ? com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableModifiers
              .getDefaultInstance()
          : tableModifiers_;
    }
    /**
     *
     *
     * <pre>
     * Optional. Any modifiers to the Table (e.g. snapshot timestamp).
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.TableModifiers table_modifiers = 2;</code>
     */
    public com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableModifiersOrBuilder
        getTableModifiersOrBuilder() {
      return getTableModifiers();
    }

    public static final int REQUESTED_STREAMS_FIELD_NUMBER = 3;
    private int requestedStreams_;
    /**
     *
     *
     * <pre>
     * Optional. Initial number of streams. If unset or 0, we will
     * provide a value of streams so as to produce reasonable throughput. Must be
     * non-negative. The number of streams may be lower than the requested number,
     * depending on the amount parallelism that is reasonable for the table and
     * the maximum amount of parallelism allowed by the system.
     * Streams must be read starting from offset 0.
     * </pre>
     *
     * <code>int32 requested_streams = 3;</code>
     */
    public int getRequestedStreams() {
      return requestedStreams_;
    }

    public static final int READ_OPTIONS_FIELD_NUMBER = 4;
    private com.google.cloud.bigquery.storage.v1beta1.ReadOptions.TableReadOptions readOptions_;
    /**
     *
     *
     * <pre>
     * Optional. Read options for this session (e.g. column selection, filters).
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.TableReadOptions read_options = 4;</code>
     */
    public boolean hasReadOptions() {
      return readOptions_ != null;
    }
    /**
     *
     *
     * <pre>
     * Optional. Read options for this session (e.g. column selection, filters).
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.TableReadOptions read_options = 4;</code>
     */
    public com.google.cloud.bigquery.storage.v1beta1.ReadOptions.TableReadOptions getReadOptions() {
      return readOptions_ == null
          ? com.google.cloud.bigquery.storage.v1beta1.ReadOptions.TableReadOptions
              .getDefaultInstance()
          : readOptions_;
    }
    /**
     *
     *
     * <pre>
     * Optional. Read options for this session (e.g. column selection, filters).
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.TableReadOptions read_options = 4;</code>
     */
    public com.google.cloud.bigquery.storage.v1beta1.ReadOptions.TableReadOptionsOrBuilder
        getReadOptionsOrBuilder() {
      return getReadOptions();
    }

    public static final int FORMAT_FIELD_NUMBER = 5;
    private int format_;
    /**
     *
     *
     * <pre>
     * Data output format. Currently default to Avro.
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.DataFormat format = 5;</code>
     */
    public int getFormatValue() {
      return format_;
    }
    /**
     *
     *
     * <pre>
     * Data output format. Currently default to Avro.
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.DataFormat format = 5;</code>
     */
    public com.google.cloud.bigquery.storage.v1beta1.Storage.DataFormat getFormat() {
      @SuppressWarnings("deprecation")
      com.google.cloud.bigquery.storage.v1beta1.Storage.DataFormat result =
          com.google.cloud.bigquery.storage.v1beta1.Storage.DataFormat.valueOf(format_);
      return result == null
          ? com.google.cloud.bigquery.storage.v1beta1.Storage.DataFormat.UNRECOGNIZED
          : result;
    }

    private byte memoizedIsInitialized = -1;

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
      if (tableReference_ != null) {
        output.writeMessage(1, getTableReference());
      }
      if (tableModifiers_ != null) {
        output.writeMessage(2, getTableModifiers());
      }
      if (requestedStreams_ != 0) {
        output.writeInt32(3, requestedStreams_);
      }
      if (readOptions_ != null) {
        output.writeMessage(4, getReadOptions());
      }
      if (format_
          != com.google.cloud.bigquery.storage.v1beta1.Storage.DataFormat.DATA_FORMAT_UNSPECIFIED
              .getNumber()) {
        output.writeEnum(5, format_);
      }
      if (!getParentBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 6, parent_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (tableReference_ != null) {
        size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getTableReference());
      }
      if (tableModifiers_ != null) {
        size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getTableModifiers());
      }
      if (requestedStreams_ != 0) {
        size += com.google.protobuf.CodedOutputStream.computeInt32Size(3, requestedStreams_);
      }
      if (readOptions_ != null) {
        size += com.google.protobuf.CodedOutputStream.computeMessageSize(4, getReadOptions());
      }
      if (format_
          != com.google.cloud.bigquery.storage.v1beta1.Storage.DataFormat.DATA_FORMAT_UNSPECIFIED
              .getNumber()) {
        size += com.google.protobuf.CodedOutputStream.computeEnumSize(5, format_);
      }
      if (!getParentBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(6, parent_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
        return true;
      }
      if (!(obj
          instanceof com.google.cloud.bigquery.storage.v1beta1.Storage.CreateReadSessionRequest)) {
        return super.equals(obj);
      }
      com.google.cloud.bigquery.storage.v1beta1.Storage.CreateReadSessionRequest other =
          (com.google.cloud.bigquery.storage.v1beta1.Storage.CreateReadSessionRequest) obj;

      boolean result = true;
      result = result && (hasTableReference() == other.hasTableReference());
      if (hasTableReference()) {
        result = result && getTableReference().equals(other.getTableReference());
      }
      result = result && getParent().equals(other.getParent());
      result = result && (hasTableModifiers() == other.hasTableModifiers());
      if (hasTableModifiers()) {
        result = result && getTableModifiers().equals(other.getTableModifiers());
      }
      result = result && (getRequestedStreams() == other.getRequestedStreams());
      result = result && (hasReadOptions() == other.hasReadOptions());
      if (hasReadOptions()) {
        result = result && getReadOptions().equals(other.getReadOptions());
      }
      result = result && format_ == other.format_;
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasTableReference()) {
        hash = (37 * hash) + TABLE_REFERENCE_FIELD_NUMBER;
        hash = (53 * hash) + getTableReference().hashCode();
      }
      hash = (37 * hash) + PARENT_FIELD_NUMBER;
      hash = (53 * hash) + getParent().hashCode();
      if (hasTableModifiers()) {
        hash = (37 * hash) + TABLE_MODIFIERS_FIELD_NUMBER;
        hash = (53 * hash) + getTableModifiers().hashCode();
      }
      hash = (37 * hash) + REQUESTED_STREAMS_FIELD_NUMBER;
      hash = (53 * hash) + getRequestedStreams();
      if (hasReadOptions()) {
        hash = (37 * hash) + READ_OPTIONS_FIELD_NUMBER;
        hash = (53 * hash) + getReadOptions().hashCode();
      }
      hash = (37 * hash) + FORMAT_FIELD_NUMBER;
      hash = (53 * hash) + format_;
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.CreateReadSessionRequest
        parseFrom(java.nio.ByteBuffer data)
            throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.CreateReadSessionRequest
        parseFrom(
            java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.CreateReadSessionRequest
        parseFrom(com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.CreateReadSessionRequest
        parseFrom(
            com.google.protobuf.ByteString data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.CreateReadSessionRequest
        parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.CreateReadSessionRequest
        parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.CreateReadSessionRequest
        parseFrom(java.io.InputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.CreateReadSessionRequest
        parseFrom(
            java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
          PARSER, input, extensionRegistry);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.CreateReadSessionRequest
        parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.CreateReadSessionRequest
        parseDelimitedFrom(
            java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(
          PARSER, input, extensionRegistry);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.CreateReadSessionRequest
        parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.CreateReadSessionRequest
        parseFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
          PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() {
      return newBuilder();
    }

    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }

    public static Builder newBuilder(
        com.google.cloud.bigquery.storage.v1beta1.Storage.CreateReadSessionRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }

    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     *
     *
     * <pre>
     * Creates a new read session, which may include additional options such as
     * requested parallelism, projection filters and constraints.
     * </pre>
     *
     * Protobuf type {@code google.cloud.bigquery.storage.v1beta1.CreateReadSessionRequest}
     */
    public static final class Builder
        extends com.google.protobuf.GeneratedMessageV3.Builder<Builder>
        implements
        // @@protoc_insertion_point(builder_implements:google.cloud.bigquery.storage.v1beta1.CreateReadSessionRequest)
        com.google.cloud.bigquery.storage.v1beta1.Storage.CreateReadSessionRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
        return com.google.cloud.bigquery.storage.v1beta1.Storage
            .internal_static_google_cloud_bigquery_storage_v1beta1_CreateReadSessionRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.cloud.bigquery.storage.v1beta1.Storage
            .internal_static_google_cloud_bigquery_storage_v1beta1_CreateReadSessionRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.cloud.bigquery.storage.v1beta1.Storage.CreateReadSessionRequest.class,
                com.google.cloud.bigquery.storage.v1beta1.Storage.CreateReadSessionRequest.Builder
                    .class);
      }

      // Construct using
      // com.google.cloud.bigquery.storage.v1beta1.Storage.CreateReadSessionRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }

      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {}
      }

      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (tableReferenceBuilder_ == null) {
          tableReference_ = null;
        } else {
          tableReference_ = null;
          tableReferenceBuilder_ = null;
        }
        parent_ = "";

        if (tableModifiersBuilder_ == null) {
          tableModifiers_ = null;
        } else {
          tableModifiers_ = null;
          tableModifiersBuilder_ = null;
        }
        requestedStreams_ = 0;

        if (readOptionsBuilder_ == null) {
          readOptions_ = null;
        } else {
          readOptions_ = null;
          readOptionsBuilder_ = null;
        }
        format_ = 0;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
        return com.google.cloud.bigquery.storage.v1beta1.Storage
            .internal_static_google_cloud_bigquery_storage_v1beta1_CreateReadSessionRequest_descriptor;
      }

      @java.lang.Override
      public com.google.cloud.bigquery.storage.v1beta1.Storage.CreateReadSessionRequest
          getDefaultInstanceForType() {
        return com.google.cloud.bigquery.storage.v1beta1.Storage.CreateReadSessionRequest
            .getDefaultInstance();
      }

      @java.lang.Override
      public com.google.cloud.bigquery.storage.v1beta1.Storage.CreateReadSessionRequest build() {
        com.google.cloud.bigquery.storage.v1beta1.Storage.CreateReadSessionRequest result =
            buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.google.cloud.bigquery.storage.v1beta1.Storage.CreateReadSessionRequest
          buildPartial() {
        com.google.cloud.bigquery.storage.v1beta1.Storage.CreateReadSessionRequest result =
            new com.google.cloud.bigquery.storage.v1beta1.Storage.CreateReadSessionRequest(this);
        if (tableReferenceBuilder_ == null) {
          result.tableReference_ = tableReference_;
        } else {
          result.tableReference_ = tableReferenceBuilder_.build();
        }
        result.parent_ = parent_;
        if (tableModifiersBuilder_ == null) {
          result.tableModifiers_ = tableModifiers_;
        } else {
          result.tableModifiers_ = tableModifiersBuilder_.build();
        }
        result.requestedStreams_ = requestedStreams_;
        if (readOptionsBuilder_ == null) {
          result.readOptions_ = readOptions_;
        } else {
          result.readOptions_ = readOptionsBuilder_.build();
        }
        result.format_ = format_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return (Builder) super.clone();
      }

      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }

      @java.lang.Override
      public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }

      @java.lang.Override
      public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }

      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index,
          java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }

      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other
            instanceof com.google.cloud.bigquery.storage.v1beta1.Storage.CreateReadSessionRequest) {
          return mergeFrom(
              (com.google.cloud.bigquery.storage.v1beta1.Storage.CreateReadSessionRequest) other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(
          com.google.cloud.bigquery.storage.v1beta1.Storage.CreateReadSessionRequest other) {
        if (other
            == com.google.cloud.bigquery.storage.v1beta1.Storage.CreateReadSessionRequest
                .getDefaultInstance()) return this;
        if (other.hasTableReference()) {
          mergeTableReference(other.getTableReference());
        }
        if (!other.getParent().isEmpty()) {
          parent_ = other.parent_;
          onChanged();
        }
        if (other.hasTableModifiers()) {
          mergeTableModifiers(other.getTableModifiers());
        }
        if (other.getRequestedStreams() != 0) {
          setRequestedStreams(other.getRequestedStreams());
        }
        if (other.hasReadOptions()) {
          mergeReadOptions(other.getReadOptions());
        }
        if (other.format_ != 0) {
          setFormatValue(other.getFormatValue());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

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

      private com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableReference
          tableReference_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
              com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableReference,
              com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableReference.Builder,
              com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableReferenceOrBuilder>
          tableReferenceBuilder_;
      /**
       *
       *
       * <pre>
       * Required. Reference to the table to read.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.TableReference table_reference = 1;</code>
       */
      public boolean hasTableReference() {
        return tableReferenceBuilder_ != null || tableReference_ != null;
      }
      /**
       *
       *
       * <pre>
       * Required. Reference to the table to read.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.TableReference table_reference = 1;</code>
       */
      public com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableReference
          getTableReference() {
        if (tableReferenceBuilder_ == null) {
          return tableReference_ == null
              ? com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableReference
                  .getDefaultInstance()
              : tableReference_;
        } else {
          return tableReferenceBuilder_.getMessage();
        }
      }
      /**
       *
       *
       * <pre>
       * Required. Reference to the table to read.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.TableReference table_reference = 1;</code>
       */
      public Builder setTableReference(
          com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableReference value) {
        if (tableReferenceBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          tableReference_ = value;
          onChanged();
        } else {
          tableReferenceBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       *
       *
       * <pre>
       * Required. Reference to the table to read.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.TableReference table_reference = 1;</code>
       */
      public Builder setTableReference(
          com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableReference.Builder
              builderForValue) {
        if (tableReferenceBuilder_ == null) {
          tableReference_ = builderForValue.build();
          onChanged();
        } else {
          tableReferenceBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       *
       *
       * <pre>
       * Required. Reference to the table to read.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.TableReference table_reference = 1;</code>
       */
      public Builder mergeTableReference(
          com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableReference value) {
        if (tableReferenceBuilder_ == null) {
          if (tableReference_ != null) {
            tableReference_ =
                com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableReference
                    .newBuilder(tableReference_)
                    .mergeFrom(value)
                    .buildPartial();
          } else {
            tableReference_ = value;
          }
          onChanged();
        } else {
          tableReferenceBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       *
       *
       * <pre>
       * Required. Reference to the table to read.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.TableReference table_reference = 1;</code>
       */
      public Builder clearTableReference() {
        if (tableReferenceBuilder_ == null) {
          tableReference_ = null;
          onChanged();
        } else {
          tableReference_ = null;
          tableReferenceBuilder_ = null;
        }

        return this;
      }
      /**
       *
       *
       * <pre>
       * Required. Reference to the table to read.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.TableReference table_reference = 1;</code>
       */
      public com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableReference.Builder
          getTableReferenceBuilder() {

        onChanged();
        return getTableReferenceFieldBuilder().getBuilder();
      }
      /**
       *
       *
       * <pre>
       * Required. Reference to the table to read.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.TableReference table_reference = 1;</code>
       */
      public com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableReferenceOrBuilder
          getTableReferenceOrBuilder() {
        if (tableReferenceBuilder_ != null) {
          return tableReferenceBuilder_.getMessageOrBuilder();
        } else {
          return tableReference_ == null
              ? com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableReference
                  .getDefaultInstance()
              : tableReference_;
        }
      }
      /**
       *
       *
       * <pre>
       * Required. Reference to the table to read.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.TableReference table_reference = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
              com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableReference,
              com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableReference.Builder,
              com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableReferenceOrBuilder>
          getTableReferenceFieldBuilder() {
        if (tableReferenceBuilder_ == null) {
          tableReferenceBuilder_ =
              new com.google.protobuf.SingleFieldBuilderV3<
                  com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableReference,
                  com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableReference
                      .Builder,
                  com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto
                      .TableReferenceOrBuilder>(
                  getTableReference(), getParentForChildren(), isClean());
          tableReference_ = null;
        }
        return tableReferenceBuilder_;
      }

      private java.lang.Object parent_ = "";
      /**
       *
       *
       * <pre>
       * Required. String of the form "projects/your-project-id" indicating the
       * project this ReadSession is associated with. This is the project that will
       * be billed for usage.
       * </pre>
       *
       * <code>string parent = 6;</code>
       */
      public java.lang.String getParent() {
        java.lang.Object ref = parent_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          parent_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       *
       *
       * <pre>
       * Required. String of the form "projects/your-project-id" indicating the
       * project this ReadSession is associated with. This is the project that will
       * be billed for usage.
       * </pre>
       *
       * <code>string parent = 6;</code>
       */
      public com.google.protobuf.ByteString getParentBytes() {
        java.lang.Object ref = parent_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
          parent_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       *
       *
       * <pre>
       * Required. String of the form "projects/your-project-id" indicating the
       * project this ReadSession is associated with. This is the project that will
       * be billed for usage.
       * </pre>
       *
       * <code>string parent = 6;</code>
       */
      public Builder setParent(java.lang.String value) {
        if (value == null) {
          throw new NullPointerException();
        }

        parent_ = value;
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Required. String of the form "projects/your-project-id" indicating the
       * project this ReadSession is associated with. This is the project that will
       * be billed for usage.
       * </pre>
       *
       * <code>string parent = 6;</code>
       */
      public Builder clearParent() {

        parent_ = getDefaultInstance().getParent();
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Required. String of the form "projects/your-project-id" indicating the
       * project this ReadSession is associated with. This is the project that will
       * be billed for usage.
       * </pre>
       *
       * <code>string parent = 6;</code>
       */
      public Builder setParentBytes(com.google.protobuf.ByteString value) {
        if (value == null) {
          throw new NullPointerException();
        }
        checkByteStringIsUtf8(value);

        parent_ = value;
        onChanged();
        return this;
      }

      private com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableModifiers
          tableModifiers_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
              com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableModifiers,
              com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableModifiers.Builder,
              com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableModifiersOrBuilder>
          tableModifiersBuilder_;
      /**
       *
       *
       * <pre>
       * Optional. Any modifiers to the Table (e.g. snapshot timestamp).
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.TableModifiers table_modifiers = 2;</code>
       */
      public boolean hasTableModifiers() {
        return tableModifiersBuilder_ != null || tableModifiers_ != null;
      }
      /**
       *
       *
       * <pre>
       * Optional. Any modifiers to the Table (e.g. snapshot timestamp).
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.TableModifiers table_modifiers = 2;</code>
       */
      public com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableModifiers
          getTableModifiers() {
        if (tableModifiersBuilder_ == null) {
          return tableModifiers_ == null
              ? com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableModifiers
                  .getDefaultInstance()
              : tableModifiers_;
        } else {
          return tableModifiersBuilder_.getMessage();
        }
      }
      /**
       *
       *
       * <pre>
       * Optional. Any modifiers to the Table (e.g. snapshot timestamp).
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.TableModifiers table_modifiers = 2;</code>
       */
      public Builder setTableModifiers(
          com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableModifiers value) {
        if (tableModifiersBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          tableModifiers_ = value;
          onChanged();
        } else {
          tableModifiersBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       *
       *
       * <pre>
       * Optional. Any modifiers to the Table (e.g. snapshot timestamp).
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.TableModifiers table_modifiers = 2;</code>
       */
      public Builder setTableModifiers(
          com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableModifiers.Builder
              builderForValue) {
        if (tableModifiersBuilder_ == null) {
          tableModifiers_ = builderForValue.build();
          onChanged();
        } else {
          tableModifiersBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       *
       *
       * <pre>
       * Optional. Any modifiers to the Table (e.g. snapshot timestamp).
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.TableModifiers table_modifiers = 2;</code>
       */
      public Builder mergeTableModifiers(
          com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableModifiers value) {
        if (tableModifiersBuilder_ == null) {
          if (tableModifiers_ != null) {
            tableModifiers_ =
                com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableModifiers
                    .newBuilder(tableModifiers_)
                    .mergeFrom(value)
                    .buildPartial();
          } else {
            tableModifiers_ = value;
          }
          onChanged();
        } else {
          tableModifiersBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       *
       *
       * <pre>
       * Optional. Any modifiers to the Table (e.g. snapshot timestamp).
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.TableModifiers table_modifiers = 2;</code>
       */
      public Builder clearTableModifiers() {
        if (tableModifiersBuilder_ == null) {
          tableModifiers_ = null;
          onChanged();
        } else {
          tableModifiers_ = null;
          tableModifiersBuilder_ = null;
        }

        return this;
      }
      /**
       *
       *
       * <pre>
       * Optional. Any modifiers to the Table (e.g. snapshot timestamp).
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.TableModifiers table_modifiers = 2;</code>
       */
      public com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableModifiers.Builder
          getTableModifiersBuilder() {

        onChanged();
        return getTableModifiersFieldBuilder().getBuilder();
      }
      /**
       *
       *
       * <pre>
       * Optional. Any modifiers to the Table (e.g. snapshot timestamp).
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.TableModifiers table_modifiers = 2;</code>
       */
      public com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableModifiersOrBuilder
          getTableModifiersOrBuilder() {
        if (tableModifiersBuilder_ != null) {
          return tableModifiersBuilder_.getMessageOrBuilder();
        } else {
          return tableModifiers_ == null
              ? com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableModifiers
                  .getDefaultInstance()
              : tableModifiers_;
        }
      }
      /**
       *
       *
       * <pre>
       * Optional. Any modifiers to the Table (e.g. snapshot timestamp).
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.TableModifiers table_modifiers = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
              com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableModifiers,
              com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableModifiers.Builder,
              com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableModifiersOrBuilder>
          getTableModifiersFieldBuilder() {
        if (tableModifiersBuilder_ == null) {
          tableModifiersBuilder_ =
              new com.google.protobuf.SingleFieldBuilderV3<
                  com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableModifiers,
                  com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.TableModifiers
                      .Builder,
                  com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto
                      .TableModifiersOrBuilder>(
                  getTableModifiers(), getParentForChildren(), isClean());
          tableModifiers_ = null;
        }
        return tableModifiersBuilder_;
      }

      private int requestedStreams_;
      /**
       *
       *
       * <pre>
       * Optional. Initial number of streams. If unset or 0, we will
       * provide a value of streams so as to produce reasonable throughput. Must be
       * non-negative. The number of streams may be lower than the requested number,
       * depending on the amount parallelism that is reasonable for the table and
       * the maximum amount of parallelism allowed by the system.
       * Streams must be read starting from offset 0.
       * </pre>
       *
       * <code>int32 requested_streams = 3;</code>
       */
      public int getRequestedStreams() {
        return requestedStreams_;
      }
      /**
       *
       *
       * <pre>
       * Optional. Initial number of streams. If unset or 0, we will
       * provide a value of streams so as to produce reasonable throughput. Must be
       * non-negative. The number of streams may be lower than the requested number,
       * depending on the amount parallelism that is reasonable for the table and
       * the maximum amount of parallelism allowed by the system.
       * Streams must be read starting from offset 0.
       * </pre>
       *
       * <code>int32 requested_streams = 3;</code>
       */
      public Builder setRequestedStreams(int value) {

        requestedStreams_ = value;
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Optional. Initial number of streams. If unset or 0, we will
       * provide a value of streams so as to produce reasonable throughput. Must be
       * non-negative. The number of streams may be lower than the requested number,
       * depending on the amount parallelism that is reasonable for the table and
       * the maximum amount of parallelism allowed by the system.
       * Streams must be read starting from offset 0.
       * </pre>
       *
       * <code>int32 requested_streams = 3;</code>
       */
      public Builder clearRequestedStreams() {

        requestedStreams_ = 0;
        onChanged();
        return this;
      }

      private com.google.cloud.bigquery.storage.v1beta1.ReadOptions.TableReadOptions readOptions_ =
          null;
      private com.google.protobuf.SingleFieldBuilderV3<
              com.google.cloud.bigquery.storage.v1beta1.ReadOptions.TableReadOptions,
              com.google.cloud.bigquery.storage.v1beta1.ReadOptions.TableReadOptions.Builder,
              com.google.cloud.bigquery.storage.v1beta1.ReadOptions.TableReadOptionsOrBuilder>
          readOptionsBuilder_;
      /**
       *
       *
       * <pre>
       * Optional. Read options for this session (e.g. column selection, filters).
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.TableReadOptions read_options = 4;</code>
       */
      public boolean hasReadOptions() {
        return readOptionsBuilder_ != null || readOptions_ != null;
      }
      /**
       *
       *
       * <pre>
       * Optional. Read options for this session (e.g. column selection, filters).
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.TableReadOptions read_options = 4;</code>
       */
      public com.google.cloud.bigquery.storage.v1beta1.ReadOptions.TableReadOptions
          getReadOptions() {
        if (readOptionsBuilder_ == null) {
          return readOptions_ == null
              ? com.google.cloud.bigquery.storage.v1beta1.ReadOptions.TableReadOptions
                  .getDefaultInstance()
              : readOptions_;
        } else {
          return readOptionsBuilder_.getMessage();
        }
      }
      /**
       *
       *
       * <pre>
       * Optional. Read options for this session (e.g. column selection, filters).
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.TableReadOptions read_options = 4;</code>
       */
      public Builder setReadOptions(
          com.google.cloud.bigquery.storage.v1beta1.ReadOptions.TableReadOptions value) {
        if (readOptionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          readOptions_ = value;
          onChanged();
        } else {
          readOptionsBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       *
       *
       * <pre>
       * Optional. Read options for this session (e.g. column selection, filters).
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.TableReadOptions read_options = 4;</code>
       */
      public Builder setReadOptions(
          com.google.cloud.bigquery.storage.v1beta1.ReadOptions.TableReadOptions.Builder
              builderForValue) {
        if (readOptionsBuilder_ == null) {
          readOptions_ = builderForValue.build();
          onChanged();
        } else {
          readOptionsBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       *
       *
       * <pre>
       * Optional. Read options for this session (e.g. column selection, filters).
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.TableReadOptions read_options = 4;</code>
       */
      public Builder mergeReadOptions(
          com.google.cloud.bigquery.storage.v1beta1.ReadOptions.TableReadOptions value) {
        if (readOptionsBuilder_ == null) {
          if (readOptions_ != null) {
            readOptions_ =
                com.google.cloud.bigquery.storage.v1beta1.ReadOptions.TableReadOptions.newBuilder(
                        readOptions_)
                    .mergeFrom(value)
                    .buildPartial();
          } else {
            readOptions_ = value;
          }
          onChanged();
        } else {
          readOptionsBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       *
       *
       * <pre>
       * Optional. Read options for this session (e.g. column selection, filters).
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.TableReadOptions read_options = 4;</code>
       */
      public Builder clearReadOptions() {
        if (readOptionsBuilder_ == null) {
          readOptions_ = null;
          onChanged();
        } else {
          readOptions_ = null;
          readOptionsBuilder_ = null;
        }

        return this;
      }
      /**
       *
       *
       * <pre>
       * Optional. Read options for this session (e.g. column selection, filters).
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.TableReadOptions read_options = 4;</code>
       */
      public com.google.cloud.bigquery.storage.v1beta1.ReadOptions.TableReadOptions.Builder
          getReadOptionsBuilder() {

        onChanged();
        return getReadOptionsFieldBuilder().getBuilder();
      }
      /**
       *
       *
       * <pre>
       * Optional. Read options for this session (e.g. column selection, filters).
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.TableReadOptions read_options = 4;</code>
       */
      public com.google.cloud.bigquery.storage.v1beta1.ReadOptions.TableReadOptionsOrBuilder
          getReadOptionsOrBuilder() {
        if (readOptionsBuilder_ != null) {
          return readOptionsBuilder_.getMessageOrBuilder();
        } else {
          return readOptions_ == null
              ? com.google.cloud.bigquery.storage.v1beta1.ReadOptions.TableReadOptions
                  .getDefaultInstance()
              : readOptions_;
        }
      }
      /**
       *
       *
       * <pre>
       * Optional. Read options for this session (e.g. column selection, filters).
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.TableReadOptions read_options = 4;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
              com.google.cloud.bigquery.storage.v1beta1.ReadOptions.TableReadOptions,
              com.google.cloud.bigquery.storage.v1beta1.ReadOptions.TableReadOptions.Builder,
              com.google.cloud.bigquery.storage.v1beta1.ReadOptions.TableReadOptionsOrBuilder>
          getReadOptionsFieldBuilder() {
        if (readOptionsBuilder_ == null) {
          readOptionsBuilder_ =
              new com.google.protobuf.SingleFieldBuilderV3<
                  com.google.cloud.bigquery.storage.v1beta1.ReadOptions.TableReadOptions,
                  com.google.cloud.bigquery.storage.v1beta1.ReadOptions.TableReadOptions.Builder,
                  com.google.cloud.bigquery.storage.v1beta1.ReadOptions.TableReadOptionsOrBuilder>(
                  getReadOptions(), getParentForChildren(), isClean());
          readOptions_ = null;
        }
        return readOptionsBuilder_;
      }

      private int format_ = 0;
      /**
       *
       *
       * <pre>
       * Data output format. Currently default to Avro.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.DataFormat format = 5;</code>
       */
      public int getFormatValue() {
        return format_;
      }
      /**
       *
       *
       * <pre>
       * Data output format. Currently default to Avro.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.DataFormat format = 5;</code>
       */
      public Builder setFormatValue(int value) {
        format_ = value;
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Data output format. Currently default to Avro.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.DataFormat format = 5;</code>
       */
      public com.google.cloud.bigquery.storage.v1beta1.Storage.DataFormat getFormat() {
        @SuppressWarnings("deprecation")
        com.google.cloud.bigquery.storage.v1beta1.Storage.DataFormat result =
            com.google.cloud.bigquery.storage.v1beta1.Storage.DataFormat.valueOf(format_);
        return result == null
            ? com.google.cloud.bigquery.storage.v1beta1.Storage.DataFormat.UNRECOGNIZED
            : result;
      }
      /**
       *
       *
       * <pre>
       * Data output format. Currently default to Avro.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.DataFormat format = 5;</code>
       */
      public Builder setFormat(com.google.cloud.bigquery.storage.v1beta1.Storage.DataFormat value) {
        if (value == null) {
          throw new NullPointerException();
        }

        format_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Data output format. Currently default to Avro.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.DataFormat format = 5;</code>
       */
      public Builder clearFormat() {

        format_ = 0;
        onChanged();
        return this;
      }

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

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

      // @@protoc_insertion_point(builder_scope:google.cloud.bigquery.storage.v1beta1.CreateReadSessionRequest)
    }

    // @@protoc_insertion_point(class_scope:google.cloud.bigquery.storage.v1beta1.CreateReadSessionRequest)
    private static final com.google.cloud.bigquery.storage.v1beta1.Storage.CreateReadSessionRequest
        DEFAULT_INSTANCE;

    static {
      DEFAULT_INSTANCE =
          new com.google.cloud.bigquery.storage.v1beta1.Storage.CreateReadSessionRequest();
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.CreateReadSessionRequest
        getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.google.cloud.bigquery.storage.v1beta1.Storage.CreateReadSessionRequest
        getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }
  }

  public interface ReadRowsRequestOrBuilder
      extends
      // @@protoc_insertion_point(interface_extends:google.cloud.bigquery.storage.v1beta1.ReadRowsRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     *
     *
     * <pre>
     * Required. Identifier of the position in the stream to start reading from.
     * The offset requested must be less than the last row read from ReadRows.
     * Requesting a larger offset is undefined.
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.StreamPosition read_position = 1;</code>
     */
    boolean hasReadPosition();
    /**
     *
     *
     * <pre>
     * Required. Identifier of the position in the stream to start reading from.
     * The offset requested must be less than the last row read from ReadRows.
     * Requesting a larger offset is undefined.
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.StreamPosition read_position = 1;</code>
     */
    com.google.cloud.bigquery.storage.v1beta1.Storage.StreamPosition getReadPosition();
    /**
     *
     *
     * <pre>
     * Required. Identifier of the position in the stream to start reading from.
     * The offset requested must be less than the last row read from ReadRows.
     * Requesting a larger offset is undefined.
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.StreamPosition read_position = 1;</code>
     */
    com.google.cloud.bigquery.storage.v1beta1.Storage.StreamPositionOrBuilder
        getReadPositionOrBuilder();
  }
  /**
   *
   *
   * <pre>
   * Requesting row data via `ReadRows` must provide Stream position information.
   * </pre>
   *
   * Protobuf type {@code google.cloud.bigquery.storage.v1beta1.ReadRowsRequest}
   */
  public static final class ReadRowsRequest extends com.google.protobuf.GeneratedMessageV3
      implements
      // @@protoc_insertion_point(message_implements:google.cloud.bigquery.storage.v1beta1.ReadRowsRequest)
      ReadRowsRequestOrBuilder {
    private static final long serialVersionUID = 0L;
    // Use ReadRowsRequest.newBuilder() to construct.
    private ReadRowsRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }

    private ReadRowsRequest() {}

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
      return this.unknownFields;
    }

    private ReadRowsRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10:
              {
                com.google.cloud.bigquery.storage.v1beta1.Storage.StreamPosition.Builder
                    subBuilder = null;
                if (readPosition_ != null) {
                  subBuilder = readPosition_.toBuilder();
                }
                readPosition_ =
                    input.readMessage(
                        com.google.cloud.bigquery.storage.v1beta1.Storage.StreamPosition.parser(),
                        extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(readPosition_);
                  readPosition_ = subBuilder.buildPartial();
                }

                break;
              }
            default:
              {
                if (!parseUnknownFieldProto3(input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }

    public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
      return com.google.cloud.bigquery.storage.v1beta1.Storage
          .internal_static_google_cloud_bigquery_storage_v1beta1_ReadRowsRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.cloud.bigquery.storage.v1beta1.Storage
          .internal_static_google_cloud_bigquery_storage_v1beta1_ReadRowsRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.cloud.bigquery.storage.v1beta1.Storage.ReadRowsRequest.class,
              com.google.cloud.bigquery.storage.v1beta1.Storage.ReadRowsRequest.Builder.class);
    }

    public static final int READ_POSITION_FIELD_NUMBER = 1;
    private com.google.cloud.bigquery.storage.v1beta1.Storage.StreamPosition readPosition_;
    /**
     *
     *
     * <pre>
     * Required. Identifier of the position in the stream to start reading from.
     * The offset requested must be less than the last row read from ReadRows.
     * Requesting a larger offset is undefined.
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.StreamPosition read_position = 1;</code>
     */
    public boolean hasReadPosition() {
      return readPosition_ != null;
    }
    /**
     *
     *
     * <pre>
     * Required. Identifier of the position in the stream to start reading from.
     * The offset requested must be less than the last row read from ReadRows.
     * Requesting a larger offset is undefined.
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.StreamPosition read_position = 1;</code>
     */
    public com.google.cloud.bigquery.storage.v1beta1.Storage.StreamPosition getReadPosition() {
      return readPosition_ == null
          ? com.google.cloud.bigquery.storage.v1beta1.Storage.StreamPosition.getDefaultInstance()
          : readPosition_;
    }
    /**
     *
     *
     * <pre>
     * Required. Identifier of the position in the stream to start reading from.
     * The offset requested must be less than the last row read from ReadRows.
     * Requesting a larger offset is undefined.
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.StreamPosition read_position = 1;</code>
     */
    public com.google.cloud.bigquery.storage.v1beta1.Storage.StreamPositionOrBuilder
        getReadPositionOrBuilder() {
      return getReadPosition();
    }

    private byte memoizedIsInitialized = -1;

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

      memoizedIsInitialized = 1;
      return true;
    }

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

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

      size = 0;
      if (readPosition_ != null) {
        size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getReadPosition());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
        return true;
      }
      if (!(obj instanceof com.google.cloud.bigquery.storage.v1beta1.Storage.ReadRowsRequest)) {
        return super.equals(obj);
      }
      com.google.cloud.bigquery.storage.v1beta1.Storage.ReadRowsRequest other =
          (com.google.cloud.bigquery.storage.v1beta1.Storage.ReadRowsRequest) obj;

      boolean result = true;
      result = result && (hasReadPosition() == other.hasReadPosition());
      if (hasReadPosition()) {
        result = result && getReadPosition().equals(other.getReadPosition());
      }
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

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

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.ReadRowsRequest parseFrom(
        java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.ReadRowsRequest parseFrom(
        java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.ReadRowsRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.ReadRowsRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.ReadRowsRequest parseFrom(
        byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.ReadRowsRequest parseFrom(
        byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.ReadRowsRequest parseFrom(
        java.io.InputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.ReadRowsRequest parseFrom(
        java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
          PARSER, input, extensionRegistry);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.ReadRowsRequest
        parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.ReadRowsRequest
        parseDelimitedFrom(
            java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(
          PARSER, input, extensionRegistry);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.ReadRowsRequest parseFrom(
        com.google.protobuf.CodedInputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.ReadRowsRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
          PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() {
      return newBuilder();
    }

    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }

    public static Builder newBuilder(
        com.google.cloud.bigquery.storage.v1beta1.Storage.ReadRowsRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }

    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     *
     *
     * <pre>
     * Requesting row data via `ReadRows` must provide Stream position information.
     * </pre>
     *
     * Protobuf type {@code google.cloud.bigquery.storage.v1beta1.ReadRowsRequest}
     */
    public static final class Builder
        extends com.google.protobuf.GeneratedMessageV3.Builder<Builder>
        implements
        // @@protoc_insertion_point(builder_implements:google.cloud.bigquery.storage.v1beta1.ReadRowsRequest)
        com.google.cloud.bigquery.storage.v1beta1.Storage.ReadRowsRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
        return com.google.cloud.bigquery.storage.v1beta1.Storage
            .internal_static_google_cloud_bigquery_storage_v1beta1_ReadRowsRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.cloud.bigquery.storage.v1beta1.Storage
            .internal_static_google_cloud_bigquery_storage_v1beta1_ReadRowsRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.cloud.bigquery.storage.v1beta1.Storage.ReadRowsRequest.class,
                com.google.cloud.bigquery.storage.v1beta1.Storage.ReadRowsRequest.Builder.class);
      }

      // Construct using
      // com.google.cloud.bigquery.storage.v1beta1.Storage.ReadRowsRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }

      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {}
      }

      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (readPositionBuilder_ == null) {
          readPosition_ = null;
        } else {
          readPosition_ = null;
          readPositionBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
        return com.google.cloud.bigquery.storage.v1beta1.Storage
            .internal_static_google_cloud_bigquery_storage_v1beta1_ReadRowsRequest_descriptor;
      }

      @java.lang.Override
      public com.google.cloud.bigquery.storage.v1beta1.Storage.ReadRowsRequest
          getDefaultInstanceForType() {
        return com.google.cloud.bigquery.storage.v1beta1.Storage.ReadRowsRequest
            .getDefaultInstance();
      }

      @java.lang.Override
      public com.google.cloud.bigquery.storage.v1beta1.Storage.ReadRowsRequest build() {
        com.google.cloud.bigquery.storage.v1beta1.Storage.ReadRowsRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.google.cloud.bigquery.storage.v1beta1.Storage.ReadRowsRequest buildPartial() {
        com.google.cloud.bigquery.storage.v1beta1.Storage.ReadRowsRequest result =
            new com.google.cloud.bigquery.storage.v1beta1.Storage.ReadRowsRequest(this);
        if (readPositionBuilder_ == null) {
          result.readPosition_ = readPosition_;
        } else {
          result.readPosition_ = readPositionBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return (Builder) super.clone();
      }

      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }

      @java.lang.Override
      public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }

      @java.lang.Override
      public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }

      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index,
          java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }

      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.cloud.bigquery.storage.v1beta1.Storage.ReadRowsRequest) {
          return mergeFrom(
              (com.google.cloud.bigquery.storage.v1beta1.Storage.ReadRowsRequest) other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(
          com.google.cloud.bigquery.storage.v1beta1.Storage.ReadRowsRequest other) {
        if (other
            == com.google.cloud.bigquery.storage.v1beta1.Storage.ReadRowsRequest
                .getDefaultInstance()) return this;
        if (other.hasReadPosition()) {
          mergeReadPosition(other.getReadPosition());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

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

      private com.google.cloud.bigquery.storage.v1beta1.Storage.StreamPosition readPosition_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
              com.google.cloud.bigquery.storage.v1beta1.Storage.StreamPosition,
              com.google.cloud.bigquery.storage.v1beta1.Storage.StreamPosition.Builder,
              com.google.cloud.bigquery.storage.v1beta1.Storage.StreamPositionOrBuilder>
          readPositionBuilder_;
      /**
       *
       *
       * <pre>
       * Required. Identifier of the position in the stream to start reading from.
       * The offset requested must be less than the last row read from ReadRows.
       * Requesting a larger offset is undefined.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.StreamPosition read_position = 1;</code>
       */
      public boolean hasReadPosition() {
        return readPositionBuilder_ != null || readPosition_ != null;
      }
      /**
       *
       *
       * <pre>
       * Required. Identifier of the position in the stream to start reading from.
       * The offset requested must be less than the last row read from ReadRows.
       * Requesting a larger offset is undefined.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.StreamPosition read_position = 1;</code>
       */
      public com.google.cloud.bigquery.storage.v1beta1.Storage.StreamPosition getReadPosition() {
        if (readPositionBuilder_ == null) {
          return readPosition_ == null
              ? com.google.cloud.bigquery.storage.v1beta1.Storage.StreamPosition
                  .getDefaultInstance()
              : readPosition_;
        } else {
          return readPositionBuilder_.getMessage();
        }
      }
      /**
       *
       *
       * <pre>
       * Required. Identifier of the position in the stream to start reading from.
       * The offset requested must be less than the last row read from ReadRows.
       * Requesting a larger offset is undefined.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.StreamPosition read_position = 1;</code>
       */
      public Builder setReadPosition(
          com.google.cloud.bigquery.storage.v1beta1.Storage.StreamPosition value) {
        if (readPositionBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          readPosition_ = value;
          onChanged();
        } else {
          readPositionBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       *
       *
       * <pre>
       * Required. Identifier of the position in the stream to start reading from.
       * The offset requested must be less than the last row read from ReadRows.
       * Requesting a larger offset is undefined.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.StreamPosition read_position = 1;</code>
       */
      public Builder setReadPosition(
          com.google.cloud.bigquery.storage.v1beta1.Storage.StreamPosition.Builder
              builderForValue) {
        if (readPositionBuilder_ == null) {
          readPosition_ = builderForValue.build();
          onChanged();
        } else {
          readPositionBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       *
       *
       * <pre>
       * Required. Identifier of the position in the stream to start reading from.
       * The offset requested must be less than the last row read from ReadRows.
       * Requesting a larger offset is undefined.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.StreamPosition read_position = 1;</code>
       */
      public Builder mergeReadPosition(
          com.google.cloud.bigquery.storage.v1beta1.Storage.StreamPosition value) {
        if (readPositionBuilder_ == null) {
          if (readPosition_ != null) {
            readPosition_ =
                com.google.cloud.bigquery.storage.v1beta1.Storage.StreamPosition.newBuilder(
                        readPosition_)
                    .mergeFrom(value)
                    .buildPartial();
          } else {
            readPosition_ = value;
          }
          onChanged();
        } else {
          readPositionBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       *
       *
       * <pre>
       * Required. Identifier of the position in the stream to start reading from.
       * The offset requested must be less than the last row read from ReadRows.
       * Requesting a larger offset is undefined.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.StreamPosition read_position = 1;</code>
       */
      public Builder clearReadPosition() {
        if (readPositionBuilder_ == null) {
          readPosition_ = null;
          onChanged();
        } else {
          readPosition_ = null;
          readPositionBuilder_ = null;
        }

        return this;
      }
      /**
       *
       *
       * <pre>
       * Required. Identifier of the position in the stream to start reading from.
       * The offset requested must be less than the last row read from ReadRows.
       * Requesting a larger offset is undefined.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.StreamPosition read_position = 1;</code>
       */
      public com.google.cloud.bigquery.storage.v1beta1.Storage.StreamPosition.Builder
          getReadPositionBuilder() {

        onChanged();
        return getReadPositionFieldBuilder().getBuilder();
      }
      /**
       *
       *
       * <pre>
       * Required. Identifier of the position in the stream to start reading from.
       * The offset requested must be less than the last row read from ReadRows.
       * Requesting a larger offset is undefined.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.StreamPosition read_position = 1;</code>
       */
      public com.google.cloud.bigquery.storage.v1beta1.Storage.StreamPositionOrBuilder
          getReadPositionOrBuilder() {
        if (readPositionBuilder_ != null) {
          return readPositionBuilder_.getMessageOrBuilder();
        } else {
          return readPosition_ == null
              ? com.google.cloud.bigquery.storage.v1beta1.Storage.StreamPosition
                  .getDefaultInstance()
              : readPosition_;
        }
      }
      /**
       *
       *
       * <pre>
       * Required. Identifier of the position in the stream to start reading from.
       * The offset requested must be less than the last row read from ReadRows.
       * Requesting a larger offset is undefined.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.StreamPosition read_position = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
              com.google.cloud.bigquery.storage.v1beta1.Storage.StreamPosition,
              com.google.cloud.bigquery.storage.v1beta1.Storage.StreamPosition.Builder,
              com.google.cloud.bigquery.storage.v1beta1.Storage.StreamPositionOrBuilder>
          getReadPositionFieldBuilder() {
        if (readPositionBuilder_ == null) {
          readPositionBuilder_ =
              new com.google.protobuf.SingleFieldBuilderV3<
                  com.google.cloud.bigquery.storage.v1beta1.Storage.StreamPosition,
                  com.google.cloud.bigquery.storage.v1beta1.Storage.StreamPosition.Builder,
                  com.google.cloud.bigquery.storage.v1beta1.Storage.StreamPositionOrBuilder>(
                  getReadPosition(), getParentForChildren(), isClean());
          readPosition_ = null;
        }
        return readPositionBuilder_;
      }

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

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

      // @@protoc_insertion_point(builder_scope:google.cloud.bigquery.storage.v1beta1.ReadRowsRequest)
    }

    // @@protoc_insertion_point(class_scope:google.cloud.bigquery.storage.v1beta1.ReadRowsRequest)
    private static final com.google.cloud.bigquery.storage.v1beta1.Storage.ReadRowsRequest
        DEFAULT_INSTANCE;

    static {
      DEFAULT_INSTANCE = new com.google.cloud.bigquery.storage.v1beta1.Storage.ReadRowsRequest();
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.ReadRowsRequest
        getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.google.cloud.bigquery.storage.v1beta1.Storage.ReadRowsRequest
        getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }
  }

  public interface StreamStatusOrBuilder
      extends
      // @@protoc_insertion_point(interface_extends:google.cloud.bigquery.storage.v1beta1.StreamStatus)
      com.google.protobuf.MessageOrBuilder {

    /**
     *
     *
     * <pre>
     * Number of estimated rows in the current stream. May change over time as
     * different readers in the stream progress at rates which are relatively fast
     * or slow.
     * </pre>
     *
     * <code>int64 estimated_row_count = 1;</code>
     */
    long getEstimatedRowCount();
  }
  /**
   *
   *
   * <pre>
   * Progress information for a given Stream.
   * </pre>
   *
   * Protobuf type {@code google.cloud.bigquery.storage.v1beta1.StreamStatus}
   */
  public static final class StreamStatus extends com.google.protobuf.GeneratedMessageV3
      implements
      // @@protoc_insertion_point(message_implements:google.cloud.bigquery.storage.v1beta1.StreamStatus)
      StreamStatusOrBuilder {
    private static final long serialVersionUID = 0L;
    // Use StreamStatus.newBuilder() to construct.
    private StreamStatus(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }

    private StreamStatus() {
      estimatedRowCount_ = 0L;
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
      return this.unknownFields;
    }

    private StreamStatus(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 8:
              {
                estimatedRowCount_ = input.readInt64();
                break;
              }
            default:
              {
                if (!parseUnknownFieldProto3(input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }

    public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
      return com.google.cloud.bigquery.storage.v1beta1.Storage
          .internal_static_google_cloud_bigquery_storage_v1beta1_StreamStatus_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.cloud.bigquery.storage.v1beta1.Storage
          .internal_static_google_cloud_bigquery_storage_v1beta1_StreamStatus_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.cloud.bigquery.storage.v1beta1.Storage.StreamStatus.class,
              com.google.cloud.bigquery.storage.v1beta1.Storage.StreamStatus.Builder.class);
    }

    public static final int ESTIMATED_ROW_COUNT_FIELD_NUMBER = 1;
    private long estimatedRowCount_;
    /**
     *
     *
     * <pre>
     * Number of estimated rows in the current stream. May change over time as
     * different readers in the stream progress at rates which are relatively fast
     * or slow.
     * </pre>
     *
     * <code>int64 estimated_row_count = 1;</code>
     */
    public long getEstimatedRowCount() {
      return estimatedRowCount_;
    }

    private byte memoizedIsInitialized = -1;

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
      if (estimatedRowCount_ != 0L) {
        output.writeInt64(1, estimatedRowCount_);
      }
      unknownFields.writeTo(output);
    }

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

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

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
        return true;
      }
      if (!(obj instanceof com.google.cloud.bigquery.storage.v1beta1.Storage.StreamStatus)) {
        return super.equals(obj);
      }
      com.google.cloud.bigquery.storage.v1beta1.Storage.StreamStatus other =
          (com.google.cloud.bigquery.storage.v1beta1.Storage.StreamStatus) obj;

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

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

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.StreamStatus parseFrom(
        java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.StreamStatus parseFrom(
        java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.StreamStatus parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.StreamStatus parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.StreamStatus parseFrom(
        byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.StreamStatus parseFrom(
        byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.StreamStatus parseFrom(
        java.io.InputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.StreamStatus parseFrom(
        java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
          PARSER, input, extensionRegistry);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.StreamStatus parseDelimitedFrom(
        java.io.InputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.StreamStatus parseDelimitedFrom(
        java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(
          PARSER, input, extensionRegistry);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.StreamStatus parseFrom(
        com.google.protobuf.CodedInputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.StreamStatus parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
          PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() {
      return newBuilder();
    }

    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }

    public static Builder newBuilder(
        com.google.cloud.bigquery.storage.v1beta1.Storage.StreamStatus prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }

    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     *
     *
     * <pre>
     * Progress information for a given Stream.
     * </pre>
     *
     * Protobuf type {@code google.cloud.bigquery.storage.v1beta1.StreamStatus}
     */
    public static final class Builder
        extends com.google.protobuf.GeneratedMessageV3.Builder<Builder>
        implements
        // @@protoc_insertion_point(builder_implements:google.cloud.bigquery.storage.v1beta1.StreamStatus)
        com.google.cloud.bigquery.storage.v1beta1.Storage.StreamStatusOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
        return com.google.cloud.bigquery.storage.v1beta1.Storage
            .internal_static_google_cloud_bigquery_storage_v1beta1_StreamStatus_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.cloud.bigquery.storage.v1beta1.Storage
            .internal_static_google_cloud_bigquery_storage_v1beta1_StreamStatus_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.cloud.bigquery.storage.v1beta1.Storage.StreamStatus.class,
                com.google.cloud.bigquery.storage.v1beta1.Storage.StreamStatus.Builder.class);
      }

      // Construct using com.google.cloud.bigquery.storage.v1beta1.Storage.StreamStatus.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }

      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {}
      }

      @java.lang.Override
      public Builder clear() {
        super.clear();
        estimatedRowCount_ = 0L;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
        return com.google.cloud.bigquery.storage.v1beta1.Storage
            .internal_static_google_cloud_bigquery_storage_v1beta1_StreamStatus_descriptor;
      }

      @java.lang.Override
      public com.google.cloud.bigquery.storage.v1beta1.Storage.StreamStatus
          getDefaultInstanceForType() {
        return com.google.cloud.bigquery.storage.v1beta1.Storage.StreamStatus.getDefaultInstance();
      }

      @java.lang.Override
      public com.google.cloud.bigquery.storage.v1beta1.Storage.StreamStatus build() {
        com.google.cloud.bigquery.storage.v1beta1.Storage.StreamStatus result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.google.cloud.bigquery.storage.v1beta1.Storage.StreamStatus buildPartial() {
        com.google.cloud.bigquery.storage.v1beta1.Storage.StreamStatus result =
            new com.google.cloud.bigquery.storage.v1beta1.Storage.StreamStatus(this);
        result.estimatedRowCount_ = estimatedRowCount_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return (Builder) super.clone();
      }

      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }

      @java.lang.Override
      public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }

      @java.lang.Override
      public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }

      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index,
          java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }

      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.cloud.bigquery.storage.v1beta1.Storage.StreamStatus) {
          return mergeFrom((com.google.cloud.bigquery.storage.v1beta1.Storage.StreamStatus) other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(
          com.google.cloud.bigquery.storage.v1beta1.Storage.StreamStatus other) {
        if (other
            == com.google.cloud.bigquery.storage.v1beta1.Storage.StreamStatus.getDefaultInstance())
          return this;
        if (other.getEstimatedRowCount() != 0L) {
          setEstimatedRowCount(other.getEstimatedRowCount());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

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

      private long estimatedRowCount_;
      /**
       *
       *
       * <pre>
       * Number of estimated rows in the current stream. May change over time as
       * different readers in the stream progress at rates which are relatively fast
       * or slow.
       * </pre>
       *
       * <code>int64 estimated_row_count = 1;</code>
       */
      public long getEstimatedRowCount() {
        return estimatedRowCount_;
      }
      /**
       *
       *
       * <pre>
       * Number of estimated rows in the current stream. May change over time as
       * different readers in the stream progress at rates which are relatively fast
       * or slow.
       * </pre>
       *
       * <code>int64 estimated_row_count = 1;</code>
       */
      public Builder setEstimatedRowCount(long value) {

        estimatedRowCount_ = value;
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Number of estimated rows in the current stream. May change over time as
       * different readers in the stream progress at rates which are relatively fast
       * or slow.
       * </pre>
       *
       * <code>int64 estimated_row_count = 1;</code>
       */
      public Builder clearEstimatedRowCount() {

        estimatedRowCount_ = 0L;
        onChanged();
        return this;
      }

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

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

      // @@protoc_insertion_point(builder_scope:google.cloud.bigquery.storage.v1beta1.StreamStatus)
    }

    // @@protoc_insertion_point(class_scope:google.cloud.bigquery.storage.v1beta1.StreamStatus)
    private static final com.google.cloud.bigquery.storage.v1beta1.Storage.StreamStatus
        DEFAULT_INSTANCE;

    static {
      DEFAULT_INSTANCE = new com.google.cloud.bigquery.storage.v1beta1.Storage.StreamStatus();
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.StreamStatus
        getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.google.cloud.bigquery.storage.v1beta1.Storage.StreamStatus
        getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }
  }

  public interface ThrottleStatusOrBuilder
      extends
      // @@protoc_insertion_point(interface_extends:google.cloud.bigquery.storage.v1beta1.ThrottleStatus)
      com.google.protobuf.MessageOrBuilder {

    /**
     *
     *
     * <pre>
     * How much this connection is being throttled.
     * 0 is no throttling, 100 is completely throttled.
     * </pre>
     *
     * <code>int32 throttle_percent = 1;</code>
     */
    int getThrottlePercent();
  }
  /**
   *
   *
   * <pre>
   * Information on if the current connection is being throttled.
   * </pre>
   *
   * Protobuf type {@code google.cloud.bigquery.storage.v1beta1.ThrottleStatus}
   */
  public static final class ThrottleStatus extends com.google.protobuf.GeneratedMessageV3
      implements
      // @@protoc_insertion_point(message_implements:google.cloud.bigquery.storage.v1beta1.ThrottleStatus)
      ThrottleStatusOrBuilder {
    private static final long serialVersionUID = 0L;
    // Use ThrottleStatus.newBuilder() to construct.
    private ThrottleStatus(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }

    private ThrottleStatus() {
      throttlePercent_ = 0;
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
      return this.unknownFields;
    }

    private ThrottleStatus(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 8:
              {
                throttlePercent_ = input.readInt32();
                break;
              }
            default:
              {
                if (!parseUnknownFieldProto3(input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }

    public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
      return com.google.cloud.bigquery.storage.v1beta1.Storage
          .internal_static_google_cloud_bigquery_storage_v1beta1_ThrottleStatus_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.cloud.bigquery.storage.v1beta1.Storage
          .internal_static_google_cloud_bigquery_storage_v1beta1_ThrottleStatus_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.cloud.bigquery.storage.v1beta1.Storage.ThrottleStatus.class,
              com.google.cloud.bigquery.storage.v1beta1.Storage.ThrottleStatus.Builder.class);
    }

    public static final int THROTTLE_PERCENT_FIELD_NUMBER = 1;
    private int throttlePercent_;
    /**
     *
     *
     * <pre>
     * How much this connection is being throttled.
     * 0 is no throttling, 100 is completely throttled.
     * </pre>
     *
     * <code>int32 throttle_percent = 1;</code>
     */
    public int getThrottlePercent() {
      return throttlePercent_;
    }

    private byte memoizedIsInitialized = -1;

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
      if (throttlePercent_ != 0) {
        output.writeInt32(1, throttlePercent_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (throttlePercent_ != 0) {
        size += com.google.protobuf.CodedOutputStream.computeInt32Size(1, throttlePercent_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
        return true;
      }
      if (!(obj instanceof com.google.cloud.bigquery.storage.v1beta1.Storage.ThrottleStatus)) {
        return super.equals(obj);
      }
      com.google.cloud.bigquery.storage.v1beta1.Storage.ThrottleStatus other =
          (com.google.cloud.bigquery.storage.v1beta1.Storage.ThrottleStatus) obj;

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

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

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.ThrottleStatus parseFrom(
        java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.ThrottleStatus parseFrom(
        java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.ThrottleStatus parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.ThrottleStatus parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.ThrottleStatus parseFrom(
        byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.ThrottleStatus parseFrom(
        byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.ThrottleStatus parseFrom(
        java.io.InputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.ThrottleStatus parseFrom(
        java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
          PARSER, input, extensionRegistry);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.ThrottleStatus
        parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.ThrottleStatus
        parseDelimitedFrom(
            java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(
          PARSER, input, extensionRegistry);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.ThrottleStatus parseFrom(
        com.google.protobuf.CodedInputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.ThrottleStatus parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
          PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() {
      return newBuilder();
    }

    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }

    public static Builder newBuilder(
        com.google.cloud.bigquery.storage.v1beta1.Storage.ThrottleStatus prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }

    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     *
     *
     * <pre>
     * Information on if the current connection is being throttled.
     * </pre>
     *
     * Protobuf type {@code google.cloud.bigquery.storage.v1beta1.ThrottleStatus}
     */
    public static final class Builder
        extends com.google.protobuf.GeneratedMessageV3.Builder<Builder>
        implements
        // @@protoc_insertion_point(builder_implements:google.cloud.bigquery.storage.v1beta1.ThrottleStatus)
        com.google.cloud.bigquery.storage.v1beta1.Storage.ThrottleStatusOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
        return com.google.cloud.bigquery.storage.v1beta1.Storage
            .internal_static_google_cloud_bigquery_storage_v1beta1_ThrottleStatus_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.cloud.bigquery.storage.v1beta1.Storage
            .internal_static_google_cloud_bigquery_storage_v1beta1_ThrottleStatus_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.cloud.bigquery.storage.v1beta1.Storage.ThrottleStatus.class,
                com.google.cloud.bigquery.storage.v1beta1.Storage.ThrottleStatus.Builder.class);
      }

      // Construct using
      // com.google.cloud.bigquery.storage.v1beta1.Storage.ThrottleStatus.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }

      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {}
      }

      @java.lang.Override
      public Builder clear() {
        super.clear();
        throttlePercent_ = 0;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
        return com.google.cloud.bigquery.storage.v1beta1.Storage
            .internal_static_google_cloud_bigquery_storage_v1beta1_ThrottleStatus_descriptor;
      }

      @java.lang.Override
      public com.google.cloud.bigquery.storage.v1beta1.Storage.ThrottleStatus
          getDefaultInstanceForType() {
        return com.google.cloud.bigquery.storage.v1beta1.Storage.ThrottleStatus
            .getDefaultInstance();
      }

      @java.lang.Override
      public com.google.cloud.bigquery.storage.v1beta1.Storage.ThrottleStatus build() {
        com.google.cloud.bigquery.storage.v1beta1.Storage.ThrottleStatus result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.google.cloud.bigquery.storage.v1beta1.Storage.ThrottleStatus buildPartial() {
        com.google.cloud.bigquery.storage.v1beta1.Storage.ThrottleStatus result =
            new com.google.cloud.bigquery.storage.v1beta1.Storage.ThrottleStatus(this);
        result.throttlePercent_ = throttlePercent_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return (Builder) super.clone();
      }

      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }

      @java.lang.Override
      public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }

      @java.lang.Override
      public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }

      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index,
          java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }

      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.cloud.bigquery.storage.v1beta1.Storage.ThrottleStatus) {
          return mergeFrom(
              (com.google.cloud.bigquery.storage.v1beta1.Storage.ThrottleStatus) other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(
          com.google.cloud.bigquery.storage.v1beta1.Storage.ThrottleStatus other) {
        if (other
            == com.google.cloud.bigquery.storage.v1beta1.Storage.ThrottleStatus
                .getDefaultInstance()) return this;
        if (other.getThrottlePercent() != 0) {
          setThrottlePercent(other.getThrottlePercent());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

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

      private int throttlePercent_;
      /**
       *
       *
       * <pre>
       * How much this connection is being throttled.
       * 0 is no throttling, 100 is completely throttled.
       * </pre>
       *
       * <code>int32 throttle_percent = 1;</code>
       */
      public int getThrottlePercent() {
        return throttlePercent_;
      }
      /**
       *
       *
       * <pre>
       * How much this connection is being throttled.
       * 0 is no throttling, 100 is completely throttled.
       * </pre>
       *
       * <code>int32 throttle_percent = 1;</code>
       */
      public Builder setThrottlePercent(int value) {

        throttlePercent_ = value;
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * How much this connection is being throttled.
       * 0 is no throttling, 100 is completely throttled.
       * </pre>
       *
       * <code>int32 throttle_percent = 1;</code>
       */
      public Builder clearThrottlePercent() {

        throttlePercent_ = 0;
        onChanged();
        return this;
      }

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

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

      // @@protoc_insertion_point(builder_scope:google.cloud.bigquery.storage.v1beta1.ThrottleStatus)
    }

    // @@protoc_insertion_point(class_scope:google.cloud.bigquery.storage.v1beta1.ThrottleStatus)
    private static final com.google.cloud.bigquery.storage.v1beta1.Storage.ThrottleStatus
        DEFAULT_INSTANCE;

    static {
      DEFAULT_INSTANCE = new com.google.cloud.bigquery.storage.v1beta1.Storage.ThrottleStatus();
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.ThrottleStatus
        getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.google.cloud.bigquery.storage.v1beta1.Storage.ThrottleStatus
        getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }
  }

  public interface ReadRowsResponseOrBuilder
      extends
      // @@protoc_insertion_point(interface_extends:google.cloud.bigquery.storage.v1beta1.ReadRowsResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     *
     *
     * <pre>
     * Serialized row data in AVRO format.
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.AvroRows avro_rows = 3;</code>
     */
    boolean hasAvroRows();
    /**
     *
     *
     * <pre>
     * Serialized row data in AVRO format.
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.AvroRows avro_rows = 3;</code>
     */
    com.google.cloud.bigquery.storage.v1beta1.AvroProto.AvroRows getAvroRows();
    /**
     *
     *
     * <pre>
     * Serialized row data in AVRO format.
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.AvroRows avro_rows = 3;</code>
     */
    com.google.cloud.bigquery.storage.v1beta1.AvroProto.AvroRowsOrBuilder getAvroRowsOrBuilder();

    /**
     *
     *
     * <pre>
     * Estimated stream statistics.
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.StreamStatus status = 2;</code>
     */
    boolean hasStatus();
    /**
     *
     *
     * <pre>
     * Estimated stream statistics.
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.StreamStatus status = 2;</code>
     */
    com.google.cloud.bigquery.storage.v1beta1.Storage.StreamStatus getStatus();
    /**
     *
     *
     * <pre>
     * Estimated stream statistics.
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.StreamStatus status = 2;</code>
     */
    com.google.cloud.bigquery.storage.v1beta1.Storage.StreamStatusOrBuilder getStatusOrBuilder();

    /**
     *
     *
     * <pre>
     * Throttling status. If unset, the latest response still describes
     * the current throttling status.
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.ThrottleStatus throttle_status = 5;</code>
     */
    boolean hasThrottleStatus();
    /**
     *
     *
     * <pre>
     * Throttling status. If unset, the latest response still describes
     * the current throttling status.
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.ThrottleStatus throttle_status = 5;</code>
     */
    com.google.cloud.bigquery.storage.v1beta1.Storage.ThrottleStatus getThrottleStatus();
    /**
     *
     *
     * <pre>
     * Throttling status. If unset, the latest response still describes
     * the current throttling status.
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.ThrottleStatus throttle_status = 5;</code>
     */
    com.google.cloud.bigquery.storage.v1beta1.Storage.ThrottleStatusOrBuilder
        getThrottleStatusOrBuilder();

    public com.google.cloud.bigquery.storage.v1beta1.Storage.ReadRowsResponse.RowsCase
        getRowsCase();
  }
  /**
   *
   *
   * <pre>
   * Response from calling `ReadRows` may include row data, progress and
   * throttling information.
   * </pre>
   *
   * Protobuf type {@code google.cloud.bigquery.storage.v1beta1.ReadRowsResponse}
   */
  public static final class ReadRowsResponse extends com.google.protobuf.GeneratedMessageV3
      implements
      // @@protoc_insertion_point(message_implements:google.cloud.bigquery.storage.v1beta1.ReadRowsResponse)
      ReadRowsResponseOrBuilder {
    private static final long serialVersionUID = 0L;
    // Use ReadRowsResponse.newBuilder() to construct.
    private ReadRowsResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }

    private ReadRowsResponse() {}

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
      return this.unknownFields;
    }

    private ReadRowsResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 18:
              {
                com.google.cloud.bigquery.storage.v1beta1.Storage.StreamStatus.Builder subBuilder =
                    null;
                if (status_ != null) {
                  subBuilder = status_.toBuilder();
                }
                status_ =
                    input.readMessage(
                        com.google.cloud.bigquery.storage.v1beta1.Storage.StreamStatus.parser(),
                        extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(status_);
                  status_ = subBuilder.buildPartial();
                }

                break;
              }
            case 26:
              {
                com.google.cloud.bigquery.storage.v1beta1.AvroProto.AvroRows.Builder subBuilder =
                    null;
                if (rowsCase_ == 3) {
                  subBuilder =
                      ((com.google.cloud.bigquery.storage.v1beta1.AvroProto.AvroRows) rows_)
                          .toBuilder();
                }
                rows_ =
                    input.readMessage(
                        com.google.cloud.bigquery.storage.v1beta1.AvroProto.AvroRows.parser(),
                        extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(
                      (com.google.cloud.bigquery.storage.v1beta1.AvroProto.AvroRows) rows_);
                  rows_ = subBuilder.buildPartial();
                }
                rowsCase_ = 3;
                break;
              }
            case 42:
              {
                com.google.cloud.bigquery.storage.v1beta1.Storage.ThrottleStatus.Builder
                    subBuilder = null;
                if (throttleStatus_ != null) {
                  subBuilder = throttleStatus_.toBuilder();
                }
                throttleStatus_ =
                    input.readMessage(
                        com.google.cloud.bigquery.storage.v1beta1.Storage.ThrottleStatus.parser(),
                        extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(throttleStatus_);
                  throttleStatus_ = subBuilder.buildPartial();
                }

                break;
              }
            default:
              {
                if (!parseUnknownFieldProto3(input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }

    public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
      return com.google.cloud.bigquery.storage.v1beta1.Storage
          .internal_static_google_cloud_bigquery_storage_v1beta1_ReadRowsResponse_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.cloud.bigquery.storage.v1beta1.Storage
          .internal_static_google_cloud_bigquery_storage_v1beta1_ReadRowsResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.cloud.bigquery.storage.v1beta1.Storage.ReadRowsResponse.class,
              com.google.cloud.bigquery.storage.v1beta1.Storage.ReadRowsResponse.Builder.class);
    }

    private int rowsCase_ = 0;
    private java.lang.Object rows_;

    public enum RowsCase implements com.google.protobuf.Internal.EnumLite {
      AVRO_ROWS(3),
      ROWS_NOT_SET(0);
      private final int value;

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

      public static RowsCase forNumber(int value) {
        switch (value) {
          case 3:
            return AVRO_ROWS;
          case 0:
            return ROWS_NOT_SET;
          default:
            return null;
        }
      }

      public int getNumber() {
        return this.value;
      }
    };

    public RowsCase getRowsCase() {
      return RowsCase.forNumber(rowsCase_);
    }

    public static final int AVRO_ROWS_FIELD_NUMBER = 3;
    /**
     *
     *
     * <pre>
     * Serialized row data in AVRO format.
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.AvroRows avro_rows = 3;</code>
     */
    public boolean hasAvroRows() {
      return rowsCase_ == 3;
    }
    /**
     *
     *
     * <pre>
     * Serialized row data in AVRO format.
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.AvroRows avro_rows = 3;</code>
     */
    public com.google.cloud.bigquery.storage.v1beta1.AvroProto.AvroRows getAvroRows() {
      if (rowsCase_ == 3) {
        return (com.google.cloud.bigquery.storage.v1beta1.AvroProto.AvroRows) rows_;
      }
      return com.google.cloud.bigquery.storage.v1beta1.AvroProto.AvroRows.getDefaultInstance();
    }
    /**
     *
     *
     * <pre>
     * Serialized row data in AVRO format.
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.AvroRows avro_rows = 3;</code>
     */
    public com.google.cloud.bigquery.storage.v1beta1.AvroProto.AvroRowsOrBuilder
        getAvroRowsOrBuilder() {
      if (rowsCase_ == 3) {
        return (com.google.cloud.bigquery.storage.v1beta1.AvroProto.AvroRows) rows_;
      }
      return com.google.cloud.bigquery.storage.v1beta1.AvroProto.AvroRows.getDefaultInstance();
    }

    public static final int STATUS_FIELD_NUMBER = 2;
    private com.google.cloud.bigquery.storage.v1beta1.Storage.StreamStatus status_;
    /**
     *
     *
     * <pre>
     * Estimated stream statistics.
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.StreamStatus status = 2;</code>
     */
    public boolean hasStatus() {
      return status_ != null;
    }
    /**
     *
     *
     * <pre>
     * Estimated stream statistics.
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.StreamStatus status = 2;</code>
     */
    public com.google.cloud.bigquery.storage.v1beta1.Storage.StreamStatus getStatus() {
      return status_ == null
          ? com.google.cloud.bigquery.storage.v1beta1.Storage.StreamStatus.getDefaultInstance()
          : status_;
    }
    /**
     *
     *
     * <pre>
     * Estimated stream statistics.
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.StreamStatus status = 2;</code>
     */
    public com.google.cloud.bigquery.storage.v1beta1.Storage.StreamStatusOrBuilder
        getStatusOrBuilder() {
      return getStatus();
    }

    public static final int THROTTLE_STATUS_FIELD_NUMBER = 5;
    private com.google.cloud.bigquery.storage.v1beta1.Storage.ThrottleStatus throttleStatus_;
    /**
     *
     *
     * <pre>
     * Throttling status. If unset, the latest response still describes
     * the current throttling status.
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.ThrottleStatus throttle_status = 5;</code>
     */
    public boolean hasThrottleStatus() {
      return throttleStatus_ != null;
    }
    /**
     *
     *
     * <pre>
     * Throttling status. If unset, the latest response still describes
     * the current throttling status.
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.ThrottleStatus throttle_status = 5;</code>
     */
    public com.google.cloud.bigquery.storage.v1beta1.Storage.ThrottleStatus getThrottleStatus() {
      return throttleStatus_ == null
          ? com.google.cloud.bigquery.storage.v1beta1.Storage.ThrottleStatus.getDefaultInstance()
          : throttleStatus_;
    }
    /**
     *
     *
     * <pre>
     * Throttling status. If unset, the latest response still describes
     * the current throttling status.
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.ThrottleStatus throttle_status = 5;</code>
     */
    public com.google.cloud.bigquery.storage.v1beta1.Storage.ThrottleStatusOrBuilder
        getThrottleStatusOrBuilder() {
      return getThrottleStatus();
    }

    private byte memoizedIsInitialized = -1;

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
      if (status_ != null) {
        output.writeMessage(2, getStatus());
      }
      if (rowsCase_ == 3) {
        output.writeMessage(
            3, (com.google.cloud.bigquery.storage.v1beta1.AvroProto.AvroRows) rows_);
      }
      if (throttleStatus_ != null) {
        output.writeMessage(5, getThrottleStatus());
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (status_ != null) {
        size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getStatus());
      }
      if (rowsCase_ == 3) {
        size +=
            com.google.protobuf.CodedOutputStream.computeMessageSize(
                3, (com.google.cloud.bigquery.storage.v1beta1.AvroProto.AvroRows) rows_);
      }
      if (throttleStatus_ != null) {
        size += com.google.protobuf.CodedOutputStream.computeMessageSize(5, getThrottleStatus());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
        return true;
      }
      if (!(obj instanceof com.google.cloud.bigquery.storage.v1beta1.Storage.ReadRowsResponse)) {
        return super.equals(obj);
      }
      com.google.cloud.bigquery.storage.v1beta1.Storage.ReadRowsResponse other =
          (com.google.cloud.bigquery.storage.v1beta1.Storage.ReadRowsResponse) obj;

      boolean result = true;
      result = result && (hasStatus() == other.hasStatus());
      if (hasStatus()) {
        result = result && getStatus().equals(other.getStatus());
      }
      result = result && (hasThrottleStatus() == other.hasThrottleStatus());
      if (hasThrottleStatus()) {
        result = result && getThrottleStatus().equals(other.getThrottleStatus());
      }
      result = result && getRowsCase().equals(other.getRowsCase());
      if (!result) return false;
      switch (rowsCase_) {
        case 3:
          result = result && getAvroRows().equals(other.getAvroRows());
          break;
        case 0:
        default:
      }
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasStatus()) {
        hash = (37 * hash) + STATUS_FIELD_NUMBER;
        hash = (53 * hash) + getStatus().hashCode();
      }
      if (hasThrottleStatus()) {
        hash = (37 * hash) + THROTTLE_STATUS_FIELD_NUMBER;
        hash = (53 * hash) + getThrottleStatus().hashCode();
      }
      switch (rowsCase_) {
        case 3:
          hash = (37 * hash) + AVRO_ROWS_FIELD_NUMBER;
          hash = (53 * hash) + getAvroRows().hashCode();
          break;
        case 0:
        default:
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.ReadRowsResponse parseFrom(
        java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.ReadRowsResponse parseFrom(
        java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.ReadRowsResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.ReadRowsResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.ReadRowsResponse parseFrom(
        byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.ReadRowsResponse parseFrom(
        byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.ReadRowsResponse parseFrom(
        java.io.InputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.ReadRowsResponse parseFrom(
        java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
          PARSER, input, extensionRegistry);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.ReadRowsResponse
        parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.ReadRowsResponse
        parseDelimitedFrom(
            java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(
          PARSER, input, extensionRegistry);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.ReadRowsResponse parseFrom(
        com.google.protobuf.CodedInputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.ReadRowsResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
          PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() {
      return newBuilder();
    }

    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }

    public static Builder newBuilder(
        com.google.cloud.bigquery.storage.v1beta1.Storage.ReadRowsResponse prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }

    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     *
     *
     * <pre>
     * Response from calling `ReadRows` may include row data, progress and
     * throttling information.
     * </pre>
     *
     * Protobuf type {@code google.cloud.bigquery.storage.v1beta1.ReadRowsResponse}
     */
    public static final class Builder
        extends com.google.protobuf.GeneratedMessageV3.Builder<Builder>
        implements
        // @@protoc_insertion_point(builder_implements:google.cloud.bigquery.storage.v1beta1.ReadRowsResponse)
        com.google.cloud.bigquery.storage.v1beta1.Storage.ReadRowsResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
        return com.google.cloud.bigquery.storage.v1beta1.Storage
            .internal_static_google_cloud_bigquery_storage_v1beta1_ReadRowsResponse_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.cloud.bigquery.storage.v1beta1.Storage
            .internal_static_google_cloud_bigquery_storage_v1beta1_ReadRowsResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.cloud.bigquery.storage.v1beta1.Storage.ReadRowsResponse.class,
                com.google.cloud.bigquery.storage.v1beta1.Storage.ReadRowsResponse.Builder.class);
      }

      // Construct using
      // com.google.cloud.bigquery.storage.v1beta1.Storage.ReadRowsResponse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }

      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {}
      }

      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (statusBuilder_ == null) {
          status_ = null;
        } else {
          status_ = null;
          statusBuilder_ = null;
        }
        if (throttleStatusBuilder_ == null) {
          throttleStatus_ = null;
        } else {
          throttleStatus_ = null;
          throttleStatusBuilder_ = null;
        }
        rowsCase_ = 0;
        rows_ = null;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
        return com.google.cloud.bigquery.storage.v1beta1.Storage
            .internal_static_google_cloud_bigquery_storage_v1beta1_ReadRowsResponse_descriptor;
      }

      @java.lang.Override
      public com.google.cloud.bigquery.storage.v1beta1.Storage.ReadRowsResponse
          getDefaultInstanceForType() {
        return com.google.cloud.bigquery.storage.v1beta1.Storage.ReadRowsResponse
            .getDefaultInstance();
      }

      @java.lang.Override
      public com.google.cloud.bigquery.storage.v1beta1.Storage.ReadRowsResponse build() {
        com.google.cloud.bigquery.storage.v1beta1.Storage.ReadRowsResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.google.cloud.bigquery.storage.v1beta1.Storage.ReadRowsResponse buildPartial() {
        com.google.cloud.bigquery.storage.v1beta1.Storage.ReadRowsResponse result =
            new com.google.cloud.bigquery.storage.v1beta1.Storage.ReadRowsResponse(this);
        if (rowsCase_ == 3) {
          if (avroRowsBuilder_ == null) {
            result.rows_ = rows_;
          } else {
            result.rows_ = avroRowsBuilder_.build();
          }
        }
        if (statusBuilder_ == null) {
          result.status_ = status_;
        } else {
          result.status_ = statusBuilder_.build();
        }
        if (throttleStatusBuilder_ == null) {
          result.throttleStatus_ = throttleStatus_;
        } else {
          result.throttleStatus_ = throttleStatusBuilder_.build();
        }
        result.rowsCase_ = rowsCase_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return (Builder) super.clone();
      }

      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }

      @java.lang.Override
      public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }

      @java.lang.Override
      public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }

      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index,
          java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }

      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.cloud.bigquery.storage.v1beta1.Storage.ReadRowsResponse) {
          return mergeFrom(
              (com.google.cloud.bigquery.storage.v1beta1.Storage.ReadRowsResponse) other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(
          com.google.cloud.bigquery.storage.v1beta1.Storage.ReadRowsResponse other) {
        if (other
            == com.google.cloud.bigquery.storage.v1beta1.Storage.ReadRowsResponse
                .getDefaultInstance()) return this;
        if (other.hasStatus()) {
          mergeStatus(other.getStatus());
        }
        if (other.hasThrottleStatus()) {
          mergeThrottleStatus(other.getThrottleStatus());
        }
        switch (other.getRowsCase()) {
          case AVRO_ROWS:
            {
              mergeAvroRows(other.getAvroRows());
              break;
            }
          case ROWS_NOT_SET:
            {
              break;
            }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

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

      private int rowsCase_ = 0;
      private java.lang.Object rows_;

      public RowsCase getRowsCase() {
        return RowsCase.forNumber(rowsCase_);
      }

      public Builder clearRows() {
        rowsCase_ = 0;
        rows_ = null;
        onChanged();
        return this;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
              com.google.cloud.bigquery.storage.v1beta1.AvroProto.AvroRows,
              com.google.cloud.bigquery.storage.v1beta1.AvroProto.AvroRows.Builder,
              com.google.cloud.bigquery.storage.v1beta1.AvroProto.AvroRowsOrBuilder>
          avroRowsBuilder_;
      /**
       *
       *
       * <pre>
       * Serialized row data in AVRO format.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.AvroRows avro_rows = 3;</code>
       */
      public boolean hasAvroRows() {
        return rowsCase_ == 3;
      }
      /**
       *
       *
       * <pre>
       * Serialized row data in AVRO format.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.AvroRows avro_rows = 3;</code>
       */
      public com.google.cloud.bigquery.storage.v1beta1.AvroProto.AvroRows getAvroRows() {
        if (avroRowsBuilder_ == null) {
          if (rowsCase_ == 3) {
            return (com.google.cloud.bigquery.storage.v1beta1.AvroProto.AvroRows) rows_;
          }
          return com.google.cloud.bigquery.storage.v1beta1.AvroProto.AvroRows.getDefaultInstance();
        } else {
          if (rowsCase_ == 3) {
            return avroRowsBuilder_.getMessage();
          }
          return com.google.cloud.bigquery.storage.v1beta1.AvroProto.AvroRows.getDefaultInstance();
        }
      }
      /**
       *
       *
       * <pre>
       * Serialized row data in AVRO format.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.AvroRows avro_rows = 3;</code>
       */
      public Builder setAvroRows(
          com.google.cloud.bigquery.storage.v1beta1.AvroProto.AvroRows value) {
        if (avroRowsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          rows_ = value;
          onChanged();
        } else {
          avroRowsBuilder_.setMessage(value);
        }
        rowsCase_ = 3;
        return this;
      }
      /**
       *
       *
       * <pre>
       * Serialized row data in AVRO format.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.AvroRows avro_rows = 3;</code>
       */
      public Builder setAvroRows(
          com.google.cloud.bigquery.storage.v1beta1.AvroProto.AvroRows.Builder builderForValue) {
        if (avroRowsBuilder_ == null) {
          rows_ = builderForValue.build();
          onChanged();
        } else {
          avroRowsBuilder_.setMessage(builderForValue.build());
        }
        rowsCase_ = 3;
        return this;
      }
      /**
       *
       *
       * <pre>
       * Serialized row data in AVRO format.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.AvroRows avro_rows = 3;</code>
       */
      public Builder mergeAvroRows(
          com.google.cloud.bigquery.storage.v1beta1.AvroProto.AvroRows value) {
        if (avroRowsBuilder_ == null) {
          if (rowsCase_ == 3
              && rows_
                  != com.google.cloud.bigquery.storage.v1beta1.AvroProto.AvroRows
                      .getDefaultInstance()) {
            rows_ =
                com.google.cloud.bigquery.storage.v1beta1.AvroProto.AvroRows.newBuilder(
                        (com.google.cloud.bigquery.storage.v1beta1.AvroProto.AvroRows) rows_)
                    .mergeFrom(value)
                    .buildPartial();
          } else {
            rows_ = value;
          }
          onChanged();
        } else {
          if (rowsCase_ == 3) {
            avroRowsBuilder_.mergeFrom(value);
          }
          avroRowsBuilder_.setMessage(value);
        }
        rowsCase_ = 3;
        return this;
      }
      /**
       *
       *
       * <pre>
       * Serialized row data in AVRO format.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.AvroRows avro_rows = 3;</code>
       */
      public Builder clearAvroRows() {
        if (avroRowsBuilder_ == null) {
          if (rowsCase_ == 3) {
            rowsCase_ = 0;
            rows_ = null;
            onChanged();
          }
        } else {
          if (rowsCase_ == 3) {
            rowsCase_ = 0;
            rows_ = null;
          }
          avroRowsBuilder_.clear();
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * Serialized row data in AVRO format.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.AvroRows avro_rows = 3;</code>
       */
      public com.google.cloud.bigquery.storage.v1beta1.AvroProto.AvroRows.Builder
          getAvroRowsBuilder() {
        return getAvroRowsFieldBuilder().getBuilder();
      }
      /**
       *
       *
       * <pre>
       * Serialized row data in AVRO format.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.AvroRows avro_rows = 3;</code>
       */
      public com.google.cloud.bigquery.storage.v1beta1.AvroProto.AvroRowsOrBuilder
          getAvroRowsOrBuilder() {
        if ((rowsCase_ == 3) && (avroRowsBuilder_ != null)) {
          return avroRowsBuilder_.getMessageOrBuilder();
        } else {
          if (rowsCase_ == 3) {
            return (com.google.cloud.bigquery.storage.v1beta1.AvroProto.AvroRows) rows_;
          }
          return com.google.cloud.bigquery.storage.v1beta1.AvroProto.AvroRows.getDefaultInstance();
        }
      }
      /**
       *
       *
       * <pre>
       * Serialized row data in AVRO format.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.AvroRows avro_rows = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
              com.google.cloud.bigquery.storage.v1beta1.AvroProto.AvroRows,
              com.google.cloud.bigquery.storage.v1beta1.AvroProto.AvroRows.Builder,
              com.google.cloud.bigquery.storage.v1beta1.AvroProto.AvroRowsOrBuilder>
          getAvroRowsFieldBuilder() {
        if (avroRowsBuilder_ == null) {
          if (!(rowsCase_ == 3)) {
            rows_ =
                com.google.cloud.bigquery.storage.v1beta1.AvroProto.AvroRows.getDefaultInstance();
          }
          avroRowsBuilder_ =
              new com.google.protobuf.SingleFieldBuilderV3<
                  com.google.cloud.bigquery.storage.v1beta1.AvroProto.AvroRows,
                  com.google.cloud.bigquery.storage.v1beta1.AvroProto.AvroRows.Builder,
                  com.google.cloud.bigquery.storage.v1beta1.AvroProto.AvroRowsOrBuilder>(
                  (com.google.cloud.bigquery.storage.v1beta1.AvroProto.AvroRows) rows_,
                  getParentForChildren(),
                  isClean());
          rows_ = null;
        }
        rowsCase_ = 3;
        onChanged();
        ;
        return avroRowsBuilder_;
      }

      private com.google.cloud.bigquery.storage.v1beta1.Storage.StreamStatus status_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
              com.google.cloud.bigquery.storage.v1beta1.Storage.StreamStatus,
              com.google.cloud.bigquery.storage.v1beta1.Storage.StreamStatus.Builder,
              com.google.cloud.bigquery.storage.v1beta1.Storage.StreamStatusOrBuilder>
          statusBuilder_;
      /**
       *
       *
       * <pre>
       * Estimated stream statistics.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.StreamStatus status = 2;</code>
       */
      public boolean hasStatus() {
        return statusBuilder_ != null || status_ != null;
      }
      /**
       *
       *
       * <pre>
       * Estimated stream statistics.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.StreamStatus status = 2;</code>
       */
      public com.google.cloud.bigquery.storage.v1beta1.Storage.StreamStatus getStatus() {
        if (statusBuilder_ == null) {
          return status_ == null
              ? com.google.cloud.bigquery.storage.v1beta1.Storage.StreamStatus.getDefaultInstance()
              : status_;
        } else {
          return statusBuilder_.getMessage();
        }
      }
      /**
       *
       *
       * <pre>
       * Estimated stream statistics.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.StreamStatus status = 2;</code>
       */
      public Builder setStatus(
          com.google.cloud.bigquery.storage.v1beta1.Storage.StreamStatus value) {
        if (statusBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          status_ = value;
          onChanged();
        } else {
          statusBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       *
       *
       * <pre>
       * Estimated stream statistics.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.StreamStatus status = 2;</code>
       */
      public Builder setStatus(
          com.google.cloud.bigquery.storage.v1beta1.Storage.StreamStatus.Builder builderForValue) {
        if (statusBuilder_ == null) {
          status_ = builderForValue.build();
          onChanged();
        } else {
          statusBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       *
       *
       * <pre>
       * Estimated stream statistics.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.StreamStatus status = 2;</code>
       */
      public Builder mergeStatus(
          com.google.cloud.bigquery.storage.v1beta1.Storage.StreamStatus value) {
        if (statusBuilder_ == null) {
          if (status_ != null) {
            status_ =
                com.google.cloud.bigquery.storage.v1beta1.Storage.StreamStatus.newBuilder(status_)
                    .mergeFrom(value)
                    .buildPartial();
          } else {
            status_ = value;
          }
          onChanged();
        } else {
          statusBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       *
       *
       * <pre>
       * Estimated stream statistics.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.StreamStatus status = 2;</code>
       */
      public Builder clearStatus() {
        if (statusBuilder_ == null) {
          status_ = null;
          onChanged();
        } else {
          status_ = null;
          statusBuilder_ = null;
        }

        return this;
      }
      /**
       *
       *
       * <pre>
       * Estimated stream statistics.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.StreamStatus status = 2;</code>
       */
      public com.google.cloud.bigquery.storage.v1beta1.Storage.StreamStatus.Builder
          getStatusBuilder() {

        onChanged();
        return getStatusFieldBuilder().getBuilder();
      }
      /**
       *
       *
       * <pre>
       * Estimated stream statistics.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.StreamStatus status = 2;</code>
       */
      public com.google.cloud.bigquery.storage.v1beta1.Storage.StreamStatusOrBuilder
          getStatusOrBuilder() {
        if (statusBuilder_ != null) {
          return statusBuilder_.getMessageOrBuilder();
        } else {
          return status_ == null
              ? com.google.cloud.bigquery.storage.v1beta1.Storage.StreamStatus.getDefaultInstance()
              : status_;
        }
      }
      /**
       *
       *
       * <pre>
       * Estimated stream statistics.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.StreamStatus status = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
              com.google.cloud.bigquery.storage.v1beta1.Storage.StreamStatus,
              com.google.cloud.bigquery.storage.v1beta1.Storage.StreamStatus.Builder,
              com.google.cloud.bigquery.storage.v1beta1.Storage.StreamStatusOrBuilder>
          getStatusFieldBuilder() {
        if (statusBuilder_ == null) {
          statusBuilder_ =
              new com.google.protobuf.SingleFieldBuilderV3<
                  com.google.cloud.bigquery.storage.v1beta1.Storage.StreamStatus,
                  com.google.cloud.bigquery.storage.v1beta1.Storage.StreamStatus.Builder,
                  com.google.cloud.bigquery.storage.v1beta1.Storage.StreamStatusOrBuilder>(
                  getStatus(), getParentForChildren(), isClean());
          status_ = null;
        }
        return statusBuilder_;
      }

      private com.google.cloud.bigquery.storage.v1beta1.Storage.ThrottleStatus throttleStatus_ =
          null;
      private com.google.protobuf.SingleFieldBuilderV3<
              com.google.cloud.bigquery.storage.v1beta1.Storage.ThrottleStatus,
              com.google.cloud.bigquery.storage.v1beta1.Storage.ThrottleStatus.Builder,
              com.google.cloud.bigquery.storage.v1beta1.Storage.ThrottleStatusOrBuilder>
          throttleStatusBuilder_;
      /**
       *
       *
       * <pre>
       * Throttling status. If unset, the latest response still describes
       * the current throttling status.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.ThrottleStatus throttle_status = 5;</code>
       */
      public boolean hasThrottleStatus() {
        return throttleStatusBuilder_ != null || throttleStatus_ != null;
      }
      /**
       *
       *
       * <pre>
       * Throttling status. If unset, the latest response still describes
       * the current throttling status.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.ThrottleStatus throttle_status = 5;</code>
       */
      public com.google.cloud.bigquery.storage.v1beta1.Storage.ThrottleStatus getThrottleStatus() {
        if (throttleStatusBuilder_ == null) {
          return throttleStatus_ == null
              ? com.google.cloud.bigquery.storage.v1beta1.Storage.ThrottleStatus
                  .getDefaultInstance()
              : throttleStatus_;
        } else {
          return throttleStatusBuilder_.getMessage();
        }
      }
      /**
       *
       *
       * <pre>
       * Throttling status. If unset, the latest response still describes
       * the current throttling status.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.ThrottleStatus throttle_status = 5;</code>
       */
      public Builder setThrottleStatus(
          com.google.cloud.bigquery.storage.v1beta1.Storage.ThrottleStatus value) {
        if (throttleStatusBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          throttleStatus_ = value;
          onChanged();
        } else {
          throttleStatusBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       *
       *
       * <pre>
       * Throttling status. If unset, the latest response still describes
       * the current throttling status.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.ThrottleStatus throttle_status = 5;</code>
       */
      public Builder setThrottleStatus(
          com.google.cloud.bigquery.storage.v1beta1.Storage.ThrottleStatus.Builder
              builderForValue) {
        if (throttleStatusBuilder_ == null) {
          throttleStatus_ = builderForValue.build();
          onChanged();
        } else {
          throttleStatusBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       *
       *
       * <pre>
       * Throttling status. If unset, the latest response still describes
       * the current throttling status.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.ThrottleStatus throttle_status = 5;</code>
       */
      public Builder mergeThrottleStatus(
          com.google.cloud.bigquery.storage.v1beta1.Storage.ThrottleStatus value) {
        if (throttleStatusBuilder_ == null) {
          if (throttleStatus_ != null) {
            throttleStatus_ =
                com.google.cloud.bigquery.storage.v1beta1.Storage.ThrottleStatus.newBuilder(
                        throttleStatus_)
                    .mergeFrom(value)
                    .buildPartial();
          } else {
            throttleStatus_ = value;
          }
          onChanged();
        } else {
          throttleStatusBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       *
       *
       * <pre>
       * Throttling status. If unset, the latest response still describes
       * the current throttling status.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.ThrottleStatus throttle_status = 5;</code>
       */
      public Builder clearThrottleStatus() {
        if (throttleStatusBuilder_ == null) {
          throttleStatus_ = null;
          onChanged();
        } else {
          throttleStatus_ = null;
          throttleStatusBuilder_ = null;
        }

        return this;
      }
      /**
       *
       *
       * <pre>
       * Throttling status. If unset, the latest response still describes
       * the current throttling status.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.ThrottleStatus throttle_status = 5;</code>
       */
      public com.google.cloud.bigquery.storage.v1beta1.Storage.ThrottleStatus.Builder
          getThrottleStatusBuilder() {

        onChanged();
        return getThrottleStatusFieldBuilder().getBuilder();
      }
      /**
       *
       *
       * <pre>
       * Throttling status. If unset, the latest response still describes
       * the current throttling status.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.ThrottleStatus throttle_status = 5;</code>
       */
      public com.google.cloud.bigquery.storage.v1beta1.Storage.ThrottleStatusOrBuilder
          getThrottleStatusOrBuilder() {
        if (throttleStatusBuilder_ != null) {
          return throttleStatusBuilder_.getMessageOrBuilder();
        } else {
          return throttleStatus_ == null
              ? com.google.cloud.bigquery.storage.v1beta1.Storage.ThrottleStatus
                  .getDefaultInstance()
              : throttleStatus_;
        }
      }
      /**
       *
       *
       * <pre>
       * Throttling status. If unset, the latest response still describes
       * the current throttling status.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.ThrottleStatus throttle_status = 5;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
              com.google.cloud.bigquery.storage.v1beta1.Storage.ThrottleStatus,
              com.google.cloud.bigquery.storage.v1beta1.Storage.ThrottleStatus.Builder,
              com.google.cloud.bigquery.storage.v1beta1.Storage.ThrottleStatusOrBuilder>
          getThrottleStatusFieldBuilder() {
        if (throttleStatusBuilder_ == null) {
          throttleStatusBuilder_ =
              new com.google.protobuf.SingleFieldBuilderV3<
                  com.google.cloud.bigquery.storage.v1beta1.Storage.ThrottleStatus,
                  com.google.cloud.bigquery.storage.v1beta1.Storage.ThrottleStatus.Builder,
                  com.google.cloud.bigquery.storage.v1beta1.Storage.ThrottleStatusOrBuilder>(
                  getThrottleStatus(), getParentForChildren(), isClean());
          throttleStatus_ = null;
        }
        return throttleStatusBuilder_;
      }

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

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

      // @@protoc_insertion_point(builder_scope:google.cloud.bigquery.storage.v1beta1.ReadRowsResponse)
    }

    // @@protoc_insertion_point(class_scope:google.cloud.bigquery.storage.v1beta1.ReadRowsResponse)
    private static final com.google.cloud.bigquery.storage.v1beta1.Storage.ReadRowsResponse
        DEFAULT_INSTANCE;

    static {
      DEFAULT_INSTANCE = new com.google.cloud.bigquery.storage.v1beta1.Storage.ReadRowsResponse();
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.ReadRowsResponse
        getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.google.cloud.bigquery.storage.v1beta1.Storage.ReadRowsResponse
        getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }
  }

  public interface BatchCreateReadSessionStreamsRequestOrBuilder
      extends
      // @@protoc_insertion_point(interface_extends:google.cloud.bigquery.storage.v1beta1.BatchCreateReadSessionStreamsRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     *
     *
     * <pre>
     * Required. Must be a non-expired session obtained from a call to
     * CreateReadSession. Only the name field needs to be set.
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.ReadSession session = 1;</code>
     */
    boolean hasSession();
    /**
     *
     *
     * <pre>
     * Required. Must be a non-expired session obtained from a call to
     * CreateReadSession. Only the name field needs to be set.
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.ReadSession session = 1;</code>
     */
    com.google.cloud.bigquery.storage.v1beta1.Storage.ReadSession getSession();
    /**
     *
     *
     * <pre>
     * Required. Must be a non-expired session obtained from a call to
     * CreateReadSession. Only the name field needs to be set.
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.ReadSession session = 1;</code>
     */
    com.google.cloud.bigquery.storage.v1beta1.Storage.ReadSessionOrBuilder getSessionOrBuilder();

    /**
     *
     *
     * <pre>
     * Required. Number of new streams requested. Must be positive.
     * Number of added streams may be less than this, see CreateReadSessionRequest
     * for more information.
     * </pre>
     *
     * <code>int32 requested_streams = 2;</code>
     */
    int getRequestedStreams();
  }
  /**
   *
   *
   * <pre>
   * Information needed to request additional streams for an established read
   * session.
   * </pre>
   *
   * Protobuf type {@code
   * google.cloud.bigquery.storage.v1beta1.BatchCreateReadSessionStreamsRequest}
   */
  public static final class BatchCreateReadSessionStreamsRequest
      extends com.google.protobuf.GeneratedMessageV3
      implements
      // @@protoc_insertion_point(message_implements:google.cloud.bigquery.storage.v1beta1.BatchCreateReadSessionStreamsRequest)
      BatchCreateReadSessionStreamsRequestOrBuilder {
    private static final long serialVersionUID = 0L;
    // Use BatchCreateReadSessionStreamsRequest.newBuilder() to construct.
    private BatchCreateReadSessionStreamsRequest(
        com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }

    private BatchCreateReadSessionStreamsRequest() {
      requestedStreams_ = 0;
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
      return this.unknownFields;
    }

    private BatchCreateReadSessionStreamsRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10:
              {
                com.google.cloud.bigquery.storage.v1beta1.Storage.ReadSession.Builder subBuilder =
                    null;
                if (session_ != null) {
                  subBuilder = session_.toBuilder();
                }
                session_ =
                    input.readMessage(
                        com.google.cloud.bigquery.storage.v1beta1.Storage.ReadSession.parser(),
                        extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(session_);
                  session_ = subBuilder.buildPartial();
                }

                break;
              }
            case 16:
              {
                requestedStreams_ = input.readInt32();
                break;
              }
            default:
              {
                if (!parseUnknownFieldProto3(input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }

    public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
      return com.google.cloud.bigquery.storage.v1beta1.Storage
          .internal_static_google_cloud_bigquery_storage_v1beta1_BatchCreateReadSessionStreamsRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.cloud.bigquery.storage.v1beta1.Storage
          .internal_static_google_cloud_bigquery_storage_v1beta1_BatchCreateReadSessionStreamsRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.cloud.bigquery.storage.v1beta1.Storage.BatchCreateReadSessionStreamsRequest
                  .class,
              com.google.cloud.bigquery.storage.v1beta1.Storage.BatchCreateReadSessionStreamsRequest
                  .Builder.class);
    }

    public static final int SESSION_FIELD_NUMBER = 1;
    private com.google.cloud.bigquery.storage.v1beta1.Storage.ReadSession session_;
    /**
     *
     *
     * <pre>
     * Required. Must be a non-expired session obtained from a call to
     * CreateReadSession. Only the name field needs to be set.
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.ReadSession session = 1;</code>
     */
    public boolean hasSession() {
      return session_ != null;
    }
    /**
     *
     *
     * <pre>
     * Required. Must be a non-expired session obtained from a call to
     * CreateReadSession. Only the name field needs to be set.
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.ReadSession session = 1;</code>
     */
    public com.google.cloud.bigquery.storage.v1beta1.Storage.ReadSession getSession() {
      return session_ == null
          ? com.google.cloud.bigquery.storage.v1beta1.Storage.ReadSession.getDefaultInstance()
          : session_;
    }
    /**
     *
     *
     * <pre>
     * Required. Must be a non-expired session obtained from a call to
     * CreateReadSession. Only the name field needs to be set.
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.ReadSession session = 1;</code>
     */
    public com.google.cloud.bigquery.storage.v1beta1.Storage.ReadSessionOrBuilder
        getSessionOrBuilder() {
      return getSession();
    }

    public static final int REQUESTED_STREAMS_FIELD_NUMBER = 2;
    private int requestedStreams_;
    /**
     *
     *
     * <pre>
     * Required. Number of new streams requested. Must be positive.
     * Number of added streams may be less than this, see CreateReadSessionRequest
     * for more information.
     * </pre>
     *
     * <code>int32 requested_streams = 2;</code>
     */
    public int getRequestedStreams() {
      return requestedStreams_;
    }

    private byte memoizedIsInitialized = -1;

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
      if (session_ != null) {
        output.writeMessage(1, getSession());
      }
      if (requestedStreams_ != 0) {
        output.writeInt32(2, requestedStreams_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (session_ != null) {
        size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getSession());
      }
      if (requestedStreams_ != 0) {
        size += com.google.protobuf.CodedOutputStream.computeInt32Size(2, requestedStreams_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
        return true;
      }
      if (!(obj
          instanceof
          com.google.cloud.bigquery.storage.v1beta1.Storage.BatchCreateReadSessionStreamsRequest)) {
        return super.equals(obj);
      }
      com.google.cloud.bigquery.storage.v1beta1.Storage.BatchCreateReadSessionStreamsRequest other =
          (com.google.cloud.bigquery.storage.v1beta1.Storage.BatchCreateReadSessionStreamsRequest)
              obj;

      boolean result = true;
      result = result && (hasSession() == other.hasSession());
      if (hasSession()) {
        result = result && getSession().equals(other.getSession());
      }
      result = result && (getRequestedStreams() == other.getRequestedStreams());
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

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

    public static com.google.cloud.bigquery.storage.v1beta1.Storage
            .BatchCreateReadSessionStreamsRequest
        parseFrom(java.nio.ByteBuffer data)
            throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage
            .BatchCreateReadSessionStreamsRequest
        parseFrom(
            java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage
            .BatchCreateReadSessionStreamsRequest
        parseFrom(com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage
            .BatchCreateReadSessionStreamsRequest
        parseFrom(
            com.google.protobuf.ByteString data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage
            .BatchCreateReadSessionStreamsRequest
        parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage
            .BatchCreateReadSessionStreamsRequest
        parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage
            .BatchCreateReadSessionStreamsRequest
        parseFrom(java.io.InputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage
            .BatchCreateReadSessionStreamsRequest
        parseFrom(
            java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
          PARSER, input, extensionRegistry);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage
            .BatchCreateReadSessionStreamsRequest
        parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage
            .BatchCreateReadSessionStreamsRequest
        parseDelimitedFrom(
            java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(
          PARSER, input, extensionRegistry);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage
            .BatchCreateReadSessionStreamsRequest
        parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage
            .BatchCreateReadSessionStreamsRequest
        parseFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
          PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() {
      return newBuilder();
    }

    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }

    public static Builder newBuilder(
        com.google.cloud.bigquery.storage.v1beta1.Storage.BatchCreateReadSessionStreamsRequest
            prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }

    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     *
     *
     * <pre>
     * Information needed to request additional streams for an established read
     * session.
     * </pre>
     *
     * Protobuf type {@code
     * google.cloud.bigquery.storage.v1beta1.BatchCreateReadSessionStreamsRequest}
     */
    public static final class Builder
        extends com.google.protobuf.GeneratedMessageV3.Builder<Builder>
        implements
        // @@protoc_insertion_point(builder_implements:google.cloud.bigquery.storage.v1beta1.BatchCreateReadSessionStreamsRequest)
        com.google.cloud.bigquery.storage.v1beta1.Storage
            .BatchCreateReadSessionStreamsRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
        return com.google.cloud.bigquery.storage.v1beta1.Storage
            .internal_static_google_cloud_bigquery_storage_v1beta1_BatchCreateReadSessionStreamsRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.cloud.bigquery.storage.v1beta1.Storage
            .internal_static_google_cloud_bigquery_storage_v1beta1_BatchCreateReadSessionStreamsRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.cloud.bigquery.storage.v1beta1.Storage
                    .BatchCreateReadSessionStreamsRequest.class,
                com.google.cloud.bigquery.storage.v1beta1.Storage
                    .BatchCreateReadSessionStreamsRequest.Builder.class);
      }

      // Construct using
      // com.google.cloud.bigquery.storage.v1beta1.Storage.BatchCreateReadSessionStreamsRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }

      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {}
      }

      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (sessionBuilder_ == null) {
          session_ = null;
        } else {
          session_ = null;
          sessionBuilder_ = null;
        }
        requestedStreams_ = 0;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
        return com.google.cloud.bigquery.storage.v1beta1.Storage
            .internal_static_google_cloud_bigquery_storage_v1beta1_BatchCreateReadSessionStreamsRequest_descriptor;
      }

      @java.lang.Override
      public com.google.cloud.bigquery.storage.v1beta1.Storage.BatchCreateReadSessionStreamsRequest
          getDefaultInstanceForType() {
        return com.google.cloud.bigquery.storage.v1beta1.Storage
            .BatchCreateReadSessionStreamsRequest.getDefaultInstance();
      }

      @java.lang.Override
      public com.google.cloud.bigquery.storage.v1beta1.Storage.BatchCreateReadSessionStreamsRequest
          build() {
        com.google.cloud.bigquery.storage.v1beta1.Storage.BatchCreateReadSessionStreamsRequest
            result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.google.cloud.bigquery.storage.v1beta1.Storage.BatchCreateReadSessionStreamsRequest
          buildPartial() {
        com.google.cloud.bigquery.storage.v1beta1.Storage.BatchCreateReadSessionStreamsRequest
            result =
                new com.google.cloud.bigquery.storage.v1beta1.Storage
                    .BatchCreateReadSessionStreamsRequest(this);
        if (sessionBuilder_ == null) {
          result.session_ = session_;
        } else {
          result.session_ = sessionBuilder_.build();
        }
        result.requestedStreams_ = requestedStreams_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return (Builder) super.clone();
      }

      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }

      @java.lang.Override
      public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }

      @java.lang.Override
      public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }

      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index,
          java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }

      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other
            instanceof
            com.google.cloud.bigquery.storage.v1beta1.Storage
                .BatchCreateReadSessionStreamsRequest) {
          return mergeFrom(
              (com.google.cloud.bigquery.storage.v1beta1.Storage
                      .BatchCreateReadSessionStreamsRequest)
                  other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(
          com.google.cloud.bigquery.storage.v1beta1.Storage.BatchCreateReadSessionStreamsRequest
              other) {
        if (other
            == com.google.cloud.bigquery.storage.v1beta1.Storage
                .BatchCreateReadSessionStreamsRequest.getDefaultInstance()) return this;
        if (other.hasSession()) {
          mergeSession(other.getSession());
        }
        if (other.getRequestedStreams() != 0) {
          setRequestedStreams(other.getRequestedStreams());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

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

      private com.google.cloud.bigquery.storage.v1beta1.Storage.ReadSession session_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
              com.google.cloud.bigquery.storage.v1beta1.Storage.ReadSession,
              com.google.cloud.bigquery.storage.v1beta1.Storage.ReadSession.Builder,
              com.google.cloud.bigquery.storage.v1beta1.Storage.ReadSessionOrBuilder>
          sessionBuilder_;
      /**
       *
       *
       * <pre>
       * Required. Must be a non-expired session obtained from a call to
       * CreateReadSession. Only the name field needs to be set.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.ReadSession session = 1;</code>
       */
      public boolean hasSession() {
        return sessionBuilder_ != null || session_ != null;
      }
      /**
       *
       *
       * <pre>
       * Required. Must be a non-expired session obtained from a call to
       * CreateReadSession. Only the name field needs to be set.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.ReadSession session = 1;</code>
       */
      public com.google.cloud.bigquery.storage.v1beta1.Storage.ReadSession getSession() {
        if (sessionBuilder_ == null) {
          return session_ == null
              ? com.google.cloud.bigquery.storage.v1beta1.Storage.ReadSession.getDefaultInstance()
              : session_;
        } else {
          return sessionBuilder_.getMessage();
        }
      }
      /**
       *
       *
       * <pre>
       * Required. Must be a non-expired session obtained from a call to
       * CreateReadSession. Only the name field needs to be set.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.ReadSession session = 1;</code>
       */
      public Builder setSession(
          com.google.cloud.bigquery.storage.v1beta1.Storage.ReadSession value) {
        if (sessionBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          session_ = value;
          onChanged();
        } else {
          sessionBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       *
       *
       * <pre>
       * Required. Must be a non-expired session obtained from a call to
       * CreateReadSession. Only the name field needs to be set.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.ReadSession session = 1;</code>
       */
      public Builder setSession(
          com.google.cloud.bigquery.storage.v1beta1.Storage.ReadSession.Builder builderForValue) {
        if (sessionBuilder_ == null) {
          session_ = builderForValue.build();
          onChanged();
        } else {
          sessionBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       *
       *
       * <pre>
       * Required. Must be a non-expired session obtained from a call to
       * CreateReadSession. Only the name field needs to be set.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.ReadSession session = 1;</code>
       */
      public Builder mergeSession(
          com.google.cloud.bigquery.storage.v1beta1.Storage.ReadSession value) {
        if (sessionBuilder_ == null) {
          if (session_ != null) {
            session_ =
                com.google.cloud.bigquery.storage.v1beta1.Storage.ReadSession.newBuilder(session_)
                    .mergeFrom(value)
                    .buildPartial();
          } else {
            session_ = value;
          }
          onChanged();
        } else {
          sessionBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       *
       *
       * <pre>
       * Required. Must be a non-expired session obtained from a call to
       * CreateReadSession. Only the name field needs to be set.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.ReadSession session = 1;</code>
       */
      public Builder clearSession() {
        if (sessionBuilder_ == null) {
          session_ = null;
          onChanged();
        } else {
          session_ = null;
          sessionBuilder_ = null;
        }

        return this;
      }
      /**
       *
       *
       * <pre>
       * Required. Must be a non-expired session obtained from a call to
       * CreateReadSession. Only the name field needs to be set.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.ReadSession session = 1;</code>
       */
      public com.google.cloud.bigquery.storage.v1beta1.Storage.ReadSession.Builder
          getSessionBuilder() {

        onChanged();
        return getSessionFieldBuilder().getBuilder();
      }
      /**
       *
       *
       * <pre>
       * Required. Must be a non-expired session obtained from a call to
       * CreateReadSession. Only the name field needs to be set.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.ReadSession session = 1;</code>
       */
      public com.google.cloud.bigquery.storage.v1beta1.Storage.ReadSessionOrBuilder
          getSessionOrBuilder() {
        if (sessionBuilder_ != null) {
          return sessionBuilder_.getMessageOrBuilder();
        } else {
          return session_ == null
              ? com.google.cloud.bigquery.storage.v1beta1.Storage.ReadSession.getDefaultInstance()
              : session_;
        }
      }
      /**
       *
       *
       * <pre>
       * Required. Must be a non-expired session obtained from a call to
       * CreateReadSession. Only the name field needs to be set.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.ReadSession session = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
              com.google.cloud.bigquery.storage.v1beta1.Storage.ReadSession,
              com.google.cloud.bigquery.storage.v1beta1.Storage.ReadSession.Builder,
              com.google.cloud.bigquery.storage.v1beta1.Storage.ReadSessionOrBuilder>
          getSessionFieldBuilder() {
        if (sessionBuilder_ == null) {
          sessionBuilder_ =
              new com.google.protobuf.SingleFieldBuilderV3<
                  com.google.cloud.bigquery.storage.v1beta1.Storage.ReadSession,
                  com.google.cloud.bigquery.storage.v1beta1.Storage.ReadSession.Builder,
                  com.google.cloud.bigquery.storage.v1beta1.Storage.ReadSessionOrBuilder>(
                  getSession(), getParentForChildren(), isClean());
          session_ = null;
        }
        return sessionBuilder_;
      }

      private int requestedStreams_;
      /**
       *
       *
       * <pre>
       * Required. Number of new streams requested. Must be positive.
       * Number of added streams may be less than this, see CreateReadSessionRequest
       * for more information.
       * </pre>
       *
       * <code>int32 requested_streams = 2;</code>
       */
      public int getRequestedStreams() {
        return requestedStreams_;
      }
      /**
       *
       *
       * <pre>
       * Required. Number of new streams requested. Must be positive.
       * Number of added streams may be less than this, see CreateReadSessionRequest
       * for more information.
       * </pre>
       *
       * <code>int32 requested_streams = 2;</code>
       */
      public Builder setRequestedStreams(int value) {

        requestedStreams_ = value;
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Required. Number of new streams requested. Must be positive.
       * Number of added streams may be less than this, see CreateReadSessionRequest
       * for more information.
       * </pre>
       *
       * <code>int32 requested_streams = 2;</code>
       */
      public Builder clearRequestedStreams() {

        requestedStreams_ = 0;
        onChanged();
        return this;
      }

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

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

      // @@protoc_insertion_point(builder_scope:google.cloud.bigquery.storage.v1beta1.BatchCreateReadSessionStreamsRequest)
    }

    // @@protoc_insertion_point(class_scope:google.cloud.bigquery.storage.v1beta1.BatchCreateReadSessionStreamsRequest)
    private static final com.google.cloud.bigquery.storage.v1beta1.Storage
            .BatchCreateReadSessionStreamsRequest
        DEFAULT_INSTANCE;

    static {
      DEFAULT_INSTANCE =
          new com.google.cloud.bigquery.storage.v1beta1.Storage
              .BatchCreateReadSessionStreamsRequest();
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage
            .BatchCreateReadSessionStreamsRequest
        getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.google.cloud.bigquery.storage.v1beta1.Storage.BatchCreateReadSessionStreamsRequest
        getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }
  }

  public interface BatchCreateReadSessionStreamsResponseOrBuilder
      extends
      // @@protoc_insertion_point(interface_extends:google.cloud.bigquery.storage.v1beta1.BatchCreateReadSessionStreamsResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     *
     *
     * <pre>
     * Newly added streams.
     * </pre>
     *
     * <code>repeated .google.cloud.bigquery.storage.v1beta1.Stream streams = 1;</code>
     */
    java.util.List<com.google.cloud.bigquery.storage.v1beta1.Storage.Stream> getStreamsList();
    /**
     *
     *
     * <pre>
     * Newly added streams.
     * </pre>
     *
     * <code>repeated .google.cloud.bigquery.storage.v1beta1.Stream streams = 1;</code>
     */
    com.google.cloud.bigquery.storage.v1beta1.Storage.Stream getStreams(int index);
    /**
     *
     *
     * <pre>
     * Newly added streams.
     * </pre>
     *
     * <code>repeated .google.cloud.bigquery.storage.v1beta1.Stream streams = 1;</code>
     */
    int getStreamsCount();
    /**
     *
     *
     * <pre>
     * Newly added streams.
     * </pre>
     *
     * <code>repeated .google.cloud.bigquery.storage.v1beta1.Stream streams = 1;</code>
     */
    java.util.List<? extends com.google.cloud.bigquery.storage.v1beta1.Storage.StreamOrBuilder>
        getStreamsOrBuilderList();
    /**
     *
     *
     * <pre>
     * Newly added streams.
     * </pre>
     *
     * <code>repeated .google.cloud.bigquery.storage.v1beta1.Stream streams = 1;</code>
     */
    com.google.cloud.bigquery.storage.v1beta1.Storage.StreamOrBuilder getStreamsOrBuilder(
        int index);
  }
  /**
   *
   *
   * <pre>
   * The response from `BatchCreateReadSessionStreams` returns the stream
   * identifiers for the newly created streams.
   * </pre>
   *
   * Protobuf type {@code
   * google.cloud.bigquery.storage.v1beta1.BatchCreateReadSessionStreamsResponse}
   */
  public static final class BatchCreateReadSessionStreamsResponse
      extends com.google.protobuf.GeneratedMessageV3
      implements
      // @@protoc_insertion_point(message_implements:google.cloud.bigquery.storage.v1beta1.BatchCreateReadSessionStreamsResponse)
      BatchCreateReadSessionStreamsResponseOrBuilder {
    private static final long serialVersionUID = 0L;
    // Use BatchCreateReadSessionStreamsResponse.newBuilder() to construct.
    private BatchCreateReadSessionStreamsResponse(
        com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }

    private BatchCreateReadSessionStreamsResponse() {
      streams_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
      return this.unknownFields;
    }

    private BatchCreateReadSessionStreamsResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10:
              {
                if (!((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
                  streams_ =
                      new java.util.ArrayList<
                          com.google.cloud.bigquery.storage.v1beta1.Storage.Stream>();
                  mutable_bitField0_ |= 0x00000001;
                }
                streams_.add(
                    input.readMessage(
                        com.google.cloud.bigquery.storage.v1beta1.Storage.Stream.parser(),
                        extensionRegistry));
                break;
              }
            default:
              {
                if (!parseUnknownFieldProto3(input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
          streams_ = java.util.Collections.unmodifiableList(streams_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }

    public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
      return com.google.cloud.bigquery.storage.v1beta1.Storage
          .internal_static_google_cloud_bigquery_storage_v1beta1_BatchCreateReadSessionStreamsResponse_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.cloud.bigquery.storage.v1beta1.Storage
          .internal_static_google_cloud_bigquery_storage_v1beta1_BatchCreateReadSessionStreamsResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.cloud.bigquery.storage.v1beta1.Storage
                  .BatchCreateReadSessionStreamsResponse.class,
              com.google.cloud.bigquery.storage.v1beta1.Storage
                  .BatchCreateReadSessionStreamsResponse.Builder.class);
    }

    public static final int STREAMS_FIELD_NUMBER = 1;
    private java.util.List<com.google.cloud.bigquery.storage.v1beta1.Storage.Stream> streams_;
    /**
     *
     *
     * <pre>
     * Newly added streams.
     * </pre>
     *
     * <code>repeated .google.cloud.bigquery.storage.v1beta1.Stream streams = 1;</code>
     */
    public java.util.List<com.google.cloud.bigquery.storage.v1beta1.Storage.Stream>
        getStreamsList() {
      return streams_;
    }
    /**
     *
     *
     * <pre>
     * Newly added streams.
     * </pre>
     *
     * <code>repeated .google.cloud.bigquery.storage.v1beta1.Stream streams = 1;</code>
     */
    public java.util.List<
            ? extends com.google.cloud.bigquery.storage.v1beta1.Storage.StreamOrBuilder>
        getStreamsOrBuilderList() {
      return streams_;
    }
    /**
     *
     *
     * <pre>
     * Newly added streams.
     * </pre>
     *
     * <code>repeated .google.cloud.bigquery.storage.v1beta1.Stream streams = 1;</code>
     */
    public int getStreamsCount() {
      return streams_.size();
    }
    /**
     *
     *
     * <pre>
     * Newly added streams.
     * </pre>
     *
     * <code>repeated .google.cloud.bigquery.storage.v1beta1.Stream streams = 1;</code>
     */
    public com.google.cloud.bigquery.storage.v1beta1.Storage.Stream getStreams(int index) {
      return streams_.get(index);
    }
    /**
     *
     *
     * <pre>
     * Newly added streams.
     * </pre>
     *
     * <code>repeated .google.cloud.bigquery.storage.v1beta1.Stream streams = 1;</code>
     */
    public com.google.cloud.bigquery.storage.v1beta1.Storage.StreamOrBuilder getStreamsOrBuilder(
        int index) {
      return streams_.get(index);
    }

    private byte memoizedIsInitialized = -1;

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

      memoizedIsInitialized = 1;
      return true;
    }

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

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

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

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
        return true;
      }
      if (!(obj
          instanceof
          com.google.cloud.bigquery.storage.v1beta1.Storage
              .BatchCreateReadSessionStreamsResponse)) {
        return super.equals(obj);
      }
      com.google.cloud.bigquery.storage.v1beta1.Storage.BatchCreateReadSessionStreamsResponse
          other =
              (com.google.cloud.bigquery.storage.v1beta1.Storage
                      .BatchCreateReadSessionStreamsResponse)
                  obj;

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

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

    public static com.google.cloud.bigquery.storage.v1beta1.Storage
            .BatchCreateReadSessionStreamsResponse
        parseFrom(java.nio.ByteBuffer data)
            throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage
            .BatchCreateReadSessionStreamsResponse
        parseFrom(
            java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage
            .BatchCreateReadSessionStreamsResponse
        parseFrom(com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage
            .BatchCreateReadSessionStreamsResponse
        parseFrom(
            com.google.protobuf.ByteString data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage
            .BatchCreateReadSessionStreamsResponse
        parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage
            .BatchCreateReadSessionStreamsResponse
        parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage
            .BatchCreateReadSessionStreamsResponse
        parseFrom(java.io.InputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage
            .BatchCreateReadSessionStreamsResponse
        parseFrom(
            java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
          PARSER, input, extensionRegistry);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage
            .BatchCreateReadSessionStreamsResponse
        parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage
            .BatchCreateReadSessionStreamsResponse
        parseDelimitedFrom(
            java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(
          PARSER, input, extensionRegistry);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage
            .BatchCreateReadSessionStreamsResponse
        parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage
            .BatchCreateReadSessionStreamsResponse
        parseFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
          PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() {
      return newBuilder();
    }

    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }

    public static Builder newBuilder(
        com.google.cloud.bigquery.storage.v1beta1.Storage.BatchCreateReadSessionStreamsResponse
            prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }

    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     *
     *
     * <pre>
     * The response from `BatchCreateReadSessionStreams` returns the stream
     * identifiers for the newly created streams.
     * </pre>
     *
     * Protobuf type {@code
     * google.cloud.bigquery.storage.v1beta1.BatchCreateReadSessionStreamsResponse}
     */
    public static final class Builder
        extends com.google.protobuf.GeneratedMessageV3.Builder<Builder>
        implements
        // @@protoc_insertion_point(builder_implements:google.cloud.bigquery.storage.v1beta1.BatchCreateReadSessionStreamsResponse)
        com.google.cloud.bigquery.storage.v1beta1.Storage
            .BatchCreateReadSessionStreamsResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
        return com.google.cloud.bigquery.storage.v1beta1.Storage
            .internal_static_google_cloud_bigquery_storage_v1beta1_BatchCreateReadSessionStreamsResponse_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.cloud.bigquery.storage.v1beta1.Storage
            .internal_static_google_cloud_bigquery_storage_v1beta1_BatchCreateReadSessionStreamsResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.cloud.bigquery.storage.v1beta1.Storage
                    .BatchCreateReadSessionStreamsResponse.class,
                com.google.cloud.bigquery.storage.v1beta1.Storage
                    .BatchCreateReadSessionStreamsResponse.Builder.class);
      }

      // Construct using
      // com.google.cloud.bigquery.storage.v1beta1.Storage.BatchCreateReadSessionStreamsResponse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }

      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
          getStreamsFieldBuilder();
        }
      }

      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (streamsBuilder_ == null) {
          streams_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          streamsBuilder_.clear();
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
        return com.google.cloud.bigquery.storage.v1beta1.Storage
            .internal_static_google_cloud_bigquery_storage_v1beta1_BatchCreateReadSessionStreamsResponse_descriptor;
      }

      @java.lang.Override
      public com.google.cloud.bigquery.storage.v1beta1.Storage.BatchCreateReadSessionStreamsResponse
          getDefaultInstanceForType() {
        return com.google.cloud.bigquery.storage.v1beta1.Storage
            .BatchCreateReadSessionStreamsResponse.getDefaultInstance();
      }

      @java.lang.Override
      public com.google.cloud.bigquery.storage.v1beta1.Storage.BatchCreateReadSessionStreamsResponse
          build() {
        com.google.cloud.bigquery.storage.v1beta1.Storage.BatchCreateReadSessionStreamsResponse
            result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.google.cloud.bigquery.storage.v1beta1.Storage.BatchCreateReadSessionStreamsResponse
          buildPartial() {
        com.google.cloud.bigquery.storage.v1beta1.Storage.BatchCreateReadSessionStreamsResponse
            result =
                new com.google.cloud.bigquery.storage.v1beta1.Storage
                    .BatchCreateReadSessionStreamsResponse(this);
        int from_bitField0_ = bitField0_;
        if (streamsBuilder_ == null) {
          if (((bitField0_ & 0x00000001) == 0x00000001)) {
            streams_ = java.util.Collections.unmodifiableList(streams_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.streams_ = streams_;
        } else {
          result.streams_ = streamsBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return (Builder) super.clone();
      }

      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }

      @java.lang.Override
      public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }

      @java.lang.Override
      public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }

      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index,
          java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }

      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other
            instanceof
            com.google.cloud.bigquery.storage.v1beta1.Storage
                .BatchCreateReadSessionStreamsResponse) {
          return mergeFrom(
              (com.google.cloud.bigquery.storage.v1beta1.Storage
                      .BatchCreateReadSessionStreamsResponse)
                  other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(
          com.google.cloud.bigquery.storage.v1beta1.Storage.BatchCreateReadSessionStreamsResponse
              other) {
        if (other
            == com.google.cloud.bigquery.storage.v1beta1.Storage
                .BatchCreateReadSessionStreamsResponse.getDefaultInstance()) return this;
        if (streamsBuilder_ == null) {
          if (!other.streams_.isEmpty()) {
            if (streams_.isEmpty()) {
              streams_ = other.streams_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureStreamsIsMutable();
              streams_.addAll(other.streams_);
            }
            onChanged();
          }
        } else {
          if (!other.streams_.isEmpty()) {
            if (streamsBuilder_.isEmpty()) {
              streamsBuilder_.dispose();
              streamsBuilder_ = null;
              streams_ = other.streams_;
              bitField0_ = (bitField0_ & ~0x00000001);
              streamsBuilder_ =
                  com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders
                      ? getStreamsFieldBuilder()
                      : null;
            } else {
              streamsBuilder_.addAllMessages(other.streams_);
            }
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

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

      private int bitField0_;

      private java.util.List<com.google.cloud.bigquery.storage.v1beta1.Storage.Stream> streams_ =
          java.util.Collections.emptyList();

      private void ensureStreamsIsMutable() {
        if (!((bitField0_ & 0x00000001) == 0x00000001)) {
          streams_ =
              new java.util.ArrayList<com.google.cloud.bigquery.storage.v1beta1.Storage.Stream>(
                  streams_);
          bitField0_ |= 0x00000001;
        }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.cloud.bigquery.storage.v1beta1.Storage.Stream,
              com.google.cloud.bigquery.storage.v1beta1.Storage.Stream.Builder,
              com.google.cloud.bigquery.storage.v1beta1.Storage.StreamOrBuilder>
          streamsBuilder_;

      /**
       *
       *
       * <pre>
       * Newly added streams.
       * </pre>
       *
       * <code>repeated .google.cloud.bigquery.storage.v1beta1.Stream streams = 1;</code>
       */
      public java.util.List<com.google.cloud.bigquery.storage.v1beta1.Storage.Stream>
          getStreamsList() {
        if (streamsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(streams_);
        } else {
          return streamsBuilder_.getMessageList();
        }
      }
      /**
       *
       *
       * <pre>
       * Newly added streams.
       * </pre>
       *
       * <code>repeated .google.cloud.bigquery.storage.v1beta1.Stream streams = 1;</code>
       */
      public int getStreamsCount() {
        if (streamsBuilder_ == null) {
          return streams_.size();
        } else {
          return streamsBuilder_.getCount();
        }
      }
      /**
       *
       *
       * <pre>
       * Newly added streams.
       * </pre>
       *
       * <code>repeated .google.cloud.bigquery.storage.v1beta1.Stream streams = 1;</code>
       */
      public com.google.cloud.bigquery.storage.v1beta1.Storage.Stream getStreams(int index) {
        if (streamsBuilder_ == null) {
          return streams_.get(index);
        } else {
          return streamsBuilder_.getMessage(index);
        }
      }
      /**
       *
       *
       * <pre>
       * Newly added streams.
       * </pre>
       *
       * <code>repeated .google.cloud.bigquery.storage.v1beta1.Stream streams = 1;</code>
       */
      public Builder setStreams(
          int index, com.google.cloud.bigquery.storage.v1beta1.Storage.Stream value) {
        if (streamsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureStreamsIsMutable();
          streams_.set(index, value);
          onChanged();
        } else {
          streamsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * Newly added streams.
       * </pre>
       *
       * <code>repeated .google.cloud.bigquery.storage.v1beta1.Stream streams = 1;</code>
       */
      public Builder setStreams(
          int index,
          com.google.cloud.bigquery.storage.v1beta1.Storage.Stream.Builder builderForValue) {
        if (streamsBuilder_ == null) {
          ensureStreamsIsMutable();
          streams_.set(index, builderForValue.build());
          onChanged();
        } else {
          streamsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * Newly added streams.
       * </pre>
       *
       * <code>repeated .google.cloud.bigquery.storage.v1beta1.Stream streams = 1;</code>
       */
      public Builder addStreams(com.google.cloud.bigquery.storage.v1beta1.Storage.Stream value) {
        if (streamsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureStreamsIsMutable();
          streams_.add(value);
          onChanged();
        } else {
          streamsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * Newly added streams.
       * </pre>
       *
       * <code>repeated .google.cloud.bigquery.storage.v1beta1.Stream streams = 1;</code>
       */
      public Builder addStreams(
          int index, com.google.cloud.bigquery.storage.v1beta1.Storage.Stream value) {
        if (streamsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureStreamsIsMutable();
          streams_.add(index, value);
          onChanged();
        } else {
          streamsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * Newly added streams.
       * </pre>
       *
       * <code>repeated .google.cloud.bigquery.storage.v1beta1.Stream streams = 1;</code>
       */
      public Builder addStreams(
          com.google.cloud.bigquery.storage.v1beta1.Storage.Stream.Builder builderForValue) {
        if (streamsBuilder_ == null) {
          ensureStreamsIsMutable();
          streams_.add(builderForValue.build());
          onChanged();
        } else {
          streamsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * Newly added streams.
       * </pre>
       *
       * <code>repeated .google.cloud.bigquery.storage.v1beta1.Stream streams = 1;</code>
       */
      public Builder addStreams(
          int index,
          com.google.cloud.bigquery.storage.v1beta1.Storage.Stream.Builder builderForValue) {
        if (streamsBuilder_ == null) {
          ensureStreamsIsMutable();
          streams_.add(index, builderForValue.build());
          onChanged();
        } else {
          streamsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * Newly added streams.
       * </pre>
       *
       * <code>repeated .google.cloud.bigquery.storage.v1beta1.Stream streams = 1;</code>
       */
      public Builder addAllStreams(
          java.lang.Iterable<? extends com.google.cloud.bigquery.storage.v1beta1.Storage.Stream>
              values) {
        if (streamsBuilder_ == null) {
          ensureStreamsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(values, streams_);
          onChanged();
        } else {
          streamsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * Newly added streams.
       * </pre>
       *
       * <code>repeated .google.cloud.bigquery.storage.v1beta1.Stream streams = 1;</code>
       */
      public Builder clearStreams() {
        if (streamsBuilder_ == null) {
          streams_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          streamsBuilder_.clear();
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * Newly added streams.
       * </pre>
       *
       * <code>repeated .google.cloud.bigquery.storage.v1beta1.Stream streams = 1;</code>
       */
      public Builder removeStreams(int index) {
        if (streamsBuilder_ == null) {
          ensureStreamsIsMutable();
          streams_.remove(index);
          onChanged();
        } else {
          streamsBuilder_.remove(index);
        }
        return this;
      }
      /**
       *
       *
       * <pre>
       * Newly added streams.
       * </pre>
       *
       * <code>repeated .google.cloud.bigquery.storage.v1beta1.Stream streams = 1;</code>
       */
      public com.google.cloud.bigquery.storage.v1beta1.Storage.Stream.Builder getStreamsBuilder(
          int index) {
        return getStreamsFieldBuilder().getBuilder(index);
      }
      /**
       *
       *
       * <pre>
       * Newly added streams.
       * </pre>
       *
       * <code>repeated .google.cloud.bigquery.storage.v1beta1.Stream streams = 1;</code>
       */
      public com.google.cloud.bigquery.storage.v1beta1.Storage.StreamOrBuilder getStreamsOrBuilder(
          int index) {
        if (streamsBuilder_ == null) {
          return streams_.get(index);
        } else {
          return streamsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       *
       *
       * <pre>
       * Newly added streams.
       * </pre>
       *
       * <code>repeated .google.cloud.bigquery.storage.v1beta1.Stream streams = 1;</code>
       */
      public java.util.List<
              ? extends com.google.cloud.bigquery.storage.v1beta1.Storage.StreamOrBuilder>
          getStreamsOrBuilderList() {
        if (streamsBuilder_ != null) {
          return streamsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(streams_);
        }
      }
      /**
       *
       *
       * <pre>
       * Newly added streams.
       * </pre>
       *
       * <code>repeated .google.cloud.bigquery.storage.v1beta1.Stream streams = 1;</code>
       */
      public com.google.cloud.bigquery.storage.v1beta1.Storage.Stream.Builder addStreamsBuilder() {
        return getStreamsFieldBuilder()
            .addBuilder(
                com.google.cloud.bigquery.storage.v1beta1.Storage.Stream.getDefaultInstance());
      }
      /**
       *
       *
       * <pre>
       * Newly added streams.
       * </pre>
       *
       * <code>repeated .google.cloud.bigquery.storage.v1beta1.Stream streams = 1;</code>
       */
      public com.google.cloud.bigquery.storage.v1beta1.Storage.Stream.Builder addStreamsBuilder(
          int index) {
        return getStreamsFieldBuilder()
            .addBuilder(
                index,
                com.google.cloud.bigquery.storage.v1beta1.Storage.Stream.getDefaultInstance());
      }
      /**
       *
       *
       * <pre>
       * Newly added streams.
       * </pre>
       *
       * <code>repeated .google.cloud.bigquery.storage.v1beta1.Stream streams = 1;</code>
       */
      public java.util.List<com.google.cloud.bigquery.storage.v1beta1.Storage.Stream.Builder>
          getStreamsBuilderList() {
        return getStreamsFieldBuilder().getBuilderList();
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.cloud.bigquery.storage.v1beta1.Storage.Stream,
              com.google.cloud.bigquery.storage.v1beta1.Storage.Stream.Builder,
              com.google.cloud.bigquery.storage.v1beta1.Storage.StreamOrBuilder>
          getStreamsFieldBuilder() {
        if (streamsBuilder_ == null) {
          streamsBuilder_ =
              new com.google.protobuf.RepeatedFieldBuilderV3<
                  com.google.cloud.bigquery.storage.v1beta1.Storage.Stream,
                  com.google.cloud.bigquery.storage.v1beta1.Storage.Stream.Builder,
                  com.google.cloud.bigquery.storage.v1beta1.Storage.StreamOrBuilder>(
                  streams_,
                  ((bitField0_ & 0x00000001) == 0x00000001),
                  getParentForChildren(),
                  isClean());
          streams_ = null;
        }
        return streamsBuilder_;
      }

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

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

      // @@protoc_insertion_point(builder_scope:google.cloud.bigquery.storage.v1beta1.BatchCreateReadSessionStreamsResponse)
    }

    // @@protoc_insertion_point(class_scope:google.cloud.bigquery.storage.v1beta1.BatchCreateReadSessionStreamsResponse)
    private static final com.google.cloud.bigquery.storage.v1beta1.Storage
            .BatchCreateReadSessionStreamsResponse
        DEFAULT_INSTANCE;

    static {
      DEFAULT_INSTANCE =
          new com.google.cloud.bigquery.storage.v1beta1.Storage
              .BatchCreateReadSessionStreamsResponse();
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage
            .BatchCreateReadSessionStreamsResponse
        getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.google.cloud.bigquery.storage.v1beta1.Storage.BatchCreateReadSessionStreamsResponse
        getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }
  }

  public interface FinalizeStreamRequestOrBuilder
      extends
      // @@protoc_insertion_point(interface_extends:google.cloud.bigquery.storage.v1beta1.FinalizeStreamRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     *
     *
     * <pre>
     * Stream to finalize.
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.Stream stream = 2;</code>
     */
    boolean hasStream();
    /**
     *
     *
     * <pre>
     * Stream to finalize.
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.Stream stream = 2;</code>
     */
    com.google.cloud.bigquery.storage.v1beta1.Storage.Stream getStream();
    /**
     *
     *
     * <pre>
     * Stream to finalize.
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.Stream stream = 2;</code>
     */
    com.google.cloud.bigquery.storage.v1beta1.Storage.StreamOrBuilder getStreamOrBuilder();
  }
  /**
   *
   *
   * <pre>
   * Request information for invoking `FinalizeStream`.
   * </pre>
   *
   * Protobuf type {@code google.cloud.bigquery.storage.v1beta1.FinalizeStreamRequest}
   */
  public static final class FinalizeStreamRequest extends com.google.protobuf.GeneratedMessageV3
      implements
      // @@protoc_insertion_point(message_implements:google.cloud.bigquery.storage.v1beta1.FinalizeStreamRequest)
      FinalizeStreamRequestOrBuilder {
    private static final long serialVersionUID = 0L;
    // Use FinalizeStreamRequest.newBuilder() to construct.
    private FinalizeStreamRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }

    private FinalizeStreamRequest() {}

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
      return this.unknownFields;
    }

    private FinalizeStreamRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 18:
              {
                com.google.cloud.bigquery.storage.v1beta1.Storage.Stream.Builder subBuilder = null;
                if (stream_ != null) {
                  subBuilder = stream_.toBuilder();
                }
                stream_ =
                    input.readMessage(
                        com.google.cloud.bigquery.storage.v1beta1.Storage.Stream.parser(),
                        extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(stream_);
                  stream_ = subBuilder.buildPartial();
                }

                break;
              }
            default:
              {
                if (!parseUnknownFieldProto3(input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }

    public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
      return com.google.cloud.bigquery.storage.v1beta1.Storage
          .internal_static_google_cloud_bigquery_storage_v1beta1_FinalizeStreamRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.cloud.bigquery.storage.v1beta1.Storage
          .internal_static_google_cloud_bigquery_storage_v1beta1_FinalizeStreamRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.cloud.bigquery.storage.v1beta1.Storage.FinalizeStreamRequest.class,
              com.google.cloud.bigquery.storage.v1beta1.Storage.FinalizeStreamRequest.Builder
                  .class);
    }

    public static final int STREAM_FIELD_NUMBER = 2;
    private com.google.cloud.bigquery.storage.v1beta1.Storage.Stream stream_;
    /**
     *
     *
     * <pre>
     * Stream to finalize.
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.Stream stream = 2;</code>
     */
    public boolean hasStream() {
      return stream_ != null;
    }
    /**
     *
     *
     * <pre>
     * Stream to finalize.
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.Stream stream = 2;</code>
     */
    public com.google.cloud.bigquery.storage.v1beta1.Storage.Stream getStream() {
      return stream_ == null
          ? com.google.cloud.bigquery.storage.v1beta1.Storage.Stream.getDefaultInstance()
          : stream_;
    }
    /**
     *
     *
     * <pre>
     * Stream to finalize.
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.Stream stream = 2;</code>
     */
    public com.google.cloud.bigquery.storage.v1beta1.Storage.StreamOrBuilder getStreamOrBuilder() {
      return getStream();
    }

    private byte memoizedIsInitialized = -1;

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

      memoizedIsInitialized = 1;
      return true;
    }

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

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

      size = 0;
      if (stream_ != null) {
        size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getStream());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
        return true;
      }
      if (!(obj
          instanceof com.google.cloud.bigquery.storage.v1beta1.Storage.FinalizeStreamRequest)) {
        return super.equals(obj);
      }
      com.google.cloud.bigquery.storage.v1beta1.Storage.FinalizeStreamRequest other =
          (com.google.cloud.bigquery.storage.v1beta1.Storage.FinalizeStreamRequest) obj;

      boolean result = true;
      result = result && (hasStream() == other.hasStream());
      if (hasStream()) {
        result = result && getStream().equals(other.getStream());
      }
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

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

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.FinalizeStreamRequest parseFrom(
        java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.FinalizeStreamRequest parseFrom(
        java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.FinalizeStreamRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.FinalizeStreamRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.FinalizeStreamRequest parseFrom(
        byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.FinalizeStreamRequest parseFrom(
        byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.FinalizeStreamRequest parseFrom(
        java.io.InputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.FinalizeStreamRequest parseFrom(
        java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
          PARSER, input, extensionRegistry);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.FinalizeStreamRequest
        parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.FinalizeStreamRequest
        parseDelimitedFrom(
            java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(
          PARSER, input, extensionRegistry);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.FinalizeStreamRequest parseFrom(
        com.google.protobuf.CodedInputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.FinalizeStreamRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
          PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() {
      return newBuilder();
    }

    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }

    public static Builder newBuilder(
        com.google.cloud.bigquery.storage.v1beta1.Storage.FinalizeStreamRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }

    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     *
     *
     * <pre>
     * Request information for invoking `FinalizeStream`.
     * </pre>
     *
     * Protobuf type {@code google.cloud.bigquery.storage.v1beta1.FinalizeStreamRequest}
     */
    public static final class Builder
        extends com.google.protobuf.GeneratedMessageV3.Builder<Builder>
        implements
        // @@protoc_insertion_point(builder_implements:google.cloud.bigquery.storage.v1beta1.FinalizeStreamRequest)
        com.google.cloud.bigquery.storage.v1beta1.Storage.FinalizeStreamRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
        return com.google.cloud.bigquery.storage.v1beta1.Storage
            .internal_static_google_cloud_bigquery_storage_v1beta1_FinalizeStreamRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.cloud.bigquery.storage.v1beta1.Storage
            .internal_static_google_cloud_bigquery_storage_v1beta1_FinalizeStreamRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.cloud.bigquery.storage.v1beta1.Storage.FinalizeStreamRequest.class,
                com.google.cloud.bigquery.storage.v1beta1.Storage.FinalizeStreamRequest.Builder
                    .class);
      }

      // Construct using
      // com.google.cloud.bigquery.storage.v1beta1.Storage.FinalizeStreamRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }

      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {}
      }

      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (streamBuilder_ == null) {
          stream_ = null;
        } else {
          stream_ = null;
          streamBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
        return com.google.cloud.bigquery.storage.v1beta1.Storage
            .internal_static_google_cloud_bigquery_storage_v1beta1_FinalizeStreamRequest_descriptor;
      }

      @java.lang.Override
      public com.google.cloud.bigquery.storage.v1beta1.Storage.FinalizeStreamRequest
          getDefaultInstanceForType() {
        return com.google.cloud.bigquery.storage.v1beta1.Storage.FinalizeStreamRequest
            .getDefaultInstance();
      }

      @java.lang.Override
      public com.google.cloud.bigquery.storage.v1beta1.Storage.FinalizeStreamRequest build() {
        com.google.cloud.bigquery.storage.v1beta1.Storage.FinalizeStreamRequest result =
            buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.google.cloud.bigquery.storage.v1beta1.Storage.FinalizeStreamRequest
          buildPartial() {
        com.google.cloud.bigquery.storage.v1beta1.Storage.FinalizeStreamRequest result =
            new com.google.cloud.bigquery.storage.v1beta1.Storage.FinalizeStreamRequest(this);
        if (streamBuilder_ == null) {
          result.stream_ = stream_;
        } else {
          result.stream_ = streamBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return (Builder) super.clone();
      }

      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }

      @java.lang.Override
      public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }

      @java.lang.Override
      public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }

      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index,
          java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }

      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other
            instanceof com.google.cloud.bigquery.storage.v1beta1.Storage.FinalizeStreamRequest) {
          return mergeFrom(
              (com.google.cloud.bigquery.storage.v1beta1.Storage.FinalizeStreamRequest) other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(
          com.google.cloud.bigquery.storage.v1beta1.Storage.FinalizeStreamRequest other) {
        if (other
            == com.google.cloud.bigquery.storage.v1beta1.Storage.FinalizeStreamRequest
                .getDefaultInstance()) return this;
        if (other.hasStream()) {
          mergeStream(other.getStream());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

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

      private com.google.cloud.bigquery.storage.v1beta1.Storage.Stream stream_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
              com.google.cloud.bigquery.storage.v1beta1.Storage.Stream,
              com.google.cloud.bigquery.storage.v1beta1.Storage.Stream.Builder,
              com.google.cloud.bigquery.storage.v1beta1.Storage.StreamOrBuilder>
          streamBuilder_;
      /**
       *
       *
       * <pre>
       * Stream to finalize.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.Stream stream = 2;</code>
       */
      public boolean hasStream() {
        return streamBuilder_ != null || stream_ != null;
      }
      /**
       *
       *
       * <pre>
       * Stream to finalize.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.Stream stream = 2;</code>
       */
      public com.google.cloud.bigquery.storage.v1beta1.Storage.Stream getStream() {
        if (streamBuilder_ == null) {
          return stream_ == null
              ? com.google.cloud.bigquery.storage.v1beta1.Storage.Stream.getDefaultInstance()
              : stream_;
        } else {
          return streamBuilder_.getMessage();
        }
      }
      /**
       *
       *
       * <pre>
       * Stream to finalize.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.Stream stream = 2;</code>
       */
      public Builder setStream(com.google.cloud.bigquery.storage.v1beta1.Storage.Stream value) {
        if (streamBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          stream_ = value;
          onChanged();
        } else {
          streamBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       *
       *
       * <pre>
       * Stream to finalize.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.Stream stream = 2;</code>
       */
      public Builder setStream(
          com.google.cloud.bigquery.storage.v1beta1.Storage.Stream.Builder builderForValue) {
        if (streamBuilder_ == null) {
          stream_ = builderForValue.build();
          onChanged();
        } else {
          streamBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       *
       *
       * <pre>
       * Stream to finalize.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.Stream stream = 2;</code>
       */
      public Builder mergeStream(com.google.cloud.bigquery.storage.v1beta1.Storage.Stream value) {
        if (streamBuilder_ == null) {
          if (stream_ != null) {
            stream_ =
                com.google.cloud.bigquery.storage.v1beta1.Storage.Stream.newBuilder(stream_)
                    .mergeFrom(value)
                    .buildPartial();
          } else {
            stream_ = value;
          }
          onChanged();
        } else {
          streamBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       *
       *
       * <pre>
       * Stream to finalize.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.Stream stream = 2;</code>
       */
      public Builder clearStream() {
        if (streamBuilder_ == null) {
          stream_ = null;
          onChanged();
        } else {
          stream_ = null;
          streamBuilder_ = null;
        }

        return this;
      }
      /**
       *
       *
       * <pre>
       * Stream to finalize.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.Stream stream = 2;</code>
       */
      public com.google.cloud.bigquery.storage.v1beta1.Storage.Stream.Builder getStreamBuilder() {

        onChanged();
        return getStreamFieldBuilder().getBuilder();
      }
      /**
       *
       *
       * <pre>
       * Stream to finalize.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.Stream stream = 2;</code>
       */
      public com.google.cloud.bigquery.storage.v1beta1.Storage.StreamOrBuilder
          getStreamOrBuilder() {
        if (streamBuilder_ != null) {
          return streamBuilder_.getMessageOrBuilder();
        } else {
          return stream_ == null
              ? com.google.cloud.bigquery.storage.v1beta1.Storage.Stream.getDefaultInstance()
              : stream_;
        }
      }
      /**
       *
       *
       * <pre>
       * Stream to finalize.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.Stream stream = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
              com.google.cloud.bigquery.storage.v1beta1.Storage.Stream,
              com.google.cloud.bigquery.storage.v1beta1.Storage.Stream.Builder,
              com.google.cloud.bigquery.storage.v1beta1.Storage.StreamOrBuilder>
          getStreamFieldBuilder() {
        if (streamBuilder_ == null) {
          streamBuilder_ =
              new com.google.protobuf.SingleFieldBuilderV3<
                  com.google.cloud.bigquery.storage.v1beta1.Storage.Stream,
                  com.google.cloud.bigquery.storage.v1beta1.Storage.Stream.Builder,
                  com.google.cloud.bigquery.storage.v1beta1.Storage.StreamOrBuilder>(
                  getStream(), getParentForChildren(), isClean());
          stream_ = null;
        }
        return streamBuilder_;
      }

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

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

      // @@protoc_insertion_point(builder_scope:google.cloud.bigquery.storage.v1beta1.FinalizeStreamRequest)
    }

    // @@protoc_insertion_point(class_scope:google.cloud.bigquery.storage.v1beta1.FinalizeStreamRequest)
    private static final com.google.cloud.bigquery.storage.v1beta1.Storage.FinalizeStreamRequest
        DEFAULT_INSTANCE;

    static {
      DEFAULT_INSTANCE =
          new com.google.cloud.bigquery.storage.v1beta1.Storage.FinalizeStreamRequest();
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.FinalizeStreamRequest
        getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.google.cloud.bigquery.storage.v1beta1.Storage.FinalizeStreamRequest
        getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }
  }

  public interface SplitReadStreamRequestOrBuilder
      extends
      // @@protoc_insertion_point(interface_extends:google.cloud.bigquery.storage.v1beta1.SplitReadStreamRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     *
     *
     * <pre>
     * Stream to split.
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.Stream original_stream = 1;</code>
     */
    boolean hasOriginalStream();
    /**
     *
     *
     * <pre>
     * Stream to split.
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.Stream original_stream = 1;</code>
     */
    com.google.cloud.bigquery.storage.v1beta1.Storage.Stream getOriginalStream();
    /**
     *
     *
     * <pre>
     * Stream to split.
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.Stream original_stream = 1;</code>
     */
    com.google.cloud.bigquery.storage.v1beta1.Storage.StreamOrBuilder getOriginalStreamOrBuilder();
  }
  /**
   *
   *
   * <pre>
   * Request information for `SplitReadStream`.
   * </pre>
   *
   * Protobuf type {@code google.cloud.bigquery.storage.v1beta1.SplitReadStreamRequest}
   */
  public static final class SplitReadStreamRequest extends com.google.protobuf.GeneratedMessageV3
      implements
      // @@protoc_insertion_point(message_implements:google.cloud.bigquery.storage.v1beta1.SplitReadStreamRequest)
      SplitReadStreamRequestOrBuilder {
    private static final long serialVersionUID = 0L;
    // Use SplitReadStreamRequest.newBuilder() to construct.
    private SplitReadStreamRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }

    private SplitReadStreamRequest() {}

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
      return this.unknownFields;
    }

    private SplitReadStreamRequest(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10:
              {
                com.google.cloud.bigquery.storage.v1beta1.Storage.Stream.Builder subBuilder = null;
                if (originalStream_ != null) {
                  subBuilder = originalStream_.toBuilder();
                }
                originalStream_ =
                    input.readMessage(
                        com.google.cloud.bigquery.storage.v1beta1.Storage.Stream.parser(),
                        extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(originalStream_);
                  originalStream_ = subBuilder.buildPartial();
                }

                break;
              }
            default:
              {
                if (!parseUnknownFieldProto3(input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }

    public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
      return com.google.cloud.bigquery.storage.v1beta1.Storage
          .internal_static_google_cloud_bigquery_storage_v1beta1_SplitReadStreamRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.cloud.bigquery.storage.v1beta1.Storage
          .internal_static_google_cloud_bigquery_storage_v1beta1_SplitReadStreamRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.cloud.bigquery.storage.v1beta1.Storage.SplitReadStreamRequest.class,
              com.google.cloud.bigquery.storage.v1beta1.Storage.SplitReadStreamRequest.Builder
                  .class);
    }

    public static final int ORIGINAL_STREAM_FIELD_NUMBER = 1;
    private com.google.cloud.bigquery.storage.v1beta1.Storage.Stream originalStream_;
    /**
     *
     *
     * <pre>
     * Stream to split.
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.Stream original_stream = 1;</code>
     */
    public boolean hasOriginalStream() {
      return originalStream_ != null;
    }
    /**
     *
     *
     * <pre>
     * Stream to split.
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.Stream original_stream = 1;</code>
     */
    public com.google.cloud.bigquery.storage.v1beta1.Storage.Stream getOriginalStream() {
      return originalStream_ == null
          ? com.google.cloud.bigquery.storage.v1beta1.Storage.Stream.getDefaultInstance()
          : originalStream_;
    }
    /**
     *
     *
     * <pre>
     * Stream to split.
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.Stream original_stream = 1;</code>
     */
    public com.google.cloud.bigquery.storage.v1beta1.Storage.StreamOrBuilder
        getOriginalStreamOrBuilder() {
      return getOriginalStream();
    }

    private byte memoizedIsInitialized = -1;

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

      memoizedIsInitialized = 1;
      return true;
    }

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

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

      size = 0;
      if (originalStream_ != null) {
        size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getOriginalStream());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
        return true;
      }
      if (!(obj
          instanceof com.google.cloud.bigquery.storage.v1beta1.Storage.SplitReadStreamRequest)) {
        return super.equals(obj);
      }
      com.google.cloud.bigquery.storage.v1beta1.Storage.SplitReadStreamRequest other =
          (com.google.cloud.bigquery.storage.v1beta1.Storage.SplitReadStreamRequest) obj;

      boolean result = true;
      result = result && (hasOriginalStream() == other.hasOriginalStream());
      if (hasOriginalStream()) {
        result = result && getOriginalStream().equals(other.getOriginalStream());
      }
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

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

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.SplitReadStreamRequest
        parseFrom(java.nio.ByteBuffer data)
            throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.SplitReadStreamRequest
        parseFrom(
            java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.SplitReadStreamRequest
        parseFrom(com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.SplitReadStreamRequest
        parseFrom(
            com.google.protobuf.ByteString data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.SplitReadStreamRequest
        parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.SplitReadStreamRequest
        parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.SplitReadStreamRequest
        parseFrom(java.io.InputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.SplitReadStreamRequest
        parseFrom(
            java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
          PARSER, input, extensionRegistry);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.SplitReadStreamRequest
        parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.SplitReadStreamRequest
        parseDelimitedFrom(
            java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(
          PARSER, input, extensionRegistry);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.SplitReadStreamRequest
        parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.SplitReadStreamRequest
        parseFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
          PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() {
      return newBuilder();
    }

    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }

    public static Builder newBuilder(
        com.google.cloud.bigquery.storage.v1beta1.Storage.SplitReadStreamRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }

    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     *
     *
     * <pre>
     * Request information for `SplitReadStream`.
     * </pre>
     *
     * Protobuf type {@code google.cloud.bigquery.storage.v1beta1.SplitReadStreamRequest}
     */
    public static final class Builder
        extends com.google.protobuf.GeneratedMessageV3.Builder<Builder>
        implements
        // @@protoc_insertion_point(builder_implements:google.cloud.bigquery.storage.v1beta1.SplitReadStreamRequest)
        com.google.cloud.bigquery.storage.v1beta1.Storage.SplitReadStreamRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
        return com.google.cloud.bigquery.storage.v1beta1.Storage
            .internal_static_google_cloud_bigquery_storage_v1beta1_SplitReadStreamRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.cloud.bigquery.storage.v1beta1.Storage
            .internal_static_google_cloud_bigquery_storage_v1beta1_SplitReadStreamRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.cloud.bigquery.storage.v1beta1.Storage.SplitReadStreamRequest.class,
                com.google.cloud.bigquery.storage.v1beta1.Storage.SplitReadStreamRequest.Builder
                    .class);
      }

      // Construct using
      // com.google.cloud.bigquery.storage.v1beta1.Storage.SplitReadStreamRequest.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }

      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {}
      }

      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (originalStreamBuilder_ == null) {
          originalStream_ = null;
        } else {
          originalStream_ = null;
          originalStreamBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
        return com.google.cloud.bigquery.storage.v1beta1.Storage
            .internal_static_google_cloud_bigquery_storage_v1beta1_SplitReadStreamRequest_descriptor;
      }

      @java.lang.Override
      public com.google.cloud.bigquery.storage.v1beta1.Storage.SplitReadStreamRequest
          getDefaultInstanceForType() {
        return com.google.cloud.bigquery.storage.v1beta1.Storage.SplitReadStreamRequest
            .getDefaultInstance();
      }

      @java.lang.Override
      public com.google.cloud.bigquery.storage.v1beta1.Storage.SplitReadStreamRequest build() {
        com.google.cloud.bigquery.storage.v1beta1.Storage.SplitReadStreamRequest result =
            buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.google.cloud.bigquery.storage.v1beta1.Storage.SplitReadStreamRequest
          buildPartial() {
        com.google.cloud.bigquery.storage.v1beta1.Storage.SplitReadStreamRequest result =
            new com.google.cloud.bigquery.storage.v1beta1.Storage.SplitReadStreamRequest(this);
        if (originalStreamBuilder_ == null) {
          result.originalStream_ = originalStream_;
        } else {
          result.originalStream_ = originalStreamBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return (Builder) super.clone();
      }

      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }

      @java.lang.Override
      public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }

      @java.lang.Override
      public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }

      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index,
          java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }

      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other
            instanceof com.google.cloud.bigquery.storage.v1beta1.Storage.SplitReadStreamRequest) {
          return mergeFrom(
              (com.google.cloud.bigquery.storage.v1beta1.Storage.SplitReadStreamRequest) other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(
          com.google.cloud.bigquery.storage.v1beta1.Storage.SplitReadStreamRequest other) {
        if (other
            == com.google.cloud.bigquery.storage.v1beta1.Storage.SplitReadStreamRequest
                .getDefaultInstance()) return this;
        if (other.hasOriginalStream()) {
          mergeOriginalStream(other.getOriginalStream());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

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

      private com.google.cloud.bigquery.storage.v1beta1.Storage.Stream originalStream_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
              com.google.cloud.bigquery.storage.v1beta1.Storage.Stream,
              com.google.cloud.bigquery.storage.v1beta1.Storage.Stream.Builder,
              com.google.cloud.bigquery.storage.v1beta1.Storage.StreamOrBuilder>
          originalStreamBuilder_;
      /**
       *
       *
       * <pre>
       * Stream to split.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.Stream original_stream = 1;</code>
       */
      public boolean hasOriginalStream() {
        return originalStreamBuilder_ != null || originalStream_ != null;
      }
      /**
       *
       *
       * <pre>
       * Stream to split.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.Stream original_stream = 1;</code>
       */
      public com.google.cloud.bigquery.storage.v1beta1.Storage.Stream getOriginalStream() {
        if (originalStreamBuilder_ == null) {
          return originalStream_ == null
              ? com.google.cloud.bigquery.storage.v1beta1.Storage.Stream.getDefaultInstance()
              : originalStream_;
        } else {
          return originalStreamBuilder_.getMessage();
        }
      }
      /**
       *
       *
       * <pre>
       * Stream to split.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.Stream original_stream = 1;</code>
       */
      public Builder setOriginalStream(
          com.google.cloud.bigquery.storage.v1beta1.Storage.Stream value) {
        if (originalStreamBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          originalStream_ = value;
          onChanged();
        } else {
          originalStreamBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       *
       *
       * <pre>
       * Stream to split.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.Stream original_stream = 1;</code>
       */
      public Builder setOriginalStream(
          com.google.cloud.bigquery.storage.v1beta1.Storage.Stream.Builder builderForValue) {
        if (originalStreamBuilder_ == null) {
          originalStream_ = builderForValue.build();
          onChanged();
        } else {
          originalStreamBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       *
       *
       * <pre>
       * Stream to split.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.Stream original_stream = 1;</code>
       */
      public Builder mergeOriginalStream(
          com.google.cloud.bigquery.storage.v1beta1.Storage.Stream value) {
        if (originalStreamBuilder_ == null) {
          if (originalStream_ != null) {
            originalStream_ =
                com.google.cloud.bigquery.storage.v1beta1.Storage.Stream.newBuilder(originalStream_)
                    .mergeFrom(value)
                    .buildPartial();
          } else {
            originalStream_ = value;
          }
          onChanged();
        } else {
          originalStreamBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       *
       *
       * <pre>
       * Stream to split.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.Stream original_stream = 1;</code>
       */
      public Builder clearOriginalStream() {
        if (originalStreamBuilder_ == null) {
          originalStream_ = null;
          onChanged();
        } else {
          originalStream_ = null;
          originalStreamBuilder_ = null;
        }

        return this;
      }
      /**
       *
       *
       * <pre>
       * Stream to split.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.Stream original_stream = 1;</code>
       */
      public com.google.cloud.bigquery.storage.v1beta1.Storage.Stream.Builder
          getOriginalStreamBuilder() {

        onChanged();
        return getOriginalStreamFieldBuilder().getBuilder();
      }
      /**
       *
       *
       * <pre>
       * Stream to split.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.Stream original_stream = 1;</code>
       */
      public com.google.cloud.bigquery.storage.v1beta1.Storage.StreamOrBuilder
          getOriginalStreamOrBuilder() {
        if (originalStreamBuilder_ != null) {
          return originalStreamBuilder_.getMessageOrBuilder();
        } else {
          return originalStream_ == null
              ? com.google.cloud.bigquery.storage.v1beta1.Storage.Stream.getDefaultInstance()
              : originalStream_;
        }
      }
      /**
       *
       *
       * <pre>
       * Stream to split.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.Stream original_stream = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
              com.google.cloud.bigquery.storage.v1beta1.Storage.Stream,
              com.google.cloud.bigquery.storage.v1beta1.Storage.Stream.Builder,
              com.google.cloud.bigquery.storage.v1beta1.Storage.StreamOrBuilder>
          getOriginalStreamFieldBuilder() {
        if (originalStreamBuilder_ == null) {
          originalStreamBuilder_ =
              new com.google.protobuf.SingleFieldBuilderV3<
                  com.google.cloud.bigquery.storage.v1beta1.Storage.Stream,
                  com.google.cloud.bigquery.storage.v1beta1.Storage.Stream.Builder,
                  com.google.cloud.bigquery.storage.v1beta1.Storage.StreamOrBuilder>(
                  getOriginalStream(), getParentForChildren(), isClean());
          originalStream_ = null;
        }
        return originalStreamBuilder_;
      }

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

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

      // @@protoc_insertion_point(builder_scope:google.cloud.bigquery.storage.v1beta1.SplitReadStreamRequest)
    }

    // @@protoc_insertion_point(class_scope:google.cloud.bigquery.storage.v1beta1.SplitReadStreamRequest)
    private static final com.google.cloud.bigquery.storage.v1beta1.Storage.SplitReadStreamRequest
        DEFAULT_INSTANCE;

    static {
      DEFAULT_INSTANCE =
          new com.google.cloud.bigquery.storage.v1beta1.Storage.SplitReadStreamRequest();
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.SplitReadStreamRequest
        getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.google.cloud.bigquery.storage.v1beta1.Storage.SplitReadStreamRequest
        getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }
  }

  public interface SplitReadStreamResponseOrBuilder
      extends
      // @@protoc_insertion_point(interface_extends:google.cloud.bigquery.storage.v1beta1.SplitReadStreamResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     *
     *
     * <pre>
     * Primary stream. Will contain the beginning portion of
     * |original_stream|.
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.Stream primary_stream = 1;</code>
     */
    boolean hasPrimaryStream();
    /**
     *
     *
     * <pre>
     * Primary stream. Will contain the beginning portion of
     * |original_stream|.
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.Stream primary_stream = 1;</code>
     */
    com.google.cloud.bigquery.storage.v1beta1.Storage.Stream getPrimaryStream();
    /**
     *
     *
     * <pre>
     * Primary stream. Will contain the beginning portion of
     * |original_stream|.
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.Stream primary_stream = 1;</code>
     */
    com.google.cloud.bigquery.storage.v1beta1.Storage.StreamOrBuilder getPrimaryStreamOrBuilder();

    /**
     *
     *
     * <pre>
     * Remainder stream. Will contain the tail of |original_stream|.
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.Stream remainder_stream = 2;</code>
     */
    boolean hasRemainderStream();
    /**
     *
     *
     * <pre>
     * Remainder stream. Will contain the tail of |original_stream|.
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.Stream remainder_stream = 2;</code>
     */
    com.google.cloud.bigquery.storage.v1beta1.Storage.Stream getRemainderStream();
    /**
     *
     *
     * <pre>
     * Remainder stream. Will contain the tail of |original_stream|.
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.Stream remainder_stream = 2;</code>
     */
    com.google.cloud.bigquery.storage.v1beta1.Storage.StreamOrBuilder getRemainderStreamOrBuilder();
  }
  /**
   *
   *
   * <pre>
   * Response from `SplitReadStream`.
   * </pre>
   *
   * Protobuf type {@code google.cloud.bigquery.storage.v1beta1.SplitReadStreamResponse}
   */
  public static final class SplitReadStreamResponse extends com.google.protobuf.GeneratedMessageV3
      implements
      // @@protoc_insertion_point(message_implements:google.cloud.bigquery.storage.v1beta1.SplitReadStreamResponse)
      SplitReadStreamResponseOrBuilder {
    private static final long serialVersionUID = 0L;
    // Use SplitReadStreamResponse.newBuilder() to construct.
    private SplitReadStreamResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }

    private SplitReadStreamResponse() {}

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
      return this.unknownFields;
    }

    private SplitReadStreamResponse(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10:
              {
                com.google.cloud.bigquery.storage.v1beta1.Storage.Stream.Builder subBuilder = null;
                if (primaryStream_ != null) {
                  subBuilder = primaryStream_.toBuilder();
                }
                primaryStream_ =
                    input.readMessage(
                        com.google.cloud.bigquery.storage.v1beta1.Storage.Stream.parser(),
                        extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(primaryStream_);
                  primaryStream_ = subBuilder.buildPartial();
                }

                break;
              }
            case 18:
              {
                com.google.cloud.bigquery.storage.v1beta1.Storage.Stream.Builder subBuilder = null;
                if (remainderStream_ != null) {
                  subBuilder = remainderStream_.toBuilder();
                }
                remainderStream_ =
                    input.readMessage(
                        com.google.cloud.bigquery.storage.v1beta1.Storage.Stream.parser(),
                        extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(remainderStream_);
                  remainderStream_ = subBuilder.buildPartial();
                }

                break;
              }
            default:
              {
                if (!parseUnknownFieldProto3(input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }

    public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
      return com.google.cloud.bigquery.storage.v1beta1.Storage
          .internal_static_google_cloud_bigquery_storage_v1beta1_SplitReadStreamResponse_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.cloud.bigquery.storage.v1beta1.Storage
          .internal_static_google_cloud_bigquery_storage_v1beta1_SplitReadStreamResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.cloud.bigquery.storage.v1beta1.Storage.SplitReadStreamResponse.class,
              com.google.cloud.bigquery.storage.v1beta1.Storage.SplitReadStreamResponse.Builder
                  .class);
    }

    public static final int PRIMARY_STREAM_FIELD_NUMBER = 1;
    private com.google.cloud.bigquery.storage.v1beta1.Storage.Stream primaryStream_;
    /**
     *
     *
     * <pre>
     * Primary stream. Will contain the beginning portion of
     * |original_stream|.
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.Stream primary_stream = 1;</code>
     */
    public boolean hasPrimaryStream() {
      return primaryStream_ != null;
    }
    /**
     *
     *
     * <pre>
     * Primary stream. Will contain the beginning portion of
     * |original_stream|.
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.Stream primary_stream = 1;</code>
     */
    public com.google.cloud.bigquery.storage.v1beta1.Storage.Stream getPrimaryStream() {
      return primaryStream_ == null
          ? com.google.cloud.bigquery.storage.v1beta1.Storage.Stream.getDefaultInstance()
          : primaryStream_;
    }
    /**
     *
     *
     * <pre>
     * Primary stream. Will contain the beginning portion of
     * |original_stream|.
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.Stream primary_stream = 1;</code>
     */
    public com.google.cloud.bigquery.storage.v1beta1.Storage.StreamOrBuilder
        getPrimaryStreamOrBuilder() {
      return getPrimaryStream();
    }

    public static final int REMAINDER_STREAM_FIELD_NUMBER = 2;
    private com.google.cloud.bigquery.storage.v1beta1.Storage.Stream remainderStream_;
    /**
     *
     *
     * <pre>
     * Remainder stream. Will contain the tail of |original_stream|.
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.Stream remainder_stream = 2;</code>
     */
    public boolean hasRemainderStream() {
      return remainderStream_ != null;
    }
    /**
     *
     *
     * <pre>
     * Remainder stream. Will contain the tail of |original_stream|.
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.Stream remainder_stream = 2;</code>
     */
    public com.google.cloud.bigquery.storage.v1beta1.Storage.Stream getRemainderStream() {
      return remainderStream_ == null
          ? com.google.cloud.bigquery.storage.v1beta1.Storage.Stream.getDefaultInstance()
          : remainderStream_;
    }
    /**
     *
     *
     * <pre>
     * Remainder stream. Will contain the tail of |original_stream|.
     * </pre>
     *
     * <code>.google.cloud.bigquery.storage.v1beta1.Stream remainder_stream = 2;</code>
     */
    public com.google.cloud.bigquery.storage.v1beta1.Storage.StreamOrBuilder
        getRemainderStreamOrBuilder() {
      return getRemainderStream();
    }

    private byte memoizedIsInitialized = -1;

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
      if (primaryStream_ != null) {
        output.writeMessage(1, getPrimaryStream());
      }
      if (remainderStream_ != null) {
        output.writeMessage(2, getRemainderStream());
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (primaryStream_ != null) {
        size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getPrimaryStream());
      }
      if (remainderStream_ != null) {
        size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getRemainderStream());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
        return true;
      }
      if (!(obj
          instanceof com.google.cloud.bigquery.storage.v1beta1.Storage.SplitReadStreamResponse)) {
        return super.equals(obj);
      }
      com.google.cloud.bigquery.storage.v1beta1.Storage.SplitReadStreamResponse other =
          (com.google.cloud.bigquery.storage.v1beta1.Storage.SplitReadStreamResponse) obj;

      boolean result = true;
      result = result && (hasPrimaryStream() == other.hasPrimaryStream());
      if (hasPrimaryStream()) {
        result = result && getPrimaryStream().equals(other.getPrimaryStream());
      }
      result = result && (hasRemainderStream() == other.hasRemainderStream());
      if (hasRemainderStream()) {
        result = result && getRemainderStream().equals(other.getRemainderStream());
      }
      result = result && unknownFields.equals(other.unknownFields);
      return result;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasPrimaryStream()) {
        hash = (37 * hash) + PRIMARY_STREAM_FIELD_NUMBER;
        hash = (53 * hash) + getPrimaryStream().hashCode();
      }
      if (hasRemainderStream()) {
        hash = (37 * hash) + REMAINDER_STREAM_FIELD_NUMBER;
        hash = (53 * hash) + getRemainderStream().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.SplitReadStreamResponse
        parseFrom(java.nio.ByteBuffer data)
            throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.SplitReadStreamResponse
        parseFrom(
            java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.SplitReadStreamResponse
        parseFrom(com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.SplitReadStreamResponse
        parseFrom(
            com.google.protobuf.ByteString data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.SplitReadStreamResponse
        parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.SplitReadStreamResponse
        parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.SplitReadStreamResponse
        parseFrom(java.io.InputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.SplitReadStreamResponse
        parseFrom(
            java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
          PARSER, input, extensionRegistry);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.SplitReadStreamResponse
        parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.SplitReadStreamResponse
        parseDelimitedFrom(
            java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(
          PARSER, input, extensionRegistry);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.SplitReadStreamResponse
        parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.SplitReadStreamResponse
        parseFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
          PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() {
      return newBuilder();
    }

    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }

    public static Builder newBuilder(
        com.google.cloud.bigquery.storage.v1beta1.Storage.SplitReadStreamResponse prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }

    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     *
     *
     * <pre>
     * Response from `SplitReadStream`.
     * </pre>
     *
     * Protobuf type {@code google.cloud.bigquery.storage.v1beta1.SplitReadStreamResponse}
     */
    public static final class Builder
        extends com.google.protobuf.GeneratedMessageV3.Builder<Builder>
        implements
        // @@protoc_insertion_point(builder_implements:google.cloud.bigquery.storage.v1beta1.SplitReadStreamResponse)
        com.google.cloud.bigquery.storage.v1beta1.Storage.SplitReadStreamResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
        return com.google.cloud.bigquery.storage.v1beta1.Storage
            .internal_static_google_cloud_bigquery_storage_v1beta1_SplitReadStreamResponse_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.cloud.bigquery.storage.v1beta1.Storage
            .internal_static_google_cloud_bigquery_storage_v1beta1_SplitReadStreamResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.cloud.bigquery.storage.v1beta1.Storage.SplitReadStreamResponse.class,
                com.google.cloud.bigquery.storage.v1beta1.Storage.SplitReadStreamResponse.Builder
                    .class);
      }

      // Construct using
      // com.google.cloud.bigquery.storage.v1beta1.Storage.SplitReadStreamResponse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }

      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {}
      }

      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (primaryStreamBuilder_ == null) {
          primaryStream_ = null;
        } else {
          primaryStream_ = null;
          primaryStreamBuilder_ = null;
        }
        if (remainderStreamBuilder_ == null) {
          remainderStream_ = null;
        } else {
          remainderStream_ = null;
          remainderStreamBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
        return com.google.cloud.bigquery.storage.v1beta1.Storage
            .internal_static_google_cloud_bigquery_storage_v1beta1_SplitReadStreamResponse_descriptor;
      }

      @java.lang.Override
      public com.google.cloud.bigquery.storage.v1beta1.Storage.SplitReadStreamResponse
          getDefaultInstanceForType() {
        return com.google.cloud.bigquery.storage.v1beta1.Storage.SplitReadStreamResponse
            .getDefaultInstance();
      }

      @java.lang.Override
      public com.google.cloud.bigquery.storage.v1beta1.Storage.SplitReadStreamResponse build() {
        com.google.cloud.bigquery.storage.v1beta1.Storage.SplitReadStreamResponse result =
            buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.google.cloud.bigquery.storage.v1beta1.Storage.SplitReadStreamResponse
          buildPartial() {
        com.google.cloud.bigquery.storage.v1beta1.Storage.SplitReadStreamResponse result =
            new com.google.cloud.bigquery.storage.v1beta1.Storage.SplitReadStreamResponse(this);
        if (primaryStreamBuilder_ == null) {
          result.primaryStream_ = primaryStream_;
        } else {
          result.primaryStream_ = primaryStreamBuilder_.build();
        }
        if (remainderStreamBuilder_ == null) {
          result.remainderStream_ = remainderStream_;
        } else {
          result.remainderStream_ = remainderStreamBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return (Builder) super.clone();
      }

      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
        return (Builder) super.setField(field, value);
      }

      @java.lang.Override
      public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
        return (Builder) super.clearField(field);
      }

      @java.lang.Override
      public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return (Builder) super.clearOneof(oneof);
      }

      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index,
          java.lang.Object value) {
        return (Builder) super.setRepeatedField(field, index, value);
      }

      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
        return (Builder) super.addRepeatedField(field, value);
      }

      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other
            instanceof com.google.cloud.bigquery.storage.v1beta1.Storage.SplitReadStreamResponse) {
          return mergeFrom(
              (com.google.cloud.bigquery.storage.v1beta1.Storage.SplitReadStreamResponse) other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(
          com.google.cloud.bigquery.storage.v1beta1.Storage.SplitReadStreamResponse other) {
        if (other
            == com.google.cloud.bigquery.storage.v1beta1.Storage.SplitReadStreamResponse
                .getDefaultInstance()) return this;
        if (other.hasPrimaryStream()) {
          mergePrimaryStream(other.getPrimaryStream());
        }
        if (other.hasRemainderStream()) {
          mergeRemainderStream(other.getRemainderStream());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }

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

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

      private com.google.cloud.bigquery.storage.v1beta1.Storage.Stream primaryStream_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
              com.google.cloud.bigquery.storage.v1beta1.Storage.Stream,
              com.google.cloud.bigquery.storage.v1beta1.Storage.Stream.Builder,
              com.google.cloud.bigquery.storage.v1beta1.Storage.StreamOrBuilder>
          primaryStreamBuilder_;
      /**
       *
       *
       * <pre>
       * Primary stream. Will contain the beginning portion of
       * |original_stream|.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.Stream primary_stream = 1;</code>
       */
      public boolean hasPrimaryStream() {
        return primaryStreamBuilder_ != null || primaryStream_ != null;
      }
      /**
       *
       *
       * <pre>
       * Primary stream. Will contain the beginning portion of
       * |original_stream|.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.Stream primary_stream = 1;</code>
       */
      public com.google.cloud.bigquery.storage.v1beta1.Storage.Stream getPrimaryStream() {
        if (primaryStreamBuilder_ == null) {
          return primaryStream_ == null
              ? com.google.cloud.bigquery.storage.v1beta1.Storage.Stream.getDefaultInstance()
              : primaryStream_;
        } else {
          return primaryStreamBuilder_.getMessage();
        }
      }
      /**
       *
       *
       * <pre>
       * Primary stream. Will contain the beginning portion of
       * |original_stream|.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.Stream primary_stream = 1;</code>
       */
      public Builder setPrimaryStream(
          com.google.cloud.bigquery.storage.v1beta1.Storage.Stream value) {
        if (primaryStreamBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          primaryStream_ = value;
          onChanged();
        } else {
          primaryStreamBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       *
       *
       * <pre>
       * Primary stream. Will contain the beginning portion of
       * |original_stream|.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.Stream primary_stream = 1;</code>
       */
      public Builder setPrimaryStream(
          com.google.cloud.bigquery.storage.v1beta1.Storage.Stream.Builder builderForValue) {
        if (primaryStreamBuilder_ == null) {
          primaryStream_ = builderForValue.build();
          onChanged();
        } else {
          primaryStreamBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       *
       *
       * <pre>
       * Primary stream. Will contain the beginning portion of
       * |original_stream|.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.Stream primary_stream = 1;</code>
       */
      public Builder mergePrimaryStream(
          com.google.cloud.bigquery.storage.v1beta1.Storage.Stream value) {
        if (primaryStreamBuilder_ == null) {
          if (primaryStream_ != null) {
            primaryStream_ =
                com.google.cloud.bigquery.storage.v1beta1.Storage.Stream.newBuilder(primaryStream_)
                    .mergeFrom(value)
                    .buildPartial();
          } else {
            primaryStream_ = value;
          }
          onChanged();
        } else {
          primaryStreamBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       *
       *
       * <pre>
       * Primary stream. Will contain the beginning portion of
       * |original_stream|.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.Stream primary_stream = 1;</code>
       */
      public Builder clearPrimaryStream() {
        if (primaryStreamBuilder_ == null) {
          primaryStream_ = null;
          onChanged();
        } else {
          primaryStream_ = null;
          primaryStreamBuilder_ = null;
        }

        return this;
      }
      /**
       *
       *
       * <pre>
       * Primary stream. Will contain the beginning portion of
       * |original_stream|.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.Stream primary_stream = 1;</code>
       */
      public com.google.cloud.bigquery.storage.v1beta1.Storage.Stream.Builder
          getPrimaryStreamBuilder() {

        onChanged();
        return getPrimaryStreamFieldBuilder().getBuilder();
      }
      /**
       *
       *
       * <pre>
       * Primary stream. Will contain the beginning portion of
       * |original_stream|.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.Stream primary_stream = 1;</code>
       */
      public com.google.cloud.bigquery.storage.v1beta1.Storage.StreamOrBuilder
          getPrimaryStreamOrBuilder() {
        if (primaryStreamBuilder_ != null) {
          return primaryStreamBuilder_.getMessageOrBuilder();
        } else {
          return primaryStream_ == null
              ? com.google.cloud.bigquery.storage.v1beta1.Storage.Stream.getDefaultInstance()
              : primaryStream_;
        }
      }
      /**
       *
       *
       * <pre>
       * Primary stream. Will contain the beginning portion of
       * |original_stream|.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.Stream primary_stream = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
              com.google.cloud.bigquery.storage.v1beta1.Storage.Stream,
              com.google.cloud.bigquery.storage.v1beta1.Storage.Stream.Builder,
              com.google.cloud.bigquery.storage.v1beta1.Storage.StreamOrBuilder>
          getPrimaryStreamFieldBuilder() {
        if (primaryStreamBuilder_ == null) {
          primaryStreamBuilder_ =
              new com.google.protobuf.SingleFieldBuilderV3<
                  com.google.cloud.bigquery.storage.v1beta1.Storage.Stream,
                  com.google.cloud.bigquery.storage.v1beta1.Storage.Stream.Builder,
                  com.google.cloud.bigquery.storage.v1beta1.Storage.StreamOrBuilder>(
                  getPrimaryStream(), getParentForChildren(), isClean());
          primaryStream_ = null;
        }
        return primaryStreamBuilder_;
      }

      private com.google.cloud.bigquery.storage.v1beta1.Storage.Stream remainderStream_ = null;
      private com.google.protobuf.SingleFieldBuilderV3<
              com.google.cloud.bigquery.storage.v1beta1.Storage.Stream,
              com.google.cloud.bigquery.storage.v1beta1.Storage.Stream.Builder,
              com.google.cloud.bigquery.storage.v1beta1.Storage.StreamOrBuilder>
          remainderStreamBuilder_;
      /**
       *
       *
       * <pre>
       * Remainder stream. Will contain the tail of |original_stream|.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.Stream remainder_stream = 2;</code>
       */
      public boolean hasRemainderStream() {
        return remainderStreamBuilder_ != null || remainderStream_ != null;
      }
      /**
       *
       *
       * <pre>
       * Remainder stream. Will contain the tail of |original_stream|.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.Stream remainder_stream = 2;</code>
       */
      public com.google.cloud.bigquery.storage.v1beta1.Storage.Stream getRemainderStream() {
        if (remainderStreamBuilder_ == null) {
          return remainderStream_ == null
              ? com.google.cloud.bigquery.storage.v1beta1.Storage.Stream.getDefaultInstance()
              : remainderStream_;
        } else {
          return remainderStreamBuilder_.getMessage();
        }
      }
      /**
       *
       *
       * <pre>
       * Remainder stream. Will contain the tail of |original_stream|.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.Stream remainder_stream = 2;</code>
       */
      public Builder setRemainderStream(
          com.google.cloud.bigquery.storage.v1beta1.Storage.Stream value) {
        if (remainderStreamBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          remainderStream_ = value;
          onChanged();
        } else {
          remainderStreamBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       *
       *
       * <pre>
       * Remainder stream. Will contain the tail of |original_stream|.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.Stream remainder_stream = 2;</code>
       */
      public Builder setRemainderStream(
          com.google.cloud.bigquery.storage.v1beta1.Storage.Stream.Builder builderForValue) {
        if (remainderStreamBuilder_ == null) {
          remainderStream_ = builderForValue.build();
          onChanged();
        } else {
          remainderStreamBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       *
       *
       * <pre>
       * Remainder stream. Will contain the tail of |original_stream|.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.Stream remainder_stream = 2;</code>
       */
      public Builder mergeRemainderStream(
          com.google.cloud.bigquery.storage.v1beta1.Storage.Stream value) {
        if (remainderStreamBuilder_ == null) {
          if (remainderStream_ != null) {
            remainderStream_ =
                com.google.cloud.bigquery.storage.v1beta1.Storage.Stream.newBuilder(
                        remainderStream_)
                    .mergeFrom(value)
                    .buildPartial();
          } else {
            remainderStream_ = value;
          }
          onChanged();
        } else {
          remainderStreamBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       *
       *
       * <pre>
       * Remainder stream. Will contain the tail of |original_stream|.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.Stream remainder_stream = 2;</code>
       */
      public Builder clearRemainderStream() {
        if (remainderStreamBuilder_ == null) {
          remainderStream_ = null;
          onChanged();
        } else {
          remainderStream_ = null;
          remainderStreamBuilder_ = null;
        }

        return this;
      }
      /**
       *
       *
       * <pre>
       * Remainder stream. Will contain the tail of |original_stream|.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.Stream remainder_stream = 2;</code>
       */
      public com.google.cloud.bigquery.storage.v1beta1.Storage.Stream.Builder
          getRemainderStreamBuilder() {

        onChanged();
        return getRemainderStreamFieldBuilder().getBuilder();
      }
      /**
       *
       *
       * <pre>
       * Remainder stream. Will contain the tail of |original_stream|.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.Stream remainder_stream = 2;</code>
       */
      public com.google.cloud.bigquery.storage.v1beta1.Storage.StreamOrBuilder
          getRemainderStreamOrBuilder() {
        if (remainderStreamBuilder_ != null) {
          return remainderStreamBuilder_.getMessageOrBuilder();
        } else {
          return remainderStream_ == null
              ? com.google.cloud.bigquery.storage.v1beta1.Storage.Stream.getDefaultInstance()
              : remainderStream_;
        }
      }
      /**
       *
       *
       * <pre>
       * Remainder stream. Will contain the tail of |original_stream|.
       * </pre>
       *
       * <code>.google.cloud.bigquery.storage.v1beta1.Stream remainder_stream = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
              com.google.cloud.bigquery.storage.v1beta1.Storage.Stream,
              com.google.cloud.bigquery.storage.v1beta1.Storage.Stream.Builder,
              com.google.cloud.bigquery.storage.v1beta1.Storage.StreamOrBuilder>
          getRemainderStreamFieldBuilder() {
        if (remainderStreamBuilder_ == null) {
          remainderStreamBuilder_ =
              new com.google.protobuf.SingleFieldBuilderV3<
                  com.google.cloud.bigquery.storage.v1beta1.Storage.Stream,
                  com.google.cloud.bigquery.storage.v1beta1.Storage.Stream.Builder,
                  com.google.cloud.bigquery.storage.v1beta1.Storage.StreamOrBuilder>(
                  getRemainderStream(), getParentForChildren(), isClean());
          remainderStream_ = null;
        }
        return remainderStreamBuilder_;
      }

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

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

      // @@protoc_insertion_point(builder_scope:google.cloud.bigquery.storage.v1beta1.SplitReadStreamResponse)
    }

    // @@protoc_insertion_point(class_scope:google.cloud.bigquery.storage.v1beta1.SplitReadStreamResponse)
    private static final com.google.cloud.bigquery.storage.v1beta1.Storage.SplitReadStreamResponse
        DEFAULT_INSTANCE;

    static {
      DEFAULT_INSTANCE =
          new com.google.cloud.bigquery.storage.v1beta1.Storage.SplitReadStreamResponse();
    }

    public static com.google.cloud.bigquery.storage.v1beta1.Storage.SplitReadStreamResponse
        getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.google.cloud.bigquery.storage.v1beta1.Storage.SplitReadStreamResponse
        getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }
  }

  private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_google_cloud_bigquery_storage_v1beta1_Stream_descriptor;
  private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_google_cloud_bigquery_storage_v1beta1_Stream_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_google_cloud_bigquery_storage_v1beta1_StreamPosition_descriptor;
  private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_google_cloud_bigquery_storage_v1beta1_StreamPosition_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_google_cloud_bigquery_storage_v1beta1_ReadSession_descriptor;
  private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_google_cloud_bigquery_storage_v1beta1_ReadSession_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_google_cloud_bigquery_storage_v1beta1_CreateReadSessionRequest_descriptor;
  private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_google_cloud_bigquery_storage_v1beta1_CreateReadSessionRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_google_cloud_bigquery_storage_v1beta1_ReadRowsRequest_descriptor;
  private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_google_cloud_bigquery_storage_v1beta1_ReadRowsRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_google_cloud_bigquery_storage_v1beta1_StreamStatus_descriptor;
  private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_google_cloud_bigquery_storage_v1beta1_StreamStatus_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_google_cloud_bigquery_storage_v1beta1_ThrottleStatus_descriptor;
  private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_google_cloud_bigquery_storage_v1beta1_ThrottleStatus_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_google_cloud_bigquery_storage_v1beta1_ReadRowsResponse_descriptor;
  private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_google_cloud_bigquery_storage_v1beta1_ReadRowsResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_google_cloud_bigquery_storage_v1beta1_BatchCreateReadSessionStreamsRequest_descriptor;
  private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_google_cloud_bigquery_storage_v1beta1_BatchCreateReadSessionStreamsRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_google_cloud_bigquery_storage_v1beta1_BatchCreateReadSessionStreamsResponse_descriptor;
  private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_google_cloud_bigquery_storage_v1beta1_BatchCreateReadSessionStreamsResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_google_cloud_bigquery_storage_v1beta1_FinalizeStreamRequest_descriptor;
  private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_google_cloud_bigquery_storage_v1beta1_FinalizeStreamRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_google_cloud_bigquery_storage_v1beta1_SplitReadStreamRequest_descriptor;
  private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_google_cloud_bigquery_storage_v1beta1_SplitReadStreamRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
      internal_static_google_cloud_bigquery_storage_v1beta1_SplitReadStreamResponse_descriptor;
  private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_google_cloud_bigquery_storage_v1beta1_SplitReadStreamResponse_fieldAccessorTable;

  public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() {
    return descriptor;
  }

  private static com.google.protobuf.Descriptors.FileDescriptor descriptor;

  static {
    java.lang.String[] descriptorData = {
      "\n3google/cloud/bigquery/storage/v1beta1/"
          + "storage.proto\022%google.cloud.bigquery.sto"
          + "rage.v1beta1\0320google/cloud/bigquery/stor"
          + "age/v1beta1/avro.proto\0328google/cloud/big"
          + "query/storage/v1beta1/read_options.proto"
          + "\032;google/cloud/bigquery/storage/v1beta1/"
          + "table_reference.proto\032\033google/protobuf/e"
          + "mpty.proto\032\037google/protobuf/timestamp.pr"
          + "oto\")\n\006Stream\022\014\n\004name\030\001 \001(\t\022\021\n\trow_count"
          + "\030\002 \001(\003\"_\n\016StreamPosition\022=\n\006stream\030\001 \001(\013"
          + "2-.google.cloud.bigquery.storage.v1beta1"
          + ".Stream\022\016\n\006offset\030\002 \001(\003\"\200\003\n\013ReadSession\022"
          + "\014\n\004name\030\001 \001(\t\022/\n\013expire_time\030\002 \001(\0132\032.goo"
          + "gle.protobuf.Timestamp\022H\n\013avro_schema\030\005 "
          + "\001(\01321.google.cloud.bigquery.storage.v1be"
          + "ta1.AvroSchemaH\000\022>\n\007streams\030\004 \003(\0132-.goog"
          + "le.cloud.bigquery.storage.v1beta1.Stream"
          + "\022N\n\017table_reference\030\007 \001(\01325.google.cloud"
          + ".bigquery.storage.v1beta1.TableReference"
          + "\022N\n\017table_modifiers\030\010 \001(\01325.google.cloud"
          + ".bigquery.storage.v1beta1.TableModifiers"
          + "B\010\n\006schema\"\367\002\n\030CreateReadSessionRequest\022"
          + "N\n\017table_reference\030\001 \001(\01325.google.cloud."
          + "bigquery.storage.v1beta1.TableReference\022"
          + "\016\n\006parent\030\006 \001(\t\022N\n\017table_modifiers\030\002 \001(\013"
          + "25.google.cloud.bigquery.storage.v1beta1"
          + ".TableModifiers\022\031\n\021requested_streams\030\003 \001"
          + "(\005\022M\n\014read_options\030\004 \001(\01327.google.cloud."
          + "bigquery.storage.v1beta1.TableReadOption"
          + "s\022A\n\006format\030\005 \001(\01621.google.cloud.bigquer"
          + "y.storage.v1beta1.DataFormat\"_\n\017ReadRows"
          + "Request\022L\n\rread_position\030\001 \001(\01325.google."
          + "cloud.bigquery.storage.v1beta1.StreamPos"
          + "ition\"+\n\014StreamStatus\022\033\n\023estimated_row_c"
          + "ount\030\001 \001(\003\"*\n\016ThrottleStatus\022\030\n\020throttle"
          + "_percent\030\001 \001(\005\"\365\001\n\020ReadRowsResponse\022D\n\ta"
          + "vro_rows\030\003 \001(\0132/.google.cloud.bigquery.s"
          + "torage.v1beta1.AvroRowsH\000\022C\n\006status\030\002 \001("
          + "\01323.google.cloud.bigquery.storage.v1beta"
          + "1.StreamStatus\022N\n\017throttle_status\030\005 \001(\0132"
          + "5.google.cloud.bigquery.storage.v1beta1."
          + "ThrottleStatusB\006\n\004rows\"\206\001\n$BatchCreateRe"
          + "adSessionStreamsRequest\022C\n\007session\030\001 \001(\013"
          + "22.google.cloud.bigquery.storage.v1beta1"
          + ".ReadSession\022\031\n\021requested_streams\030\002 \001(\005\""
          + "g\n%BatchCreateReadSessionStreamsResponse"
          + "\022>\n\007streams\030\001 \003(\0132-.google.cloud.bigquer"
          + "y.storage.v1beta1.Stream\"V\n\025FinalizeStre"
          + "amRequest\022=\n\006stream\030\002 \001(\0132-.google.cloud"
          + ".bigquery.storage.v1beta1.Stream\"`\n\026Spli"
          + "tReadStreamRequest\022F\n\017original_stream\030\001 "
          + "\001(\0132-.google.cloud.bigquery.storage.v1be"
          + "ta1.Stream\"\251\001\n\027SplitReadStreamResponse\022E"
          + "\n\016primary_stream\030\001 \001(\0132-.google.cloud.bi"
          + "gquery.storage.v1beta1.Stream\022G\n\020remaind"
          + "er_stream\030\002 \001(\0132-.google.cloud.bigquery."
          + "storage.v1beta1.Stream*3\n\nDataFormat\022\033\n\027"
          + "DATA_FORMAT_UNSPECIFIED\020\000\022\010\n\004AVRO\020\0012\335\005\n\017"
          + "BigQueryStorage\022\212\001\n\021CreateReadSession\022?."
          + "google.cloud.bigquery.storage.v1beta1.Cr"
          + "eateReadSessionRequest\0322.google.cloud.bi"
          + "gquery.storage.v1beta1.ReadSession\"\000\022\177\n\010"
          + "ReadRows\0226.google.cloud.bigquery.storage"
          + ".v1beta1.ReadRowsRequest\0327.google.cloud."
          + "bigquery.storage.v1beta1.ReadRowsRespons"
          + "e\"\0000\001\022\274\001\n\035BatchCreateReadSessionStreams\022"
          + "K.google.cloud.bigquery.storage.v1beta1."
          + "BatchCreateReadSessionStreamsRequest\032L.g"
          + "oogle.cloud.bigquery.storage.v1beta1.Bat"
          + "chCreateReadSessionStreamsResponse\"\000\022h\n\016"
          + "FinalizeStream\022<.google.cloud.bigquery.s"
          + "torage.v1beta1.FinalizeStreamRequest\032\026.g"
          + "oogle.protobuf.Empty\"\000\022\222\001\n\017SplitReadStre"
          + "am\022=.google.cloud.bigquery.storage.v1bet"
          + "a1.SplitReadStreamRequest\032>.google.cloud"
          + ".bigquery.storage.v1beta1.SplitReadStrea"
          + "mResponse\"\000By\n)com.google.cloud.bigquery"
          + ".storage.v1beta1ZLgoogle.golang.org/genp"
          + "roto/googleapis/cloud/bigquery/storage/v"
          + "1beta1;storageb\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[] {
          com.google.cloud.bigquery.storage.v1beta1.AvroProto.getDescriptor(),
          com.google.cloud.bigquery.storage.v1beta1.ReadOptions.getDescriptor(),
          com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.getDescriptor(),
          com.google.protobuf.EmptyProto.getDescriptor(),
          com.google.protobuf.TimestampProto.getDescriptor(),
        },
        assigner);
    internal_static_google_cloud_bigquery_storage_v1beta1_Stream_descriptor =
        getDescriptor().getMessageTypes().get(0);
    internal_static_google_cloud_bigquery_storage_v1beta1_Stream_fieldAccessorTable =
        new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
            internal_static_google_cloud_bigquery_storage_v1beta1_Stream_descriptor,
            new java.lang.String[] {
              "Name", "RowCount",
            });
    internal_static_google_cloud_bigquery_storage_v1beta1_StreamPosition_descriptor =
        getDescriptor().getMessageTypes().get(1);
    internal_static_google_cloud_bigquery_storage_v1beta1_StreamPosition_fieldAccessorTable =
        new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
            internal_static_google_cloud_bigquery_storage_v1beta1_StreamPosition_descriptor,
            new java.lang.String[] {
              "Stream", "Offset",
            });
    internal_static_google_cloud_bigquery_storage_v1beta1_ReadSession_descriptor =
        getDescriptor().getMessageTypes().get(2);
    internal_static_google_cloud_bigquery_storage_v1beta1_ReadSession_fieldAccessorTable =
        new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
            internal_static_google_cloud_bigquery_storage_v1beta1_ReadSession_descriptor,
            new java.lang.String[] {
              "Name",
              "ExpireTime",
              "AvroSchema",
              "Streams",
              "TableReference",
              "TableModifiers",
              "Schema",
            });
    internal_static_google_cloud_bigquery_storage_v1beta1_CreateReadSessionRequest_descriptor =
        getDescriptor().getMessageTypes().get(3);
    internal_static_google_cloud_bigquery_storage_v1beta1_CreateReadSessionRequest_fieldAccessorTable =
        new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
            internal_static_google_cloud_bigquery_storage_v1beta1_CreateReadSessionRequest_descriptor,
            new java.lang.String[] {
              "TableReference",
              "Parent",
              "TableModifiers",
              "RequestedStreams",
              "ReadOptions",
              "Format",
            });
    internal_static_google_cloud_bigquery_storage_v1beta1_ReadRowsRequest_descriptor =
        getDescriptor().getMessageTypes().get(4);
    internal_static_google_cloud_bigquery_storage_v1beta1_ReadRowsRequest_fieldAccessorTable =
        new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
            internal_static_google_cloud_bigquery_storage_v1beta1_ReadRowsRequest_descriptor,
            new java.lang.String[] {
              "ReadPosition",
            });
    internal_static_google_cloud_bigquery_storage_v1beta1_StreamStatus_descriptor =
        getDescriptor().getMessageTypes().get(5);
    internal_static_google_cloud_bigquery_storage_v1beta1_StreamStatus_fieldAccessorTable =
        new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
            internal_static_google_cloud_bigquery_storage_v1beta1_StreamStatus_descriptor,
            new java.lang.String[] {
              "EstimatedRowCount",
            });
    internal_static_google_cloud_bigquery_storage_v1beta1_ThrottleStatus_descriptor =
        getDescriptor().getMessageTypes().get(6);
    internal_static_google_cloud_bigquery_storage_v1beta1_ThrottleStatus_fieldAccessorTable =
        new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
            internal_static_google_cloud_bigquery_storage_v1beta1_ThrottleStatus_descriptor,
            new java.lang.String[] {
              "ThrottlePercent",
            });
    internal_static_google_cloud_bigquery_storage_v1beta1_ReadRowsResponse_descriptor =
        getDescriptor().getMessageTypes().get(7);
    internal_static_google_cloud_bigquery_storage_v1beta1_ReadRowsResponse_fieldAccessorTable =
        new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
            internal_static_google_cloud_bigquery_storage_v1beta1_ReadRowsResponse_descriptor,
            new java.lang.String[] {
              "AvroRows", "Status", "ThrottleStatus", "Rows",
            });
    internal_static_google_cloud_bigquery_storage_v1beta1_BatchCreateReadSessionStreamsRequest_descriptor =
        getDescriptor().getMessageTypes().get(8);
    internal_static_google_cloud_bigquery_storage_v1beta1_BatchCreateReadSessionStreamsRequest_fieldAccessorTable =
        new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
            internal_static_google_cloud_bigquery_storage_v1beta1_BatchCreateReadSessionStreamsRequest_descriptor,
            new java.lang.String[] {
              "Session", "RequestedStreams",
            });
    internal_static_google_cloud_bigquery_storage_v1beta1_BatchCreateReadSessionStreamsResponse_descriptor =
        getDescriptor().getMessageTypes().get(9);
    internal_static_google_cloud_bigquery_storage_v1beta1_BatchCreateReadSessionStreamsResponse_fieldAccessorTable =
        new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
            internal_static_google_cloud_bigquery_storage_v1beta1_BatchCreateReadSessionStreamsResponse_descriptor,
            new java.lang.String[] {
              "Streams",
            });
    internal_static_google_cloud_bigquery_storage_v1beta1_FinalizeStreamRequest_descriptor =
        getDescriptor().getMessageTypes().get(10);
    internal_static_google_cloud_bigquery_storage_v1beta1_FinalizeStreamRequest_fieldAccessorTable =
        new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
            internal_static_google_cloud_bigquery_storage_v1beta1_FinalizeStreamRequest_descriptor,
            new java.lang.String[] {
              "Stream",
            });
    internal_static_google_cloud_bigquery_storage_v1beta1_SplitReadStreamRequest_descriptor =
        getDescriptor().getMessageTypes().get(11);
    internal_static_google_cloud_bigquery_storage_v1beta1_SplitReadStreamRequest_fieldAccessorTable =
        new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
            internal_static_google_cloud_bigquery_storage_v1beta1_SplitReadStreamRequest_descriptor,
            new java.lang.String[] {
              "OriginalStream",
            });
    internal_static_google_cloud_bigquery_storage_v1beta1_SplitReadStreamResponse_descriptor =
        getDescriptor().getMessageTypes().get(12);
    internal_static_google_cloud_bigquery_storage_v1beta1_SplitReadStreamResponse_fieldAccessorTable =
        new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
            internal_static_google_cloud_bigquery_storage_v1beta1_SplitReadStreamResponse_descriptor,
            new java.lang.String[] {
              "PrimaryStream", "RemainderStream",
            });
    com.google.cloud.bigquery.storage.v1beta1.AvroProto.getDescriptor();
    com.google.cloud.bigquery.storage.v1beta1.ReadOptions.getDescriptor();
    com.google.cloud.bigquery.storage.v1beta1.TableReferenceProto.getDescriptor();
    com.google.protobuf.EmptyProto.getDescriptor();
    com.google.protobuf.TimestampProto.getDescriptor();
  }

  // @@protoc_insertion_point(outer_class_scope)
}
