/*
 * Copyright 2020 Google LLC
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: google/dataflow/v1beta3/jobs.proto

package com.google.dataflow.v1beta3;

/**
 *
 *
 * <pre>
 * Metadata available primarily for filtering jobs. Will be included in the
 * ListJob response and Job SUMMARY view.
 * </pre>
 *
 * Protobuf type {@code google.dataflow.v1beta3.JobMetadata}
 */
public final class JobMetadata extends com.google.protobuf.GeneratedMessageV3
    implements
    // @@protoc_insertion_point(message_implements:google.dataflow.v1beta3.JobMetadata)
    JobMetadataOrBuilder {
  private static final long serialVersionUID = 0L;
  // Use JobMetadata.newBuilder() to construct.
  private JobMetadata(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
    super(builder);
  }

  private JobMetadata() {
    spannerDetails_ = java.util.Collections.emptyList();
    bigqueryDetails_ = java.util.Collections.emptyList();
    bigTableDetails_ = java.util.Collections.emptyList();
    pubsubDetails_ = java.util.Collections.emptyList();
    fileDetails_ = java.util.Collections.emptyList();
    datastoreDetails_ = java.util.Collections.emptyList();
  }

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

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

  private JobMetadata(
      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.dataflow.v1beta3.SdkVersion.Builder subBuilder = null;
              if (sdkVersion_ != null) {
                subBuilder = sdkVersion_.toBuilder();
              }
              sdkVersion_ =
                  input.readMessage(
                      com.google.dataflow.v1beta3.SdkVersion.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(sdkVersion_);
                sdkVersion_ = subBuilder.buildPartial();
              }

              break;
            }
          case 18:
            {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                spannerDetails_ =
                    new java.util.ArrayList<com.google.dataflow.v1beta3.SpannerIODetails>();
                mutable_bitField0_ |= 0x00000001;
              }
              spannerDetails_.add(
                  input.readMessage(
                      com.google.dataflow.v1beta3.SpannerIODetails.parser(), extensionRegistry));
              break;
            }
          case 26:
            {
              if (!((mutable_bitField0_ & 0x00000002) != 0)) {
                bigqueryDetails_ =
                    new java.util.ArrayList<com.google.dataflow.v1beta3.BigQueryIODetails>();
                mutable_bitField0_ |= 0x00000002;
              }
              bigqueryDetails_.add(
                  input.readMessage(
                      com.google.dataflow.v1beta3.BigQueryIODetails.parser(), extensionRegistry));
              break;
            }
          case 34:
            {
              if (!((mutable_bitField0_ & 0x00000004) != 0)) {
                bigTableDetails_ =
                    new java.util.ArrayList<com.google.dataflow.v1beta3.BigTableIODetails>();
                mutable_bitField0_ |= 0x00000004;
              }
              bigTableDetails_.add(
                  input.readMessage(
                      com.google.dataflow.v1beta3.BigTableIODetails.parser(), extensionRegistry));
              break;
            }
          case 42:
            {
              if (!((mutable_bitField0_ & 0x00000008) != 0)) {
                pubsubDetails_ =
                    new java.util.ArrayList<com.google.dataflow.v1beta3.PubSubIODetails>();
                mutable_bitField0_ |= 0x00000008;
              }
              pubsubDetails_.add(
                  input.readMessage(
                      com.google.dataflow.v1beta3.PubSubIODetails.parser(), extensionRegistry));
              break;
            }
          case 50:
            {
              if (!((mutable_bitField0_ & 0x00000010) != 0)) {
                fileDetails_ = new java.util.ArrayList<com.google.dataflow.v1beta3.FileIODetails>();
                mutable_bitField0_ |= 0x00000010;
              }
              fileDetails_.add(
                  input.readMessage(
                      com.google.dataflow.v1beta3.FileIODetails.parser(), extensionRegistry));
              break;
            }
          case 58:
            {
              if (!((mutable_bitField0_ & 0x00000020) != 0)) {
                datastoreDetails_ =
                    new java.util.ArrayList<com.google.dataflow.v1beta3.DatastoreIODetails>();
                mutable_bitField0_ |= 0x00000020;
              }
              datastoreDetails_.add(
                  input.readMessage(
                      com.google.dataflow.v1beta3.DatastoreIODetails.parser(), extensionRegistry));
              break;
            }
          default:
            {
              if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
        }
      }
    } catch (com.google.protobuf.InvalidProtocolBufferException e) {
      throw e.setUnfinishedMessage(this);
    } catch (com.google.protobuf.UninitializedMessageException e) {
      throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
    } catch (java.io.IOException e) {
      throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
    } finally {
      if (((mutable_bitField0_ & 0x00000001) != 0)) {
        spannerDetails_ = java.util.Collections.unmodifiableList(spannerDetails_);
      }
      if (((mutable_bitField0_ & 0x00000002) != 0)) {
        bigqueryDetails_ = java.util.Collections.unmodifiableList(bigqueryDetails_);
      }
      if (((mutable_bitField0_ & 0x00000004) != 0)) {
        bigTableDetails_ = java.util.Collections.unmodifiableList(bigTableDetails_);
      }
      if (((mutable_bitField0_ & 0x00000008) != 0)) {
        pubsubDetails_ = java.util.Collections.unmodifiableList(pubsubDetails_);
      }
      if (((mutable_bitField0_ & 0x00000010) != 0)) {
        fileDetails_ = java.util.Collections.unmodifiableList(fileDetails_);
      }
      if (((mutable_bitField0_ & 0x00000020) != 0)) {
        datastoreDetails_ = java.util.Collections.unmodifiableList(datastoreDetails_);
      }
      this.unknownFields = unknownFields.build();
      makeExtensionsImmutable();
    }
  }

  public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
    return com.google.dataflow.v1beta3.JobsProto
        .internal_static_google_dataflow_v1beta3_JobMetadata_descriptor;
  }

  @java.lang.Override
  protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internalGetFieldAccessorTable() {
    return com.google.dataflow.v1beta3.JobsProto
        .internal_static_google_dataflow_v1beta3_JobMetadata_fieldAccessorTable
        .ensureFieldAccessorsInitialized(
            com.google.dataflow.v1beta3.JobMetadata.class,
            com.google.dataflow.v1beta3.JobMetadata.Builder.class);
  }

  public static final int SDK_VERSION_FIELD_NUMBER = 1;
  private com.google.dataflow.v1beta3.SdkVersion sdkVersion_;
  /**
   *
   *
   * <pre>
   * The SDK version used to run the job.
   * </pre>
   *
   * <code>.google.dataflow.v1beta3.SdkVersion sdk_version = 1;</code>
   *
   * @return Whether the sdkVersion field is set.
   */
  @java.lang.Override
  public boolean hasSdkVersion() {
    return sdkVersion_ != null;
  }
  /**
   *
   *
   * <pre>
   * The SDK version used to run the job.
   * </pre>
   *
   * <code>.google.dataflow.v1beta3.SdkVersion sdk_version = 1;</code>
   *
   * @return The sdkVersion.
   */
  @java.lang.Override
  public com.google.dataflow.v1beta3.SdkVersion getSdkVersion() {
    return sdkVersion_ == null
        ? com.google.dataflow.v1beta3.SdkVersion.getDefaultInstance()
        : sdkVersion_;
  }
  /**
   *
   *
   * <pre>
   * The SDK version used to run the job.
   * </pre>
   *
   * <code>.google.dataflow.v1beta3.SdkVersion sdk_version = 1;</code>
   */
  @java.lang.Override
  public com.google.dataflow.v1beta3.SdkVersionOrBuilder getSdkVersionOrBuilder() {
    return getSdkVersion();
  }

  public static final int SPANNER_DETAILS_FIELD_NUMBER = 2;
  private java.util.List<com.google.dataflow.v1beta3.SpannerIODetails> spannerDetails_;
  /**
   *
   *
   * <pre>
   * Identification of a Spanner source used in the Dataflow job.
   * </pre>
   *
   * <code>repeated .google.dataflow.v1beta3.SpannerIODetails spanner_details = 2;</code>
   */
  @java.lang.Override
  public java.util.List<com.google.dataflow.v1beta3.SpannerIODetails> getSpannerDetailsList() {
    return spannerDetails_;
  }
  /**
   *
   *
   * <pre>
   * Identification of a Spanner source used in the Dataflow job.
   * </pre>
   *
   * <code>repeated .google.dataflow.v1beta3.SpannerIODetails spanner_details = 2;</code>
   */
  @java.lang.Override
  public java.util.List<? extends com.google.dataflow.v1beta3.SpannerIODetailsOrBuilder>
      getSpannerDetailsOrBuilderList() {
    return spannerDetails_;
  }
  /**
   *
   *
   * <pre>
   * Identification of a Spanner source used in the Dataflow job.
   * </pre>
   *
   * <code>repeated .google.dataflow.v1beta3.SpannerIODetails spanner_details = 2;</code>
   */
  @java.lang.Override
  public int getSpannerDetailsCount() {
    return spannerDetails_.size();
  }
  /**
   *
   *
   * <pre>
   * Identification of a Spanner source used in the Dataflow job.
   * </pre>
   *
   * <code>repeated .google.dataflow.v1beta3.SpannerIODetails spanner_details = 2;</code>
   */
  @java.lang.Override
  public com.google.dataflow.v1beta3.SpannerIODetails getSpannerDetails(int index) {
    return spannerDetails_.get(index);
  }
  /**
   *
   *
   * <pre>
   * Identification of a Spanner source used in the Dataflow job.
   * </pre>
   *
   * <code>repeated .google.dataflow.v1beta3.SpannerIODetails spanner_details = 2;</code>
   */
  @java.lang.Override
  public com.google.dataflow.v1beta3.SpannerIODetailsOrBuilder getSpannerDetailsOrBuilder(
      int index) {
    return spannerDetails_.get(index);
  }

  public static final int BIGQUERY_DETAILS_FIELD_NUMBER = 3;
  private java.util.List<com.google.dataflow.v1beta3.BigQueryIODetails> bigqueryDetails_;
  /**
   *
   *
   * <pre>
   * Identification of a BigQuery source used in the Dataflow job.
   * </pre>
   *
   * <code>repeated .google.dataflow.v1beta3.BigQueryIODetails bigquery_details = 3;</code>
   */
  @java.lang.Override
  public java.util.List<com.google.dataflow.v1beta3.BigQueryIODetails> getBigqueryDetailsList() {
    return bigqueryDetails_;
  }
  /**
   *
   *
   * <pre>
   * Identification of a BigQuery source used in the Dataflow job.
   * </pre>
   *
   * <code>repeated .google.dataflow.v1beta3.BigQueryIODetails bigquery_details = 3;</code>
   */
  @java.lang.Override
  public java.util.List<? extends com.google.dataflow.v1beta3.BigQueryIODetailsOrBuilder>
      getBigqueryDetailsOrBuilderList() {
    return bigqueryDetails_;
  }
  /**
   *
   *
   * <pre>
   * Identification of a BigQuery source used in the Dataflow job.
   * </pre>
   *
   * <code>repeated .google.dataflow.v1beta3.BigQueryIODetails bigquery_details = 3;</code>
   */
  @java.lang.Override
  public int getBigqueryDetailsCount() {
    return bigqueryDetails_.size();
  }
  /**
   *
   *
   * <pre>
   * Identification of a BigQuery source used in the Dataflow job.
   * </pre>
   *
   * <code>repeated .google.dataflow.v1beta3.BigQueryIODetails bigquery_details = 3;</code>
   */
  @java.lang.Override
  public com.google.dataflow.v1beta3.BigQueryIODetails getBigqueryDetails(int index) {
    return bigqueryDetails_.get(index);
  }
  /**
   *
   *
   * <pre>
   * Identification of a BigQuery source used in the Dataflow job.
   * </pre>
   *
   * <code>repeated .google.dataflow.v1beta3.BigQueryIODetails bigquery_details = 3;</code>
   */
  @java.lang.Override
  public com.google.dataflow.v1beta3.BigQueryIODetailsOrBuilder getBigqueryDetailsOrBuilder(
      int index) {
    return bigqueryDetails_.get(index);
  }

  public static final int BIG_TABLE_DETAILS_FIELD_NUMBER = 4;
  private java.util.List<com.google.dataflow.v1beta3.BigTableIODetails> bigTableDetails_;
  /**
   *
   *
   * <pre>
   * Identification of a Cloud Bigtable source used in the Dataflow job.
   * </pre>
   *
   * <code>repeated .google.dataflow.v1beta3.BigTableIODetails big_table_details = 4;</code>
   */
  @java.lang.Override
  public java.util.List<com.google.dataflow.v1beta3.BigTableIODetails> getBigTableDetailsList() {
    return bigTableDetails_;
  }
  /**
   *
   *
   * <pre>
   * Identification of a Cloud Bigtable source used in the Dataflow job.
   * </pre>
   *
   * <code>repeated .google.dataflow.v1beta3.BigTableIODetails big_table_details = 4;</code>
   */
  @java.lang.Override
  public java.util.List<? extends com.google.dataflow.v1beta3.BigTableIODetailsOrBuilder>
      getBigTableDetailsOrBuilderList() {
    return bigTableDetails_;
  }
  /**
   *
   *
   * <pre>
   * Identification of a Cloud Bigtable source used in the Dataflow job.
   * </pre>
   *
   * <code>repeated .google.dataflow.v1beta3.BigTableIODetails big_table_details = 4;</code>
   */
  @java.lang.Override
  public int getBigTableDetailsCount() {
    return bigTableDetails_.size();
  }
  /**
   *
   *
   * <pre>
   * Identification of a Cloud Bigtable source used in the Dataflow job.
   * </pre>
   *
   * <code>repeated .google.dataflow.v1beta3.BigTableIODetails big_table_details = 4;</code>
   */
  @java.lang.Override
  public com.google.dataflow.v1beta3.BigTableIODetails getBigTableDetails(int index) {
    return bigTableDetails_.get(index);
  }
  /**
   *
   *
   * <pre>
   * Identification of a Cloud Bigtable source used in the Dataflow job.
   * </pre>
   *
   * <code>repeated .google.dataflow.v1beta3.BigTableIODetails big_table_details = 4;</code>
   */
  @java.lang.Override
  public com.google.dataflow.v1beta3.BigTableIODetailsOrBuilder getBigTableDetailsOrBuilder(
      int index) {
    return bigTableDetails_.get(index);
  }

  public static final int PUBSUB_DETAILS_FIELD_NUMBER = 5;
  private java.util.List<com.google.dataflow.v1beta3.PubSubIODetails> pubsubDetails_;
  /**
   *
   *
   * <pre>
   * Identification of a Pub/Sub source used in the Dataflow job.
   * </pre>
   *
   * <code>repeated .google.dataflow.v1beta3.PubSubIODetails pubsub_details = 5;</code>
   */
  @java.lang.Override
  public java.util.List<com.google.dataflow.v1beta3.PubSubIODetails> getPubsubDetailsList() {
    return pubsubDetails_;
  }
  /**
   *
   *
   * <pre>
   * Identification of a Pub/Sub source used in the Dataflow job.
   * </pre>
   *
   * <code>repeated .google.dataflow.v1beta3.PubSubIODetails pubsub_details = 5;</code>
   */
  @java.lang.Override
  public java.util.List<? extends com.google.dataflow.v1beta3.PubSubIODetailsOrBuilder>
      getPubsubDetailsOrBuilderList() {
    return pubsubDetails_;
  }
  /**
   *
   *
   * <pre>
   * Identification of a Pub/Sub source used in the Dataflow job.
   * </pre>
   *
   * <code>repeated .google.dataflow.v1beta3.PubSubIODetails pubsub_details = 5;</code>
   */
  @java.lang.Override
  public int getPubsubDetailsCount() {
    return pubsubDetails_.size();
  }
  /**
   *
   *
   * <pre>
   * Identification of a Pub/Sub source used in the Dataflow job.
   * </pre>
   *
   * <code>repeated .google.dataflow.v1beta3.PubSubIODetails pubsub_details = 5;</code>
   */
  @java.lang.Override
  public com.google.dataflow.v1beta3.PubSubIODetails getPubsubDetails(int index) {
    return pubsubDetails_.get(index);
  }
  /**
   *
   *
   * <pre>
   * Identification of a Pub/Sub source used in the Dataflow job.
   * </pre>
   *
   * <code>repeated .google.dataflow.v1beta3.PubSubIODetails pubsub_details = 5;</code>
   */
  @java.lang.Override
  public com.google.dataflow.v1beta3.PubSubIODetailsOrBuilder getPubsubDetailsOrBuilder(int index) {
    return pubsubDetails_.get(index);
  }

  public static final int FILE_DETAILS_FIELD_NUMBER = 6;
  private java.util.List<com.google.dataflow.v1beta3.FileIODetails> fileDetails_;
  /**
   *
   *
   * <pre>
   * Identification of a File source used in the Dataflow job.
   * </pre>
   *
   * <code>repeated .google.dataflow.v1beta3.FileIODetails file_details = 6;</code>
   */
  @java.lang.Override
  public java.util.List<com.google.dataflow.v1beta3.FileIODetails> getFileDetailsList() {
    return fileDetails_;
  }
  /**
   *
   *
   * <pre>
   * Identification of a File source used in the Dataflow job.
   * </pre>
   *
   * <code>repeated .google.dataflow.v1beta3.FileIODetails file_details = 6;</code>
   */
  @java.lang.Override
  public java.util.List<? extends com.google.dataflow.v1beta3.FileIODetailsOrBuilder>
      getFileDetailsOrBuilderList() {
    return fileDetails_;
  }
  /**
   *
   *
   * <pre>
   * Identification of a File source used in the Dataflow job.
   * </pre>
   *
   * <code>repeated .google.dataflow.v1beta3.FileIODetails file_details = 6;</code>
   */
  @java.lang.Override
  public int getFileDetailsCount() {
    return fileDetails_.size();
  }
  /**
   *
   *
   * <pre>
   * Identification of a File source used in the Dataflow job.
   * </pre>
   *
   * <code>repeated .google.dataflow.v1beta3.FileIODetails file_details = 6;</code>
   */
  @java.lang.Override
  public com.google.dataflow.v1beta3.FileIODetails getFileDetails(int index) {
    return fileDetails_.get(index);
  }
  /**
   *
   *
   * <pre>
   * Identification of a File source used in the Dataflow job.
   * </pre>
   *
   * <code>repeated .google.dataflow.v1beta3.FileIODetails file_details = 6;</code>
   */
  @java.lang.Override
  public com.google.dataflow.v1beta3.FileIODetailsOrBuilder getFileDetailsOrBuilder(int index) {
    return fileDetails_.get(index);
  }

  public static final int DATASTORE_DETAILS_FIELD_NUMBER = 7;
  private java.util.List<com.google.dataflow.v1beta3.DatastoreIODetails> datastoreDetails_;
  /**
   *
   *
   * <pre>
   * Identification of a Datastore source used in the Dataflow job.
   * </pre>
   *
   * <code>repeated .google.dataflow.v1beta3.DatastoreIODetails datastore_details = 7;</code>
   */
  @java.lang.Override
  public java.util.List<com.google.dataflow.v1beta3.DatastoreIODetails> getDatastoreDetailsList() {
    return datastoreDetails_;
  }
  /**
   *
   *
   * <pre>
   * Identification of a Datastore source used in the Dataflow job.
   * </pre>
   *
   * <code>repeated .google.dataflow.v1beta3.DatastoreIODetails datastore_details = 7;</code>
   */
  @java.lang.Override
  public java.util.List<? extends com.google.dataflow.v1beta3.DatastoreIODetailsOrBuilder>
      getDatastoreDetailsOrBuilderList() {
    return datastoreDetails_;
  }
  /**
   *
   *
   * <pre>
   * Identification of a Datastore source used in the Dataflow job.
   * </pre>
   *
   * <code>repeated .google.dataflow.v1beta3.DatastoreIODetails datastore_details = 7;</code>
   */
  @java.lang.Override
  public int getDatastoreDetailsCount() {
    return datastoreDetails_.size();
  }
  /**
   *
   *
   * <pre>
   * Identification of a Datastore source used in the Dataflow job.
   * </pre>
   *
   * <code>repeated .google.dataflow.v1beta3.DatastoreIODetails datastore_details = 7;</code>
   */
  @java.lang.Override
  public com.google.dataflow.v1beta3.DatastoreIODetails getDatastoreDetails(int index) {
    return datastoreDetails_.get(index);
  }
  /**
   *
   *
   * <pre>
   * Identification of a Datastore source used in the Dataflow job.
   * </pre>
   *
   * <code>repeated .google.dataflow.v1beta3.DatastoreIODetails datastore_details = 7;</code>
   */
  @java.lang.Override
  public com.google.dataflow.v1beta3.DatastoreIODetailsOrBuilder getDatastoreDetailsOrBuilder(
      int index) {
    return datastoreDetails_.get(index);
  }

  private byte memoizedIsInitialized = -1;

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

    memoizedIsInitialized = 1;
    return true;
  }

  @java.lang.Override
  public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
    if (sdkVersion_ != null) {
      output.writeMessage(1, getSdkVersion());
    }
    for (int i = 0; i < spannerDetails_.size(); i++) {
      output.writeMessage(2, spannerDetails_.get(i));
    }
    for (int i = 0; i < bigqueryDetails_.size(); i++) {
      output.writeMessage(3, bigqueryDetails_.get(i));
    }
    for (int i = 0; i < bigTableDetails_.size(); i++) {
      output.writeMessage(4, bigTableDetails_.get(i));
    }
    for (int i = 0; i < pubsubDetails_.size(); i++) {
      output.writeMessage(5, pubsubDetails_.get(i));
    }
    for (int i = 0; i < fileDetails_.size(); i++) {
      output.writeMessage(6, fileDetails_.get(i));
    }
    for (int i = 0; i < datastoreDetails_.size(); i++) {
      output.writeMessage(7, datastoreDetails_.get(i));
    }
    unknownFields.writeTo(output);
  }

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

    size = 0;
    if (sdkVersion_ != null) {
      size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getSdkVersion());
    }
    for (int i = 0; i < spannerDetails_.size(); i++) {
      size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, spannerDetails_.get(i));
    }
    for (int i = 0; i < bigqueryDetails_.size(); i++) {
      size += com.google.protobuf.CodedOutputStream.computeMessageSize(3, bigqueryDetails_.get(i));
    }
    for (int i = 0; i < bigTableDetails_.size(); i++) {
      size += com.google.protobuf.CodedOutputStream.computeMessageSize(4, bigTableDetails_.get(i));
    }
    for (int i = 0; i < pubsubDetails_.size(); i++) {
      size += com.google.protobuf.CodedOutputStream.computeMessageSize(5, pubsubDetails_.get(i));
    }
    for (int i = 0; i < fileDetails_.size(); i++) {
      size += com.google.protobuf.CodedOutputStream.computeMessageSize(6, fileDetails_.get(i));
    }
    for (int i = 0; i < datastoreDetails_.size(); i++) {
      size += com.google.protobuf.CodedOutputStream.computeMessageSize(7, datastoreDetails_.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.dataflow.v1beta3.JobMetadata)) {
      return super.equals(obj);
    }
    com.google.dataflow.v1beta3.JobMetadata other = (com.google.dataflow.v1beta3.JobMetadata) obj;

    if (hasSdkVersion() != other.hasSdkVersion()) return false;
    if (hasSdkVersion()) {
      if (!getSdkVersion().equals(other.getSdkVersion())) return false;
    }
    if (!getSpannerDetailsList().equals(other.getSpannerDetailsList())) return false;
    if (!getBigqueryDetailsList().equals(other.getBigqueryDetailsList())) return false;
    if (!getBigTableDetailsList().equals(other.getBigTableDetailsList())) return false;
    if (!getPubsubDetailsList().equals(other.getPubsubDetailsList())) return false;
    if (!getFileDetailsList().equals(other.getFileDetailsList())) return false;
    if (!getDatastoreDetailsList().equals(other.getDatastoreDetailsList())) return false;
    if (!unknownFields.equals(other.unknownFields)) return false;
    return true;
  }

  @java.lang.Override
  public int hashCode() {
    if (memoizedHashCode != 0) {
      return memoizedHashCode;
    }
    int hash = 41;
    hash = (19 * hash) + getDescriptor().hashCode();
    if (hasSdkVersion()) {
      hash = (37 * hash) + SDK_VERSION_FIELD_NUMBER;
      hash = (53 * hash) + getSdkVersion().hashCode();
    }
    if (getSpannerDetailsCount() > 0) {
      hash = (37 * hash) + SPANNER_DETAILS_FIELD_NUMBER;
      hash = (53 * hash) + getSpannerDetailsList().hashCode();
    }
    if (getBigqueryDetailsCount() > 0) {
      hash = (37 * hash) + BIGQUERY_DETAILS_FIELD_NUMBER;
      hash = (53 * hash) + getBigqueryDetailsList().hashCode();
    }
    if (getBigTableDetailsCount() > 0) {
      hash = (37 * hash) + BIG_TABLE_DETAILS_FIELD_NUMBER;
      hash = (53 * hash) + getBigTableDetailsList().hashCode();
    }
    if (getPubsubDetailsCount() > 0) {
      hash = (37 * hash) + PUBSUB_DETAILS_FIELD_NUMBER;
      hash = (53 * hash) + getPubsubDetailsList().hashCode();
    }
    if (getFileDetailsCount() > 0) {
      hash = (37 * hash) + FILE_DETAILS_FIELD_NUMBER;
      hash = (53 * hash) + getFileDetailsList().hashCode();
    }
    if (getDatastoreDetailsCount() > 0) {
      hash = (37 * hash) + DATASTORE_DETAILS_FIELD_NUMBER;
      hash = (53 * hash) + getDatastoreDetailsList().hashCode();
    }
    hash = (29 * hash) + unknownFields.hashCode();
    memoizedHashCode = hash;
    return hash;
  }

  public static com.google.dataflow.v1beta3.JobMetadata parseFrom(java.nio.ByteBuffer data)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data);
  }

  public static com.google.dataflow.v1beta3.JobMetadata parseFrom(
      java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data, extensionRegistry);
  }

  public static com.google.dataflow.v1beta3.JobMetadata parseFrom(
      com.google.protobuf.ByteString data)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data);
  }

  public static com.google.dataflow.v1beta3.JobMetadata 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.dataflow.v1beta3.JobMetadata parseFrom(byte[] data)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data);
  }

  public static com.google.dataflow.v1beta3.JobMetadata parseFrom(
      byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data, extensionRegistry);
  }

  public static com.google.dataflow.v1beta3.JobMetadata parseFrom(java.io.InputStream input)
      throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
  }

  public static com.google.dataflow.v1beta3.JobMetadata 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.dataflow.v1beta3.JobMetadata parseDelimitedFrom(
      java.io.InputStream input) throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
  }

  public static com.google.dataflow.v1beta3.JobMetadata 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.dataflow.v1beta3.JobMetadata parseFrom(
      com.google.protobuf.CodedInputStream input) throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
  }

  public static com.google.dataflow.v1beta3.JobMetadata 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.dataflow.v1beta3.JobMetadata 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>
   * Metadata available primarily for filtering jobs. Will be included in the
   * ListJob response and Job SUMMARY view.
   * </pre>
   *
   * Protobuf type {@code google.dataflow.v1beta3.JobMetadata}
   */
  public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder>
      implements
      // @@protoc_insertion_point(builder_implements:google.dataflow.v1beta3.JobMetadata)
      com.google.dataflow.v1beta3.JobMetadataOrBuilder {
    public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
      return com.google.dataflow.v1beta3.JobsProto
          .internal_static_google_dataflow_v1beta3_JobMetadata_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.dataflow.v1beta3.JobsProto
          .internal_static_google_dataflow_v1beta3_JobMetadata_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.dataflow.v1beta3.JobMetadata.class,
              com.google.dataflow.v1beta3.JobMetadata.Builder.class);
    }

    // Construct using com.google.dataflow.v1beta3.JobMetadata.newBuilder()
    private Builder() {
      maybeForceBuilderInitialization();
    }

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

    private void maybeForceBuilderInitialization() {
      if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {
        getSpannerDetailsFieldBuilder();
        getBigqueryDetailsFieldBuilder();
        getBigTableDetailsFieldBuilder();
        getPubsubDetailsFieldBuilder();
        getFileDetailsFieldBuilder();
        getDatastoreDetailsFieldBuilder();
      }
    }

    @java.lang.Override
    public Builder clear() {
      super.clear();
      if (sdkVersionBuilder_ == null) {
        sdkVersion_ = null;
      } else {
        sdkVersion_ = null;
        sdkVersionBuilder_ = null;
      }
      if (spannerDetailsBuilder_ == null) {
        spannerDetails_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);
      } else {
        spannerDetailsBuilder_.clear();
      }
      if (bigqueryDetailsBuilder_ == null) {
        bigqueryDetails_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000002);
      } else {
        bigqueryDetailsBuilder_.clear();
      }
      if (bigTableDetailsBuilder_ == null) {
        bigTableDetails_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000004);
      } else {
        bigTableDetailsBuilder_.clear();
      }
      if (pubsubDetailsBuilder_ == null) {
        pubsubDetails_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000008);
      } else {
        pubsubDetailsBuilder_.clear();
      }
      if (fileDetailsBuilder_ == null) {
        fileDetails_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000010);
      } else {
        fileDetailsBuilder_.clear();
      }
      if (datastoreDetailsBuilder_ == null) {
        datastoreDetails_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000020);
      } else {
        datastoreDetailsBuilder_.clear();
      }
      return this;
    }

    @java.lang.Override
    public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
      return com.google.dataflow.v1beta3.JobsProto
          .internal_static_google_dataflow_v1beta3_JobMetadata_descriptor;
    }

    @java.lang.Override
    public com.google.dataflow.v1beta3.JobMetadata getDefaultInstanceForType() {
      return com.google.dataflow.v1beta3.JobMetadata.getDefaultInstance();
    }

    @java.lang.Override
    public com.google.dataflow.v1beta3.JobMetadata build() {
      com.google.dataflow.v1beta3.JobMetadata result = buildPartial();
      if (!result.isInitialized()) {
        throw newUninitializedMessageException(result);
      }
      return result;
    }

    @java.lang.Override
    public com.google.dataflow.v1beta3.JobMetadata buildPartial() {
      com.google.dataflow.v1beta3.JobMetadata result =
          new com.google.dataflow.v1beta3.JobMetadata(this);
      int from_bitField0_ = bitField0_;
      if (sdkVersionBuilder_ == null) {
        result.sdkVersion_ = sdkVersion_;
      } else {
        result.sdkVersion_ = sdkVersionBuilder_.build();
      }
      if (spannerDetailsBuilder_ == null) {
        if (((bitField0_ & 0x00000001) != 0)) {
          spannerDetails_ = java.util.Collections.unmodifiableList(spannerDetails_);
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.spannerDetails_ = spannerDetails_;
      } else {
        result.spannerDetails_ = spannerDetailsBuilder_.build();
      }
      if (bigqueryDetailsBuilder_ == null) {
        if (((bitField0_ & 0x00000002) != 0)) {
          bigqueryDetails_ = java.util.Collections.unmodifiableList(bigqueryDetails_);
          bitField0_ = (bitField0_ & ~0x00000002);
        }
        result.bigqueryDetails_ = bigqueryDetails_;
      } else {
        result.bigqueryDetails_ = bigqueryDetailsBuilder_.build();
      }
      if (bigTableDetailsBuilder_ == null) {
        if (((bitField0_ & 0x00000004) != 0)) {
          bigTableDetails_ = java.util.Collections.unmodifiableList(bigTableDetails_);
          bitField0_ = (bitField0_ & ~0x00000004);
        }
        result.bigTableDetails_ = bigTableDetails_;
      } else {
        result.bigTableDetails_ = bigTableDetailsBuilder_.build();
      }
      if (pubsubDetailsBuilder_ == null) {
        if (((bitField0_ & 0x00000008) != 0)) {
          pubsubDetails_ = java.util.Collections.unmodifiableList(pubsubDetails_);
          bitField0_ = (bitField0_ & ~0x00000008);
        }
        result.pubsubDetails_ = pubsubDetails_;
      } else {
        result.pubsubDetails_ = pubsubDetailsBuilder_.build();
      }
      if (fileDetailsBuilder_ == null) {
        if (((bitField0_ & 0x00000010) != 0)) {
          fileDetails_ = java.util.Collections.unmodifiableList(fileDetails_);
          bitField0_ = (bitField0_ & ~0x00000010);
        }
        result.fileDetails_ = fileDetails_;
      } else {
        result.fileDetails_ = fileDetailsBuilder_.build();
      }
      if (datastoreDetailsBuilder_ == null) {
        if (((bitField0_ & 0x00000020) != 0)) {
          datastoreDetails_ = java.util.Collections.unmodifiableList(datastoreDetails_);
          bitField0_ = (bitField0_ & ~0x00000020);
        }
        result.datastoreDetails_ = datastoreDetails_;
      } else {
        result.datastoreDetails_ = datastoreDetailsBuilder_.build();
      }
      onBuilt();
      return result;
    }

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

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

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

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

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

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

    @java.lang.Override
    public Builder mergeFrom(com.google.protobuf.Message other) {
      if (other instanceof com.google.dataflow.v1beta3.JobMetadata) {
        return mergeFrom((com.google.dataflow.v1beta3.JobMetadata) other);
      } else {
        super.mergeFrom(other);
        return this;
      }
    }

    public Builder mergeFrom(com.google.dataflow.v1beta3.JobMetadata other) {
      if (other == com.google.dataflow.v1beta3.JobMetadata.getDefaultInstance()) return this;
      if (other.hasSdkVersion()) {
        mergeSdkVersion(other.getSdkVersion());
      }
      if (spannerDetailsBuilder_ == null) {
        if (!other.spannerDetails_.isEmpty()) {
          if (spannerDetails_.isEmpty()) {
            spannerDetails_ = other.spannerDetails_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureSpannerDetailsIsMutable();
            spannerDetails_.addAll(other.spannerDetails_);
          }
          onChanged();
        }
      } else {
        if (!other.spannerDetails_.isEmpty()) {
          if (spannerDetailsBuilder_.isEmpty()) {
            spannerDetailsBuilder_.dispose();
            spannerDetailsBuilder_ = null;
            spannerDetails_ = other.spannerDetails_;
            bitField0_ = (bitField0_ & ~0x00000001);
            spannerDetailsBuilder_ =
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders
                    ? getSpannerDetailsFieldBuilder()
                    : null;
          } else {
            spannerDetailsBuilder_.addAllMessages(other.spannerDetails_);
          }
        }
      }
      if (bigqueryDetailsBuilder_ == null) {
        if (!other.bigqueryDetails_.isEmpty()) {
          if (bigqueryDetails_.isEmpty()) {
            bigqueryDetails_ = other.bigqueryDetails_;
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            ensureBigqueryDetailsIsMutable();
            bigqueryDetails_.addAll(other.bigqueryDetails_);
          }
          onChanged();
        }
      } else {
        if (!other.bigqueryDetails_.isEmpty()) {
          if (bigqueryDetailsBuilder_.isEmpty()) {
            bigqueryDetailsBuilder_.dispose();
            bigqueryDetailsBuilder_ = null;
            bigqueryDetails_ = other.bigqueryDetails_;
            bitField0_ = (bitField0_ & ~0x00000002);
            bigqueryDetailsBuilder_ =
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders
                    ? getBigqueryDetailsFieldBuilder()
                    : null;
          } else {
            bigqueryDetailsBuilder_.addAllMessages(other.bigqueryDetails_);
          }
        }
      }
      if (bigTableDetailsBuilder_ == null) {
        if (!other.bigTableDetails_.isEmpty()) {
          if (bigTableDetails_.isEmpty()) {
            bigTableDetails_ = other.bigTableDetails_;
            bitField0_ = (bitField0_ & ~0x00000004);
          } else {
            ensureBigTableDetailsIsMutable();
            bigTableDetails_.addAll(other.bigTableDetails_);
          }
          onChanged();
        }
      } else {
        if (!other.bigTableDetails_.isEmpty()) {
          if (bigTableDetailsBuilder_.isEmpty()) {
            bigTableDetailsBuilder_.dispose();
            bigTableDetailsBuilder_ = null;
            bigTableDetails_ = other.bigTableDetails_;
            bitField0_ = (bitField0_ & ~0x00000004);
            bigTableDetailsBuilder_ =
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders
                    ? getBigTableDetailsFieldBuilder()
                    : null;
          } else {
            bigTableDetailsBuilder_.addAllMessages(other.bigTableDetails_);
          }
        }
      }
      if (pubsubDetailsBuilder_ == null) {
        if (!other.pubsubDetails_.isEmpty()) {
          if (pubsubDetails_.isEmpty()) {
            pubsubDetails_ = other.pubsubDetails_;
            bitField0_ = (bitField0_ & ~0x00000008);
          } else {
            ensurePubsubDetailsIsMutable();
            pubsubDetails_.addAll(other.pubsubDetails_);
          }
          onChanged();
        }
      } else {
        if (!other.pubsubDetails_.isEmpty()) {
          if (pubsubDetailsBuilder_.isEmpty()) {
            pubsubDetailsBuilder_.dispose();
            pubsubDetailsBuilder_ = null;
            pubsubDetails_ = other.pubsubDetails_;
            bitField0_ = (bitField0_ & ~0x00000008);
            pubsubDetailsBuilder_ =
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders
                    ? getPubsubDetailsFieldBuilder()
                    : null;
          } else {
            pubsubDetailsBuilder_.addAllMessages(other.pubsubDetails_);
          }
        }
      }
      if (fileDetailsBuilder_ == null) {
        if (!other.fileDetails_.isEmpty()) {
          if (fileDetails_.isEmpty()) {
            fileDetails_ = other.fileDetails_;
            bitField0_ = (bitField0_ & ~0x00000010);
          } else {
            ensureFileDetailsIsMutable();
            fileDetails_.addAll(other.fileDetails_);
          }
          onChanged();
        }
      } else {
        if (!other.fileDetails_.isEmpty()) {
          if (fileDetailsBuilder_.isEmpty()) {
            fileDetailsBuilder_.dispose();
            fileDetailsBuilder_ = null;
            fileDetails_ = other.fileDetails_;
            bitField0_ = (bitField0_ & ~0x00000010);
            fileDetailsBuilder_ =
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders
                    ? getFileDetailsFieldBuilder()
                    : null;
          } else {
            fileDetailsBuilder_.addAllMessages(other.fileDetails_);
          }
        }
      }
      if (datastoreDetailsBuilder_ == null) {
        if (!other.datastoreDetails_.isEmpty()) {
          if (datastoreDetails_.isEmpty()) {
            datastoreDetails_ = other.datastoreDetails_;
            bitField0_ = (bitField0_ & ~0x00000020);
          } else {
            ensureDatastoreDetailsIsMutable();
            datastoreDetails_.addAll(other.datastoreDetails_);
          }
          onChanged();
        }
      } else {
        if (!other.datastoreDetails_.isEmpty()) {
          if (datastoreDetailsBuilder_.isEmpty()) {
            datastoreDetailsBuilder_.dispose();
            datastoreDetailsBuilder_ = null;
            datastoreDetails_ = other.datastoreDetails_;
            bitField0_ = (bitField0_ & ~0x00000020);
            datastoreDetailsBuilder_ =
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders
                    ? getDatastoreDetailsFieldBuilder()
                    : null;
          } else {
            datastoreDetailsBuilder_.addAllMessages(other.datastoreDetails_);
          }
        }
      }
      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.dataflow.v1beta3.JobMetadata parsedMessage = null;
      try {
        parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        parsedMessage = (com.google.dataflow.v1beta3.JobMetadata) e.getUnfinishedMessage();
        throw e.unwrapIOException();
      } finally {
        if (parsedMessage != null) {
          mergeFrom(parsedMessage);
        }
      }
      return this;
    }

    private int bitField0_;

    private com.google.dataflow.v1beta3.SdkVersion sdkVersion_;
    private com.google.protobuf.SingleFieldBuilderV3<
            com.google.dataflow.v1beta3.SdkVersion,
            com.google.dataflow.v1beta3.SdkVersion.Builder,
            com.google.dataflow.v1beta3.SdkVersionOrBuilder>
        sdkVersionBuilder_;
    /**
     *
     *
     * <pre>
     * The SDK version used to run the job.
     * </pre>
     *
     * <code>.google.dataflow.v1beta3.SdkVersion sdk_version = 1;</code>
     *
     * @return Whether the sdkVersion field is set.
     */
    public boolean hasSdkVersion() {
      return sdkVersionBuilder_ != null || sdkVersion_ != null;
    }
    /**
     *
     *
     * <pre>
     * The SDK version used to run the job.
     * </pre>
     *
     * <code>.google.dataflow.v1beta3.SdkVersion sdk_version = 1;</code>
     *
     * @return The sdkVersion.
     */
    public com.google.dataflow.v1beta3.SdkVersion getSdkVersion() {
      if (sdkVersionBuilder_ == null) {
        return sdkVersion_ == null
            ? com.google.dataflow.v1beta3.SdkVersion.getDefaultInstance()
            : sdkVersion_;
      } else {
        return sdkVersionBuilder_.getMessage();
      }
    }
    /**
     *
     *
     * <pre>
     * The SDK version used to run the job.
     * </pre>
     *
     * <code>.google.dataflow.v1beta3.SdkVersion sdk_version = 1;</code>
     */
    public Builder setSdkVersion(com.google.dataflow.v1beta3.SdkVersion value) {
      if (sdkVersionBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        sdkVersion_ = value;
        onChanged();
      } else {
        sdkVersionBuilder_.setMessage(value);
      }

      return this;
    }
    /**
     *
     *
     * <pre>
     * The SDK version used to run the job.
     * </pre>
     *
     * <code>.google.dataflow.v1beta3.SdkVersion sdk_version = 1;</code>
     */
    public Builder setSdkVersion(com.google.dataflow.v1beta3.SdkVersion.Builder builderForValue) {
      if (sdkVersionBuilder_ == null) {
        sdkVersion_ = builderForValue.build();
        onChanged();
      } else {
        sdkVersionBuilder_.setMessage(builderForValue.build());
      }

      return this;
    }
    /**
     *
     *
     * <pre>
     * The SDK version used to run the job.
     * </pre>
     *
     * <code>.google.dataflow.v1beta3.SdkVersion sdk_version = 1;</code>
     */
    public Builder mergeSdkVersion(com.google.dataflow.v1beta3.SdkVersion value) {
      if (sdkVersionBuilder_ == null) {
        if (sdkVersion_ != null) {
          sdkVersion_ =
              com.google.dataflow.v1beta3.SdkVersion.newBuilder(sdkVersion_)
                  .mergeFrom(value)
                  .buildPartial();
        } else {
          sdkVersion_ = value;
        }
        onChanged();
      } else {
        sdkVersionBuilder_.mergeFrom(value);
      }

      return this;
    }
    /**
     *
     *
     * <pre>
     * The SDK version used to run the job.
     * </pre>
     *
     * <code>.google.dataflow.v1beta3.SdkVersion sdk_version = 1;</code>
     */
    public Builder clearSdkVersion() {
      if (sdkVersionBuilder_ == null) {
        sdkVersion_ = null;
        onChanged();
      } else {
        sdkVersion_ = null;
        sdkVersionBuilder_ = null;
      }

      return this;
    }
    /**
     *
     *
     * <pre>
     * The SDK version used to run the job.
     * </pre>
     *
     * <code>.google.dataflow.v1beta3.SdkVersion sdk_version = 1;</code>
     */
    public com.google.dataflow.v1beta3.SdkVersion.Builder getSdkVersionBuilder() {

      onChanged();
      return getSdkVersionFieldBuilder().getBuilder();
    }
    /**
     *
     *
     * <pre>
     * The SDK version used to run the job.
     * </pre>
     *
     * <code>.google.dataflow.v1beta3.SdkVersion sdk_version = 1;</code>
     */
    public com.google.dataflow.v1beta3.SdkVersionOrBuilder getSdkVersionOrBuilder() {
      if (sdkVersionBuilder_ != null) {
        return sdkVersionBuilder_.getMessageOrBuilder();
      } else {
        return sdkVersion_ == null
            ? com.google.dataflow.v1beta3.SdkVersion.getDefaultInstance()
            : sdkVersion_;
      }
    }
    /**
     *
     *
     * <pre>
     * The SDK version used to run the job.
     * </pre>
     *
     * <code>.google.dataflow.v1beta3.SdkVersion sdk_version = 1;</code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
            com.google.dataflow.v1beta3.SdkVersion,
            com.google.dataflow.v1beta3.SdkVersion.Builder,
            com.google.dataflow.v1beta3.SdkVersionOrBuilder>
        getSdkVersionFieldBuilder() {
      if (sdkVersionBuilder_ == null) {
        sdkVersionBuilder_ =
            new com.google.protobuf.SingleFieldBuilderV3<
                com.google.dataflow.v1beta3.SdkVersion,
                com.google.dataflow.v1beta3.SdkVersion.Builder,
                com.google.dataflow.v1beta3.SdkVersionOrBuilder>(
                getSdkVersion(), getParentForChildren(), isClean());
        sdkVersion_ = null;
      }
      return sdkVersionBuilder_;
    }

    private java.util.List<com.google.dataflow.v1beta3.SpannerIODetails> spannerDetails_ =
        java.util.Collections.emptyList();

    private void ensureSpannerDetailsIsMutable() {
      if (!((bitField0_ & 0x00000001) != 0)) {
        spannerDetails_ =
            new java.util.ArrayList<com.google.dataflow.v1beta3.SpannerIODetails>(spannerDetails_);
        bitField0_ |= 0x00000001;
      }
    }

    private com.google.protobuf.RepeatedFieldBuilderV3<
            com.google.dataflow.v1beta3.SpannerIODetails,
            com.google.dataflow.v1beta3.SpannerIODetails.Builder,
            com.google.dataflow.v1beta3.SpannerIODetailsOrBuilder>
        spannerDetailsBuilder_;

    /**
     *
     *
     * <pre>
     * Identification of a Spanner source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.SpannerIODetails spanner_details = 2;</code>
     */
    public java.util.List<com.google.dataflow.v1beta3.SpannerIODetails> getSpannerDetailsList() {
      if (spannerDetailsBuilder_ == null) {
        return java.util.Collections.unmodifiableList(spannerDetails_);
      } else {
        return spannerDetailsBuilder_.getMessageList();
      }
    }
    /**
     *
     *
     * <pre>
     * Identification of a Spanner source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.SpannerIODetails spanner_details = 2;</code>
     */
    public int getSpannerDetailsCount() {
      if (spannerDetailsBuilder_ == null) {
        return spannerDetails_.size();
      } else {
        return spannerDetailsBuilder_.getCount();
      }
    }
    /**
     *
     *
     * <pre>
     * Identification of a Spanner source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.SpannerIODetails spanner_details = 2;</code>
     */
    public com.google.dataflow.v1beta3.SpannerIODetails getSpannerDetails(int index) {
      if (spannerDetailsBuilder_ == null) {
        return spannerDetails_.get(index);
      } else {
        return spannerDetailsBuilder_.getMessage(index);
      }
    }
    /**
     *
     *
     * <pre>
     * Identification of a Spanner source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.SpannerIODetails spanner_details = 2;</code>
     */
    public Builder setSpannerDetails(
        int index, com.google.dataflow.v1beta3.SpannerIODetails value) {
      if (spannerDetailsBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureSpannerDetailsIsMutable();
        spannerDetails_.set(index, value);
        onChanged();
      } else {
        spannerDetailsBuilder_.setMessage(index, value);
      }
      return this;
    }
    /**
     *
     *
     * <pre>
     * Identification of a Spanner source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.SpannerIODetails spanner_details = 2;</code>
     */
    public Builder setSpannerDetails(
        int index, com.google.dataflow.v1beta3.SpannerIODetails.Builder builderForValue) {
      if (spannerDetailsBuilder_ == null) {
        ensureSpannerDetailsIsMutable();
        spannerDetails_.set(index, builderForValue.build());
        onChanged();
      } else {
        spannerDetailsBuilder_.setMessage(index, builderForValue.build());
      }
      return this;
    }
    /**
     *
     *
     * <pre>
     * Identification of a Spanner source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.SpannerIODetails spanner_details = 2;</code>
     */
    public Builder addSpannerDetails(com.google.dataflow.v1beta3.SpannerIODetails value) {
      if (spannerDetailsBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureSpannerDetailsIsMutable();
        spannerDetails_.add(value);
        onChanged();
      } else {
        spannerDetailsBuilder_.addMessage(value);
      }
      return this;
    }
    /**
     *
     *
     * <pre>
     * Identification of a Spanner source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.SpannerIODetails spanner_details = 2;</code>
     */
    public Builder addSpannerDetails(
        int index, com.google.dataflow.v1beta3.SpannerIODetails value) {
      if (spannerDetailsBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureSpannerDetailsIsMutable();
        spannerDetails_.add(index, value);
        onChanged();
      } else {
        spannerDetailsBuilder_.addMessage(index, value);
      }
      return this;
    }
    /**
     *
     *
     * <pre>
     * Identification of a Spanner source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.SpannerIODetails spanner_details = 2;</code>
     */
    public Builder addSpannerDetails(
        com.google.dataflow.v1beta3.SpannerIODetails.Builder builderForValue) {
      if (spannerDetailsBuilder_ == null) {
        ensureSpannerDetailsIsMutable();
        spannerDetails_.add(builderForValue.build());
        onChanged();
      } else {
        spannerDetailsBuilder_.addMessage(builderForValue.build());
      }
      return this;
    }
    /**
     *
     *
     * <pre>
     * Identification of a Spanner source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.SpannerIODetails spanner_details = 2;</code>
     */
    public Builder addSpannerDetails(
        int index, com.google.dataflow.v1beta3.SpannerIODetails.Builder builderForValue) {
      if (spannerDetailsBuilder_ == null) {
        ensureSpannerDetailsIsMutable();
        spannerDetails_.add(index, builderForValue.build());
        onChanged();
      } else {
        spannerDetailsBuilder_.addMessage(index, builderForValue.build());
      }
      return this;
    }
    /**
     *
     *
     * <pre>
     * Identification of a Spanner source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.SpannerIODetails spanner_details = 2;</code>
     */
    public Builder addAllSpannerDetails(
        java.lang.Iterable<? extends com.google.dataflow.v1beta3.SpannerIODetails> values) {
      if (spannerDetailsBuilder_ == null) {
        ensureSpannerDetailsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(values, spannerDetails_);
        onChanged();
      } else {
        spannerDetailsBuilder_.addAllMessages(values);
      }
      return this;
    }
    /**
     *
     *
     * <pre>
     * Identification of a Spanner source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.SpannerIODetails spanner_details = 2;</code>
     */
    public Builder clearSpannerDetails() {
      if (spannerDetailsBuilder_ == null) {
        spannerDetails_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
      } else {
        spannerDetailsBuilder_.clear();
      }
      return this;
    }
    /**
     *
     *
     * <pre>
     * Identification of a Spanner source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.SpannerIODetails spanner_details = 2;</code>
     */
    public Builder removeSpannerDetails(int index) {
      if (spannerDetailsBuilder_ == null) {
        ensureSpannerDetailsIsMutable();
        spannerDetails_.remove(index);
        onChanged();
      } else {
        spannerDetailsBuilder_.remove(index);
      }
      return this;
    }
    /**
     *
     *
     * <pre>
     * Identification of a Spanner source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.SpannerIODetails spanner_details = 2;</code>
     */
    public com.google.dataflow.v1beta3.SpannerIODetails.Builder getSpannerDetailsBuilder(
        int index) {
      return getSpannerDetailsFieldBuilder().getBuilder(index);
    }
    /**
     *
     *
     * <pre>
     * Identification of a Spanner source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.SpannerIODetails spanner_details = 2;</code>
     */
    public com.google.dataflow.v1beta3.SpannerIODetailsOrBuilder getSpannerDetailsOrBuilder(
        int index) {
      if (spannerDetailsBuilder_ == null) {
        return spannerDetails_.get(index);
      } else {
        return spannerDetailsBuilder_.getMessageOrBuilder(index);
      }
    }
    /**
     *
     *
     * <pre>
     * Identification of a Spanner source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.SpannerIODetails spanner_details = 2;</code>
     */
    public java.util.List<? extends com.google.dataflow.v1beta3.SpannerIODetailsOrBuilder>
        getSpannerDetailsOrBuilderList() {
      if (spannerDetailsBuilder_ != null) {
        return spannerDetailsBuilder_.getMessageOrBuilderList();
      } else {
        return java.util.Collections.unmodifiableList(spannerDetails_);
      }
    }
    /**
     *
     *
     * <pre>
     * Identification of a Spanner source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.SpannerIODetails spanner_details = 2;</code>
     */
    public com.google.dataflow.v1beta3.SpannerIODetails.Builder addSpannerDetailsBuilder() {
      return getSpannerDetailsFieldBuilder()
          .addBuilder(com.google.dataflow.v1beta3.SpannerIODetails.getDefaultInstance());
    }
    /**
     *
     *
     * <pre>
     * Identification of a Spanner source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.SpannerIODetails spanner_details = 2;</code>
     */
    public com.google.dataflow.v1beta3.SpannerIODetails.Builder addSpannerDetailsBuilder(
        int index) {
      return getSpannerDetailsFieldBuilder()
          .addBuilder(index, com.google.dataflow.v1beta3.SpannerIODetails.getDefaultInstance());
    }
    /**
     *
     *
     * <pre>
     * Identification of a Spanner source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.SpannerIODetails spanner_details = 2;</code>
     */
    public java.util.List<com.google.dataflow.v1beta3.SpannerIODetails.Builder>
        getSpannerDetailsBuilderList() {
      return getSpannerDetailsFieldBuilder().getBuilderList();
    }

    private com.google.protobuf.RepeatedFieldBuilderV3<
            com.google.dataflow.v1beta3.SpannerIODetails,
            com.google.dataflow.v1beta3.SpannerIODetails.Builder,
            com.google.dataflow.v1beta3.SpannerIODetailsOrBuilder>
        getSpannerDetailsFieldBuilder() {
      if (spannerDetailsBuilder_ == null) {
        spannerDetailsBuilder_ =
            new com.google.protobuf.RepeatedFieldBuilderV3<
                com.google.dataflow.v1beta3.SpannerIODetails,
                com.google.dataflow.v1beta3.SpannerIODetails.Builder,
                com.google.dataflow.v1beta3.SpannerIODetailsOrBuilder>(
                spannerDetails_,
                ((bitField0_ & 0x00000001) != 0),
                getParentForChildren(),
                isClean());
        spannerDetails_ = null;
      }
      return spannerDetailsBuilder_;
    }

    private java.util.List<com.google.dataflow.v1beta3.BigQueryIODetails> bigqueryDetails_ =
        java.util.Collections.emptyList();

    private void ensureBigqueryDetailsIsMutable() {
      if (!((bitField0_ & 0x00000002) != 0)) {
        bigqueryDetails_ =
            new java.util.ArrayList<com.google.dataflow.v1beta3.BigQueryIODetails>(
                bigqueryDetails_);
        bitField0_ |= 0x00000002;
      }
    }

    private com.google.protobuf.RepeatedFieldBuilderV3<
            com.google.dataflow.v1beta3.BigQueryIODetails,
            com.google.dataflow.v1beta3.BigQueryIODetails.Builder,
            com.google.dataflow.v1beta3.BigQueryIODetailsOrBuilder>
        bigqueryDetailsBuilder_;

    /**
     *
     *
     * <pre>
     * Identification of a BigQuery source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.BigQueryIODetails bigquery_details = 3;</code>
     */
    public java.util.List<com.google.dataflow.v1beta3.BigQueryIODetails> getBigqueryDetailsList() {
      if (bigqueryDetailsBuilder_ == null) {
        return java.util.Collections.unmodifiableList(bigqueryDetails_);
      } else {
        return bigqueryDetailsBuilder_.getMessageList();
      }
    }
    /**
     *
     *
     * <pre>
     * Identification of a BigQuery source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.BigQueryIODetails bigquery_details = 3;</code>
     */
    public int getBigqueryDetailsCount() {
      if (bigqueryDetailsBuilder_ == null) {
        return bigqueryDetails_.size();
      } else {
        return bigqueryDetailsBuilder_.getCount();
      }
    }
    /**
     *
     *
     * <pre>
     * Identification of a BigQuery source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.BigQueryIODetails bigquery_details = 3;</code>
     */
    public com.google.dataflow.v1beta3.BigQueryIODetails getBigqueryDetails(int index) {
      if (bigqueryDetailsBuilder_ == null) {
        return bigqueryDetails_.get(index);
      } else {
        return bigqueryDetailsBuilder_.getMessage(index);
      }
    }
    /**
     *
     *
     * <pre>
     * Identification of a BigQuery source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.BigQueryIODetails bigquery_details = 3;</code>
     */
    public Builder setBigqueryDetails(
        int index, com.google.dataflow.v1beta3.BigQueryIODetails value) {
      if (bigqueryDetailsBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureBigqueryDetailsIsMutable();
        bigqueryDetails_.set(index, value);
        onChanged();
      } else {
        bigqueryDetailsBuilder_.setMessage(index, value);
      }
      return this;
    }
    /**
     *
     *
     * <pre>
     * Identification of a BigQuery source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.BigQueryIODetails bigquery_details = 3;</code>
     */
    public Builder setBigqueryDetails(
        int index, com.google.dataflow.v1beta3.BigQueryIODetails.Builder builderForValue) {
      if (bigqueryDetailsBuilder_ == null) {
        ensureBigqueryDetailsIsMutable();
        bigqueryDetails_.set(index, builderForValue.build());
        onChanged();
      } else {
        bigqueryDetailsBuilder_.setMessage(index, builderForValue.build());
      }
      return this;
    }
    /**
     *
     *
     * <pre>
     * Identification of a BigQuery source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.BigQueryIODetails bigquery_details = 3;</code>
     */
    public Builder addBigqueryDetails(com.google.dataflow.v1beta3.BigQueryIODetails value) {
      if (bigqueryDetailsBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureBigqueryDetailsIsMutable();
        bigqueryDetails_.add(value);
        onChanged();
      } else {
        bigqueryDetailsBuilder_.addMessage(value);
      }
      return this;
    }
    /**
     *
     *
     * <pre>
     * Identification of a BigQuery source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.BigQueryIODetails bigquery_details = 3;</code>
     */
    public Builder addBigqueryDetails(
        int index, com.google.dataflow.v1beta3.BigQueryIODetails value) {
      if (bigqueryDetailsBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureBigqueryDetailsIsMutable();
        bigqueryDetails_.add(index, value);
        onChanged();
      } else {
        bigqueryDetailsBuilder_.addMessage(index, value);
      }
      return this;
    }
    /**
     *
     *
     * <pre>
     * Identification of a BigQuery source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.BigQueryIODetails bigquery_details = 3;</code>
     */
    public Builder addBigqueryDetails(
        com.google.dataflow.v1beta3.BigQueryIODetails.Builder builderForValue) {
      if (bigqueryDetailsBuilder_ == null) {
        ensureBigqueryDetailsIsMutable();
        bigqueryDetails_.add(builderForValue.build());
        onChanged();
      } else {
        bigqueryDetailsBuilder_.addMessage(builderForValue.build());
      }
      return this;
    }
    /**
     *
     *
     * <pre>
     * Identification of a BigQuery source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.BigQueryIODetails bigquery_details = 3;</code>
     */
    public Builder addBigqueryDetails(
        int index, com.google.dataflow.v1beta3.BigQueryIODetails.Builder builderForValue) {
      if (bigqueryDetailsBuilder_ == null) {
        ensureBigqueryDetailsIsMutable();
        bigqueryDetails_.add(index, builderForValue.build());
        onChanged();
      } else {
        bigqueryDetailsBuilder_.addMessage(index, builderForValue.build());
      }
      return this;
    }
    /**
     *
     *
     * <pre>
     * Identification of a BigQuery source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.BigQueryIODetails bigquery_details = 3;</code>
     */
    public Builder addAllBigqueryDetails(
        java.lang.Iterable<? extends com.google.dataflow.v1beta3.BigQueryIODetails> values) {
      if (bigqueryDetailsBuilder_ == null) {
        ensureBigqueryDetailsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(values, bigqueryDetails_);
        onChanged();
      } else {
        bigqueryDetailsBuilder_.addAllMessages(values);
      }
      return this;
    }
    /**
     *
     *
     * <pre>
     * Identification of a BigQuery source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.BigQueryIODetails bigquery_details = 3;</code>
     */
    public Builder clearBigqueryDetails() {
      if (bigqueryDetailsBuilder_ == null) {
        bigqueryDetails_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
      } else {
        bigqueryDetailsBuilder_.clear();
      }
      return this;
    }
    /**
     *
     *
     * <pre>
     * Identification of a BigQuery source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.BigQueryIODetails bigquery_details = 3;</code>
     */
    public Builder removeBigqueryDetails(int index) {
      if (bigqueryDetailsBuilder_ == null) {
        ensureBigqueryDetailsIsMutable();
        bigqueryDetails_.remove(index);
        onChanged();
      } else {
        bigqueryDetailsBuilder_.remove(index);
      }
      return this;
    }
    /**
     *
     *
     * <pre>
     * Identification of a BigQuery source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.BigQueryIODetails bigquery_details = 3;</code>
     */
    public com.google.dataflow.v1beta3.BigQueryIODetails.Builder getBigqueryDetailsBuilder(
        int index) {
      return getBigqueryDetailsFieldBuilder().getBuilder(index);
    }
    /**
     *
     *
     * <pre>
     * Identification of a BigQuery source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.BigQueryIODetails bigquery_details = 3;</code>
     */
    public com.google.dataflow.v1beta3.BigQueryIODetailsOrBuilder getBigqueryDetailsOrBuilder(
        int index) {
      if (bigqueryDetailsBuilder_ == null) {
        return bigqueryDetails_.get(index);
      } else {
        return bigqueryDetailsBuilder_.getMessageOrBuilder(index);
      }
    }
    /**
     *
     *
     * <pre>
     * Identification of a BigQuery source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.BigQueryIODetails bigquery_details = 3;</code>
     */
    public java.util.List<? extends com.google.dataflow.v1beta3.BigQueryIODetailsOrBuilder>
        getBigqueryDetailsOrBuilderList() {
      if (bigqueryDetailsBuilder_ != null) {
        return bigqueryDetailsBuilder_.getMessageOrBuilderList();
      } else {
        return java.util.Collections.unmodifiableList(bigqueryDetails_);
      }
    }
    /**
     *
     *
     * <pre>
     * Identification of a BigQuery source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.BigQueryIODetails bigquery_details = 3;</code>
     */
    public com.google.dataflow.v1beta3.BigQueryIODetails.Builder addBigqueryDetailsBuilder() {
      return getBigqueryDetailsFieldBuilder()
          .addBuilder(com.google.dataflow.v1beta3.BigQueryIODetails.getDefaultInstance());
    }
    /**
     *
     *
     * <pre>
     * Identification of a BigQuery source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.BigQueryIODetails bigquery_details = 3;</code>
     */
    public com.google.dataflow.v1beta3.BigQueryIODetails.Builder addBigqueryDetailsBuilder(
        int index) {
      return getBigqueryDetailsFieldBuilder()
          .addBuilder(index, com.google.dataflow.v1beta3.BigQueryIODetails.getDefaultInstance());
    }
    /**
     *
     *
     * <pre>
     * Identification of a BigQuery source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.BigQueryIODetails bigquery_details = 3;</code>
     */
    public java.util.List<com.google.dataflow.v1beta3.BigQueryIODetails.Builder>
        getBigqueryDetailsBuilderList() {
      return getBigqueryDetailsFieldBuilder().getBuilderList();
    }

    private com.google.protobuf.RepeatedFieldBuilderV3<
            com.google.dataflow.v1beta3.BigQueryIODetails,
            com.google.dataflow.v1beta3.BigQueryIODetails.Builder,
            com.google.dataflow.v1beta3.BigQueryIODetailsOrBuilder>
        getBigqueryDetailsFieldBuilder() {
      if (bigqueryDetailsBuilder_ == null) {
        bigqueryDetailsBuilder_ =
            new com.google.protobuf.RepeatedFieldBuilderV3<
                com.google.dataflow.v1beta3.BigQueryIODetails,
                com.google.dataflow.v1beta3.BigQueryIODetails.Builder,
                com.google.dataflow.v1beta3.BigQueryIODetailsOrBuilder>(
                bigqueryDetails_,
                ((bitField0_ & 0x00000002) != 0),
                getParentForChildren(),
                isClean());
        bigqueryDetails_ = null;
      }
      return bigqueryDetailsBuilder_;
    }

    private java.util.List<com.google.dataflow.v1beta3.BigTableIODetails> bigTableDetails_ =
        java.util.Collections.emptyList();

    private void ensureBigTableDetailsIsMutable() {
      if (!((bitField0_ & 0x00000004) != 0)) {
        bigTableDetails_ =
            new java.util.ArrayList<com.google.dataflow.v1beta3.BigTableIODetails>(
                bigTableDetails_);
        bitField0_ |= 0x00000004;
      }
    }

    private com.google.protobuf.RepeatedFieldBuilderV3<
            com.google.dataflow.v1beta3.BigTableIODetails,
            com.google.dataflow.v1beta3.BigTableIODetails.Builder,
            com.google.dataflow.v1beta3.BigTableIODetailsOrBuilder>
        bigTableDetailsBuilder_;

    /**
     *
     *
     * <pre>
     * Identification of a Cloud Bigtable source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.BigTableIODetails big_table_details = 4;</code>
     */
    public java.util.List<com.google.dataflow.v1beta3.BigTableIODetails> getBigTableDetailsList() {
      if (bigTableDetailsBuilder_ == null) {
        return java.util.Collections.unmodifiableList(bigTableDetails_);
      } else {
        return bigTableDetailsBuilder_.getMessageList();
      }
    }
    /**
     *
     *
     * <pre>
     * Identification of a Cloud Bigtable source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.BigTableIODetails big_table_details = 4;</code>
     */
    public int getBigTableDetailsCount() {
      if (bigTableDetailsBuilder_ == null) {
        return bigTableDetails_.size();
      } else {
        return bigTableDetailsBuilder_.getCount();
      }
    }
    /**
     *
     *
     * <pre>
     * Identification of a Cloud Bigtable source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.BigTableIODetails big_table_details = 4;</code>
     */
    public com.google.dataflow.v1beta3.BigTableIODetails getBigTableDetails(int index) {
      if (bigTableDetailsBuilder_ == null) {
        return bigTableDetails_.get(index);
      } else {
        return bigTableDetailsBuilder_.getMessage(index);
      }
    }
    /**
     *
     *
     * <pre>
     * Identification of a Cloud Bigtable source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.BigTableIODetails big_table_details = 4;</code>
     */
    public Builder setBigTableDetails(
        int index, com.google.dataflow.v1beta3.BigTableIODetails value) {
      if (bigTableDetailsBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureBigTableDetailsIsMutable();
        bigTableDetails_.set(index, value);
        onChanged();
      } else {
        bigTableDetailsBuilder_.setMessage(index, value);
      }
      return this;
    }
    /**
     *
     *
     * <pre>
     * Identification of a Cloud Bigtable source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.BigTableIODetails big_table_details = 4;</code>
     */
    public Builder setBigTableDetails(
        int index, com.google.dataflow.v1beta3.BigTableIODetails.Builder builderForValue) {
      if (bigTableDetailsBuilder_ == null) {
        ensureBigTableDetailsIsMutable();
        bigTableDetails_.set(index, builderForValue.build());
        onChanged();
      } else {
        bigTableDetailsBuilder_.setMessage(index, builderForValue.build());
      }
      return this;
    }
    /**
     *
     *
     * <pre>
     * Identification of a Cloud Bigtable source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.BigTableIODetails big_table_details = 4;</code>
     */
    public Builder addBigTableDetails(com.google.dataflow.v1beta3.BigTableIODetails value) {
      if (bigTableDetailsBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureBigTableDetailsIsMutable();
        bigTableDetails_.add(value);
        onChanged();
      } else {
        bigTableDetailsBuilder_.addMessage(value);
      }
      return this;
    }
    /**
     *
     *
     * <pre>
     * Identification of a Cloud Bigtable source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.BigTableIODetails big_table_details = 4;</code>
     */
    public Builder addBigTableDetails(
        int index, com.google.dataflow.v1beta3.BigTableIODetails value) {
      if (bigTableDetailsBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureBigTableDetailsIsMutable();
        bigTableDetails_.add(index, value);
        onChanged();
      } else {
        bigTableDetailsBuilder_.addMessage(index, value);
      }
      return this;
    }
    /**
     *
     *
     * <pre>
     * Identification of a Cloud Bigtable source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.BigTableIODetails big_table_details = 4;</code>
     */
    public Builder addBigTableDetails(
        com.google.dataflow.v1beta3.BigTableIODetails.Builder builderForValue) {
      if (bigTableDetailsBuilder_ == null) {
        ensureBigTableDetailsIsMutable();
        bigTableDetails_.add(builderForValue.build());
        onChanged();
      } else {
        bigTableDetailsBuilder_.addMessage(builderForValue.build());
      }
      return this;
    }
    /**
     *
     *
     * <pre>
     * Identification of a Cloud Bigtable source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.BigTableIODetails big_table_details = 4;</code>
     */
    public Builder addBigTableDetails(
        int index, com.google.dataflow.v1beta3.BigTableIODetails.Builder builderForValue) {
      if (bigTableDetailsBuilder_ == null) {
        ensureBigTableDetailsIsMutable();
        bigTableDetails_.add(index, builderForValue.build());
        onChanged();
      } else {
        bigTableDetailsBuilder_.addMessage(index, builderForValue.build());
      }
      return this;
    }
    /**
     *
     *
     * <pre>
     * Identification of a Cloud Bigtable source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.BigTableIODetails big_table_details = 4;</code>
     */
    public Builder addAllBigTableDetails(
        java.lang.Iterable<? extends com.google.dataflow.v1beta3.BigTableIODetails> values) {
      if (bigTableDetailsBuilder_ == null) {
        ensureBigTableDetailsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(values, bigTableDetails_);
        onChanged();
      } else {
        bigTableDetailsBuilder_.addAllMessages(values);
      }
      return this;
    }
    /**
     *
     *
     * <pre>
     * Identification of a Cloud Bigtable source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.BigTableIODetails big_table_details = 4;</code>
     */
    public Builder clearBigTableDetails() {
      if (bigTableDetailsBuilder_ == null) {
        bigTableDetails_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
      } else {
        bigTableDetailsBuilder_.clear();
      }
      return this;
    }
    /**
     *
     *
     * <pre>
     * Identification of a Cloud Bigtable source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.BigTableIODetails big_table_details = 4;</code>
     */
    public Builder removeBigTableDetails(int index) {
      if (bigTableDetailsBuilder_ == null) {
        ensureBigTableDetailsIsMutable();
        bigTableDetails_.remove(index);
        onChanged();
      } else {
        bigTableDetailsBuilder_.remove(index);
      }
      return this;
    }
    /**
     *
     *
     * <pre>
     * Identification of a Cloud Bigtable source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.BigTableIODetails big_table_details = 4;</code>
     */
    public com.google.dataflow.v1beta3.BigTableIODetails.Builder getBigTableDetailsBuilder(
        int index) {
      return getBigTableDetailsFieldBuilder().getBuilder(index);
    }
    /**
     *
     *
     * <pre>
     * Identification of a Cloud Bigtable source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.BigTableIODetails big_table_details = 4;</code>
     */
    public com.google.dataflow.v1beta3.BigTableIODetailsOrBuilder getBigTableDetailsOrBuilder(
        int index) {
      if (bigTableDetailsBuilder_ == null) {
        return bigTableDetails_.get(index);
      } else {
        return bigTableDetailsBuilder_.getMessageOrBuilder(index);
      }
    }
    /**
     *
     *
     * <pre>
     * Identification of a Cloud Bigtable source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.BigTableIODetails big_table_details = 4;</code>
     */
    public java.util.List<? extends com.google.dataflow.v1beta3.BigTableIODetailsOrBuilder>
        getBigTableDetailsOrBuilderList() {
      if (bigTableDetailsBuilder_ != null) {
        return bigTableDetailsBuilder_.getMessageOrBuilderList();
      } else {
        return java.util.Collections.unmodifiableList(bigTableDetails_);
      }
    }
    /**
     *
     *
     * <pre>
     * Identification of a Cloud Bigtable source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.BigTableIODetails big_table_details = 4;</code>
     */
    public com.google.dataflow.v1beta3.BigTableIODetails.Builder addBigTableDetailsBuilder() {
      return getBigTableDetailsFieldBuilder()
          .addBuilder(com.google.dataflow.v1beta3.BigTableIODetails.getDefaultInstance());
    }
    /**
     *
     *
     * <pre>
     * Identification of a Cloud Bigtable source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.BigTableIODetails big_table_details = 4;</code>
     */
    public com.google.dataflow.v1beta3.BigTableIODetails.Builder addBigTableDetailsBuilder(
        int index) {
      return getBigTableDetailsFieldBuilder()
          .addBuilder(index, com.google.dataflow.v1beta3.BigTableIODetails.getDefaultInstance());
    }
    /**
     *
     *
     * <pre>
     * Identification of a Cloud Bigtable source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.BigTableIODetails big_table_details = 4;</code>
     */
    public java.util.List<com.google.dataflow.v1beta3.BigTableIODetails.Builder>
        getBigTableDetailsBuilderList() {
      return getBigTableDetailsFieldBuilder().getBuilderList();
    }

    private com.google.protobuf.RepeatedFieldBuilderV3<
            com.google.dataflow.v1beta3.BigTableIODetails,
            com.google.dataflow.v1beta3.BigTableIODetails.Builder,
            com.google.dataflow.v1beta3.BigTableIODetailsOrBuilder>
        getBigTableDetailsFieldBuilder() {
      if (bigTableDetailsBuilder_ == null) {
        bigTableDetailsBuilder_ =
            new com.google.protobuf.RepeatedFieldBuilderV3<
                com.google.dataflow.v1beta3.BigTableIODetails,
                com.google.dataflow.v1beta3.BigTableIODetails.Builder,
                com.google.dataflow.v1beta3.BigTableIODetailsOrBuilder>(
                bigTableDetails_,
                ((bitField0_ & 0x00000004) != 0),
                getParentForChildren(),
                isClean());
        bigTableDetails_ = null;
      }
      return bigTableDetailsBuilder_;
    }

    private java.util.List<com.google.dataflow.v1beta3.PubSubIODetails> pubsubDetails_ =
        java.util.Collections.emptyList();

    private void ensurePubsubDetailsIsMutable() {
      if (!((bitField0_ & 0x00000008) != 0)) {
        pubsubDetails_ =
            new java.util.ArrayList<com.google.dataflow.v1beta3.PubSubIODetails>(pubsubDetails_);
        bitField0_ |= 0x00000008;
      }
    }

    private com.google.protobuf.RepeatedFieldBuilderV3<
            com.google.dataflow.v1beta3.PubSubIODetails,
            com.google.dataflow.v1beta3.PubSubIODetails.Builder,
            com.google.dataflow.v1beta3.PubSubIODetailsOrBuilder>
        pubsubDetailsBuilder_;

    /**
     *
     *
     * <pre>
     * Identification of a Pub/Sub source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.PubSubIODetails pubsub_details = 5;</code>
     */
    public java.util.List<com.google.dataflow.v1beta3.PubSubIODetails> getPubsubDetailsList() {
      if (pubsubDetailsBuilder_ == null) {
        return java.util.Collections.unmodifiableList(pubsubDetails_);
      } else {
        return pubsubDetailsBuilder_.getMessageList();
      }
    }
    /**
     *
     *
     * <pre>
     * Identification of a Pub/Sub source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.PubSubIODetails pubsub_details = 5;</code>
     */
    public int getPubsubDetailsCount() {
      if (pubsubDetailsBuilder_ == null) {
        return pubsubDetails_.size();
      } else {
        return pubsubDetailsBuilder_.getCount();
      }
    }
    /**
     *
     *
     * <pre>
     * Identification of a Pub/Sub source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.PubSubIODetails pubsub_details = 5;</code>
     */
    public com.google.dataflow.v1beta3.PubSubIODetails getPubsubDetails(int index) {
      if (pubsubDetailsBuilder_ == null) {
        return pubsubDetails_.get(index);
      } else {
        return pubsubDetailsBuilder_.getMessage(index);
      }
    }
    /**
     *
     *
     * <pre>
     * Identification of a Pub/Sub source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.PubSubIODetails pubsub_details = 5;</code>
     */
    public Builder setPubsubDetails(int index, com.google.dataflow.v1beta3.PubSubIODetails value) {
      if (pubsubDetailsBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensurePubsubDetailsIsMutable();
        pubsubDetails_.set(index, value);
        onChanged();
      } else {
        pubsubDetailsBuilder_.setMessage(index, value);
      }
      return this;
    }
    /**
     *
     *
     * <pre>
     * Identification of a Pub/Sub source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.PubSubIODetails pubsub_details = 5;</code>
     */
    public Builder setPubsubDetails(
        int index, com.google.dataflow.v1beta3.PubSubIODetails.Builder builderForValue) {
      if (pubsubDetailsBuilder_ == null) {
        ensurePubsubDetailsIsMutable();
        pubsubDetails_.set(index, builderForValue.build());
        onChanged();
      } else {
        pubsubDetailsBuilder_.setMessage(index, builderForValue.build());
      }
      return this;
    }
    /**
     *
     *
     * <pre>
     * Identification of a Pub/Sub source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.PubSubIODetails pubsub_details = 5;</code>
     */
    public Builder addPubsubDetails(com.google.dataflow.v1beta3.PubSubIODetails value) {
      if (pubsubDetailsBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensurePubsubDetailsIsMutable();
        pubsubDetails_.add(value);
        onChanged();
      } else {
        pubsubDetailsBuilder_.addMessage(value);
      }
      return this;
    }
    /**
     *
     *
     * <pre>
     * Identification of a Pub/Sub source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.PubSubIODetails pubsub_details = 5;</code>
     */
    public Builder addPubsubDetails(int index, com.google.dataflow.v1beta3.PubSubIODetails value) {
      if (pubsubDetailsBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensurePubsubDetailsIsMutable();
        pubsubDetails_.add(index, value);
        onChanged();
      } else {
        pubsubDetailsBuilder_.addMessage(index, value);
      }
      return this;
    }
    /**
     *
     *
     * <pre>
     * Identification of a Pub/Sub source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.PubSubIODetails pubsub_details = 5;</code>
     */
    public Builder addPubsubDetails(
        com.google.dataflow.v1beta3.PubSubIODetails.Builder builderForValue) {
      if (pubsubDetailsBuilder_ == null) {
        ensurePubsubDetailsIsMutable();
        pubsubDetails_.add(builderForValue.build());
        onChanged();
      } else {
        pubsubDetailsBuilder_.addMessage(builderForValue.build());
      }
      return this;
    }
    /**
     *
     *
     * <pre>
     * Identification of a Pub/Sub source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.PubSubIODetails pubsub_details = 5;</code>
     */
    public Builder addPubsubDetails(
        int index, com.google.dataflow.v1beta3.PubSubIODetails.Builder builderForValue) {
      if (pubsubDetailsBuilder_ == null) {
        ensurePubsubDetailsIsMutable();
        pubsubDetails_.add(index, builderForValue.build());
        onChanged();
      } else {
        pubsubDetailsBuilder_.addMessage(index, builderForValue.build());
      }
      return this;
    }
    /**
     *
     *
     * <pre>
     * Identification of a Pub/Sub source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.PubSubIODetails pubsub_details = 5;</code>
     */
    public Builder addAllPubsubDetails(
        java.lang.Iterable<? extends com.google.dataflow.v1beta3.PubSubIODetails> values) {
      if (pubsubDetailsBuilder_ == null) {
        ensurePubsubDetailsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(values, pubsubDetails_);
        onChanged();
      } else {
        pubsubDetailsBuilder_.addAllMessages(values);
      }
      return this;
    }
    /**
     *
     *
     * <pre>
     * Identification of a Pub/Sub source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.PubSubIODetails pubsub_details = 5;</code>
     */
    public Builder clearPubsubDetails() {
      if (pubsubDetailsBuilder_ == null) {
        pubsubDetails_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000008);
        onChanged();
      } else {
        pubsubDetailsBuilder_.clear();
      }
      return this;
    }
    /**
     *
     *
     * <pre>
     * Identification of a Pub/Sub source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.PubSubIODetails pubsub_details = 5;</code>
     */
    public Builder removePubsubDetails(int index) {
      if (pubsubDetailsBuilder_ == null) {
        ensurePubsubDetailsIsMutable();
        pubsubDetails_.remove(index);
        onChanged();
      } else {
        pubsubDetailsBuilder_.remove(index);
      }
      return this;
    }
    /**
     *
     *
     * <pre>
     * Identification of a Pub/Sub source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.PubSubIODetails pubsub_details = 5;</code>
     */
    public com.google.dataflow.v1beta3.PubSubIODetails.Builder getPubsubDetailsBuilder(int index) {
      return getPubsubDetailsFieldBuilder().getBuilder(index);
    }
    /**
     *
     *
     * <pre>
     * Identification of a Pub/Sub source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.PubSubIODetails pubsub_details = 5;</code>
     */
    public com.google.dataflow.v1beta3.PubSubIODetailsOrBuilder getPubsubDetailsOrBuilder(
        int index) {
      if (pubsubDetailsBuilder_ == null) {
        return pubsubDetails_.get(index);
      } else {
        return pubsubDetailsBuilder_.getMessageOrBuilder(index);
      }
    }
    /**
     *
     *
     * <pre>
     * Identification of a Pub/Sub source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.PubSubIODetails pubsub_details = 5;</code>
     */
    public java.util.List<? extends com.google.dataflow.v1beta3.PubSubIODetailsOrBuilder>
        getPubsubDetailsOrBuilderList() {
      if (pubsubDetailsBuilder_ != null) {
        return pubsubDetailsBuilder_.getMessageOrBuilderList();
      } else {
        return java.util.Collections.unmodifiableList(pubsubDetails_);
      }
    }
    /**
     *
     *
     * <pre>
     * Identification of a Pub/Sub source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.PubSubIODetails pubsub_details = 5;</code>
     */
    public com.google.dataflow.v1beta3.PubSubIODetails.Builder addPubsubDetailsBuilder() {
      return getPubsubDetailsFieldBuilder()
          .addBuilder(com.google.dataflow.v1beta3.PubSubIODetails.getDefaultInstance());
    }
    /**
     *
     *
     * <pre>
     * Identification of a Pub/Sub source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.PubSubIODetails pubsub_details = 5;</code>
     */
    public com.google.dataflow.v1beta3.PubSubIODetails.Builder addPubsubDetailsBuilder(int index) {
      return getPubsubDetailsFieldBuilder()
          .addBuilder(index, com.google.dataflow.v1beta3.PubSubIODetails.getDefaultInstance());
    }
    /**
     *
     *
     * <pre>
     * Identification of a Pub/Sub source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.PubSubIODetails pubsub_details = 5;</code>
     */
    public java.util.List<com.google.dataflow.v1beta3.PubSubIODetails.Builder>
        getPubsubDetailsBuilderList() {
      return getPubsubDetailsFieldBuilder().getBuilderList();
    }

    private com.google.protobuf.RepeatedFieldBuilderV3<
            com.google.dataflow.v1beta3.PubSubIODetails,
            com.google.dataflow.v1beta3.PubSubIODetails.Builder,
            com.google.dataflow.v1beta3.PubSubIODetailsOrBuilder>
        getPubsubDetailsFieldBuilder() {
      if (pubsubDetailsBuilder_ == null) {
        pubsubDetailsBuilder_ =
            new com.google.protobuf.RepeatedFieldBuilderV3<
                com.google.dataflow.v1beta3.PubSubIODetails,
                com.google.dataflow.v1beta3.PubSubIODetails.Builder,
                com.google.dataflow.v1beta3.PubSubIODetailsOrBuilder>(
                pubsubDetails_,
                ((bitField0_ & 0x00000008) != 0),
                getParentForChildren(),
                isClean());
        pubsubDetails_ = null;
      }
      return pubsubDetailsBuilder_;
    }

    private java.util.List<com.google.dataflow.v1beta3.FileIODetails> fileDetails_ =
        java.util.Collections.emptyList();

    private void ensureFileDetailsIsMutable() {
      if (!((bitField0_ & 0x00000010) != 0)) {
        fileDetails_ =
            new java.util.ArrayList<com.google.dataflow.v1beta3.FileIODetails>(fileDetails_);
        bitField0_ |= 0x00000010;
      }
    }

    private com.google.protobuf.RepeatedFieldBuilderV3<
            com.google.dataflow.v1beta3.FileIODetails,
            com.google.dataflow.v1beta3.FileIODetails.Builder,
            com.google.dataflow.v1beta3.FileIODetailsOrBuilder>
        fileDetailsBuilder_;

    /**
     *
     *
     * <pre>
     * Identification of a File source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.FileIODetails file_details = 6;</code>
     */
    public java.util.List<com.google.dataflow.v1beta3.FileIODetails> getFileDetailsList() {
      if (fileDetailsBuilder_ == null) {
        return java.util.Collections.unmodifiableList(fileDetails_);
      } else {
        return fileDetailsBuilder_.getMessageList();
      }
    }
    /**
     *
     *
     * <pre>
     * Identification of a File source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.FileIODetails file_details = 6;</code>
     */
    public int getFileDetailsCount() {
      if (fileDetailsBuilder_ == null) {
        return fileDetails_.size();
      } else {
        return fileDetailsBuilder_.getCount();
      }
    }
    /**
     *
     *
     * <pre>
     * Identification of a File source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.FileIODetails file_details = 6;</code>
     */
    public com.google.dataflow.v1beta3.FileIODetails getFileDetails(int index) {
      if (fileDetailsBuilder_ == null) {
        return fileDetails_.get(index);
      } else {
        return fileDetailsBuilder_.getMessage(index);
      }
    }
    /**
     *
     *
     * <pre>
     * Identification of a File source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.FileIODetails file_details = 6;</code>
     */
    public Builder setFileDetails(int index, com.google.dataflow.v1beta3.FileIODetails value) {
      if (fileDetailsBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureFileDetailsIsMutable();
        fileDetails_.set(index, value);
        onChanged();
      } else {
        fileDetailsBuilder_.setMessage(index, value);
      }
      return this;
    }
    /**
     *
     *
     * <pre>
     * Identification of a File source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.FileIODetails file_details = 6;</code>
     */
    public Builder setFileDetails(
        int index, com.google.dataflow.v1beta3.FileIODetails.Builder builderForValue) {
      if (fileDetailsBuilder_ == null) {
        ensureFileDetailsIsMutable();
        fileDetails_.set(index, builderForValue.build());
        onChanged();
      } else {
        fileDetailsBuilder_.setMessage(index, builderForValue.build());
      }
      return this;
    }
    /**
     *
     *
     * <pre>
     * Identification of a File source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.FileIODetails file_details = 6;</code>
     */
    public Builder addFileDetails(com.google.dataflow.v1beta3.FileIODetails value) {
      if (fileDetailsBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureFileDetailsIsMutable();
        fileDetails_.add(value);
        onChanged();
      } else {
        fileDetailsBuilder_.addMessage(value);
      }
      return this;
    }
    /**
     *
     *
     * <pre>
     * Identification of a File source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.FileIODetails file_details = 6;</code>
     */
    public Builder addFileDetails(int index, com.google.dataflow.v1beta3.FileIODetails value) {
      if (fileDetailsBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureFileDetailsIsMutable();
        fileDetails_.add(index, value);
        onChanged();
      } else {
        fileDetailsBuilder_.addMessage(index, value);
      }
      return this;
    }
    /**
     *
     *
     * <pre>
     * Identification of a File source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.FileIODetails file_details = 6;</code>
     */
    public Builder addFileDetails(
        com.google.dataflow.v1beta3.FileIODetails.Builder builderForValue) {
      if (fileDetailsBuilder_ == null) {
        ensureFileDetailsIsMutable();
        fileDetails_.add(builderForValue.build());
        onChanged();
      } else {
        fileDetailsBuilder_.addMessage(builderForValue.build());
      }
      return this;
    }
    /**
     *
     *
     * <pre>
     * Identification of a File source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.FileIODetails file_details = 6;</code>
     */
    public Builder addFileDetails(
        int index, com.google.dataflow.v1beta3.FileIODetails.Builder builderForValue) {
      if (fileDetailsBuilder_ == null) {
        ensureFileDetailsIsMutable();
        fileDetails_.add(index, builderForValue.build());
        onChanged();
      } else {
        fileDetailsBuilder_.addMessage(index, builderForValue.build());
      }
      return this;
    }
    /**
     *
     *
     * <pre>
     * Identification of a File source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.FileIODetails file_details = 6;</code>
     */
    public Builder addAllFileDetails(
        java.lang.Iterable<? extends com.google.dataflow.v1beta3.FileIODetails> values) {
      if (fileDetailsBuilder_ == null) {
        ensureFileDetailsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(values, fileDetails_);
        onChanged();
      } else {
        fileDetailsBuilder_.addAllMessages(values);
      }
      return this;
    }
    /**
     *
     *
     * <pre>
     * Identification of a File source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.FileIODetails file_details = 6;</code>
     */
    public Builder clearFileDetails() {
      if (fileDetailsBuilder_ == null) {
        fileDetails_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000010);
        onChanged();
      } else {
        fileDetailsBuilder_.clear();
      }
      return this;
    }
    /**
     *
     *
     * <pre>
     * Identification of a File source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.FileIODetails file_details = 6;</code>
     */
    public Builder removeFileDetails(int index) {
      if (fileDetailsBuilder_ == null) {
        ensureFileDetailsIsMutable();
        fileDetails_.remove(index);
        onChanged();
      } else {
        fileDetailsBuilder_.remove(index);
      }
      return this;
    }
    /**
     *
     *
     * <pre>
     * Identification of a File source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.FileIODetails file_details = 6;</code>
     */
    public com.google.dataflow.v1beta3.FileIODetails.Builder getFileDetailsBuilder(int index) {
      return getFileDetailsFieldBuilder().getBuilder(index);
    }
    /**
     *
     *
     * <pre>
     * Identification of a File source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.FileIODetails file_details = 6;</code>
     */
    public com.google.dataflow.v1beta3.FileIODetailsOrBuilder getFileDetailsOrBuilder(int index) {
      if (fileDetailsBuilder_ == null) {
        return fileDetails_.get(index);
      } else {
        return fileDetailsBuilder_.getMessageOrBuilder(index);
      }
    }
    /**
     *
     *
     * <pre>
     * Identification of a File source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.FileIODetails file_details = 6;</code>
     */
    public java.util.List<? extends com.google.dataflow.v1beta3.FileIODetailsOrBuilder>
        getFileDetailsOrBuilderList() {
      if (fileDetailsBuilder_ != null) {
        return fileDetailsBuilder_.getMessageOrBuilderList();
      } else {
        return java.util.Collections.unmodifiableList(fileDetails_);
      }
    }
    /**
     *
     *
     * <pre>
     * Identification of a File source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.FileIODetails file_details = 6;</code>
     */
    public com.google.dataflow.v1beta3.FileIODetails.Builder addFileDetailsBuilder() {
      return getFileDetailsFieldBuilder()
          .addBuilder(com.google.dataflow.v1beta3.FileIODetails.getDefaultInstance());
    }
    /**
     *
     *
     * <pre>
     * Identification of a File source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.FileIODetails file_details = 6;</code>
     */
    public com.google.dataflow.v1beta3.FileIODetails.Builder addFileDetailsBuilder(int index) {
      return getFileDetailsFieldBuilder()
          .addBuilder(index, com.google.dataflow.v1beta3.FileIODetails.getDefaultInstance());
    }
    /**
     *
     *
     * <pre>
     * Identification of a File source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.FileIODetails file_details = 6;</code>
     */
    public java.util.List<com.google.dataflow.v1beta3.FileIODetails.Builder>
        getFileDetailsBuilderList() {
      return getFileDetailsFieldBuilder().getBuilderList();
    }

    private com.google.protobuf.RepeatedFieldBuilderV3<
            com.google.dataflow.v1beta3.FileIODetails,
            com.google.dataflow.v1beta3.FileIODetails.Builder,
            com.google.dataflow.v1beta3.FileIODetailsOrBuilder>
        getFileDetailsFieldBuilder() {
      if (fileDetailsBuilder_ == null) {
        fileDetailsBuilder_ =
            new com.google.protobuf.RepeatedFieldBuilderV3<
                com.google.dataflow.v1beta3.FileIODetails,
                com.google.dataflow.v1beta3.FileIODetails.Builder,
                com.google.dataflow.v1beta3.FileIODetailsOrBuilder>(
                fileDetails_, ((bitField0_ & 0x00000010) != 0), getParentForChildren(), isClean());
        fileDetails_ = null;
      }
      return fileDetailsBuilder_;
    }

    private java.util.List<com.google.dataflow.v1beta3.DatastoreIODetails> datastoreDetails_ =
        java.util.Collections.emptyList();

    private void ensureDatastoreDetailsIsMutable() {
      if (!((bitField0_ & 0x00000020) != 0)) {
        datastoreDetails_ =
            new java.util.ArrayList<com.google.dataflow.v1beta3.DatastoreIODetails>(
                datastoreDetails_);
        bitField0_ |= 0x00000020;
      }
    }

    private com.google.protobuf.RepeatedFieldBuilderV3<
            com.google.dataflow.v1beta3.DatastoreIODetails,
            com.google.dataflow.v1beta3.DatastoreIODetails.Builder,
            com.google.dataflow.v1beta3.DatastoreIODetailsOrBuilder>
        datastoreDetailsBuilder_;

    /**
     *
     *
     * <pre>
     * Identification of a Datastore source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.DatastoreIODetails datastore_details = 7;</code>
     */
    public java.util.List<com.google.dataflow.v1beta3.DatastoreIODetails>
        getDatastoreDetailsList() {
      if (datastoreDetailsBuilder_ == null) {
        return java.util.Collections.unmodifiableList(datastoreDetails_);
      } else {
        return datastoreDetailsBuilder_.getMessageList();
      }
    }
    /**
     *
     *
     * <pre>
     * Identification of a Datastore source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.DatastoreIODetails datastore_details = 7;</code>
     */
    public int getDatastoreDetailsCount() {
      if (datastoreDetailsBuilder_ == null) {
        return datastoreDetails_.size();
      } else {
        return datastoreDetailsBuilder_.getCount();
      }
    }
    /**
     *
     *
     * <pre>
     * Identification of a Datastore source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.DatastoreIODetails datastore_details = 7;</code>
     */
    public com.google.dataflow.v1beta3.DatastoreIODetails getDatastoreDetails(int index) {
      if (datastoreDetailsBuilder_ == null) {
        return datastoreDetails_.get(index);
      } else {
        return datastoreDetailsBuilder_.getMessage(index);
      }
    }
    /**
     *
     *
     * <pre>
     * Identification of a Datastore source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.DatastoreIODetails datastore_details = 7;</code>
     */
    public Builder setDatastoreDetails(
        int index, com.google.dataflow.v1beta3.DatastoreIODetails value) {
      if (datastoreDetailsBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureDatastoreDetailsIsMutable();
        datastoreDetails_.set(index, value);
        onChanged();
      } else {
        datastoreDetailsBuilder_.setMessage(index, value);
      }
      return this;
    }
    /**
     *
     *
     * <pre>
     * Identification of a Datastore source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.DatastoreIODetails datastore_details = 7;</code>
     */
    public Builder setDatastoreDetails(
        int index, com.google.dataflow.v1beta3.DatastoreIODetails.Builder builderForValue) {
      if (datastoreDetailsBuilder_ == null) {
        ensureDatastoreDetailsIsMutable();
        datastoreDetails_.set(index, builderForValue.build());
        onChanged();
      } else {
        datastoreDetailsBuilder_.setMessage(index, builderForValue.build());
      }
      return this;
    }
    /**
     *
     *
     * <pre>
     * Identification of a Datastore source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.DatastoreIODetails datastore_details = 7;</code>
     */
    public Builder addDatastoreDetails(com.google.dataflow.v1beta3.DatastoreIODetails value) {
      if (datastoreDetailsBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureDatastoreDetailsIsMutable();
        datastoreDetails_.add(value);
        onChanged();
      } else {
        datastoreDetailsBuilder_.addMessage(value);
      }
      return this;
    }
    /**
     *
     *
     * <pre>
     * Identification of a Datastore source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.DatastoreIODetails datastore_details = 7;</code>
     */
    public Builder addDatastoreDetails(
        int index, com.google.dataflow.v1beta3.DatastoreIODetails value) {
      if (datastoreDetailsBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureDatastoreDetailsIsMutable();
        datastoreDetails_.add(index, value);
        onChanged();
      } else {
        datastoreDetailsBuilder_.addMessage(index, value);
      }
      return this;
    }
    /**
     *
     *
     * <pre>
     * Identification of a Datastore source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.DatastoreIODetails datastore_details = 7;</code>
     */
    public Builder addDatastoreDetails(
        com.google.dataflow.v1beta3.DatastoreIODetails.Builder builderForValue) {
      if (datastoreDetailsBuilder_ == null) {
        ensureDatastoreDetailsIsMutable();
        datastoreDetails_.add(builderForValue.build());
        onChanged();
      } else {
        datastoreDetailsBuilder_.addMessage(builderForValue.build());
      }
      return this;
    }
    /**
     *
     *
     * <pre>
     * Identification of a Datastore source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.DatastoreIODetails datastore_details = 7;</code>
     */
    public Builder addDatastoreDetails(
        int index, com.google.dataflow.v1beta3.DatastoreIODetails.Builder builderForValue) {
      if (datastoreDetailsBuilder_ == null) {
        ensureDatastoreDetailsIsMutable();
        datastoreDetails_.add(index, builderForValue.build());
        onChanged();
      } else {
        datastoreDetailsBuilder_.addMessage(index, builderForValue.build());
      }
      return this;
    }
    /**
     *
     *
     * <pre>
     * Identification of a Datastore source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.DatastoreIODetails datastore_details = 7;</code>
     */
    public Builder addAllDatastoreDetails(
        java.lang.Iterable<? extends com.google.dataflow.v1beta3.DatastoreIODetails> values) {
      if (datastoreDetailsBuilder_ == null) {
        ensureDatastoreDetailsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(values, datastoreDetails_);
        onChanged();
      } else {
        datastoreDetailsBuilder_.addAllMessages(values);
      }
      return this;
    }
    /**
     *
     *
     * <pre>
     * Identification of a Datastore source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.DatastoreIODetails datastore_details = 7;</code>
     */
    public Builder clearDatastoreDetails() {
      if (datastoreDetailsBuilder_ == null) {
        datastoreDetails_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000020);
        onChanged();
      } else {
        datastoreDetailsBuilder_.clear();
      }
      return this;
    }
    /**
     *
     *
     * <pre>
     * Identification of a Datastore source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.DatastoreIODetails datastore_details = 7;</code>
     */
    public Builder removeDatastoreDetails(int index) {
      if (datastoreDetailsBuilder_ == null) {
        ensureDatastoreDetailsIsMutable();
        datastoreDetails_.remove(index);
        onChanged();
      } else {
        datastoreDetailsBuilder_.remove(index);
      }
      return this;
    }
    /**
     *
     *
     * <pre>
     * Identification of a Datastore source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.DatastoreIODetails datastore_details = 7;</code>
     */
    public com.google.dataflow.v1beta3.DatastoreIODetails.Builder getDatastoreDetailsBuilder(
        int index) {
      return getDatastoreDetailsFieldBuilder().getBuilder(index);
    }
    /**
     *
     *
     * <pre>
     * Identification of a Datastore source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.DatastoreIODetails datastore_details = 7;</code>
     */
    public com.google.dataflow.v1beta3.DatastoreIODetailsOrBuilder getDatastoreDetailsOrBuilder(
        int index) {
      if (datastoreDetailsBuilder_ == null) {
        return datastoreDetails_.get(index);
      } else {
        return datastoreDetailsBuilder_.getMessageOrBuilder(index);
      }
    }
    /**
     *
     *
     * <pre>
     * Identification of a Datastore source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.DatastoreIODetails datastore_details = 7;</code>
     */
    public java.util.List<? extends com.google.dataflow.v1beta3.DatastoreIODetailsOrBuilder>
        getDatastoreDetailsOrBuilderList() {
      if (datastoreDetailsBuilder_ != null) {
        return datastoreDetailsBuilder_.getMessageOrBuilderList();
      } else {
        return java.util.Collections.unmodifiableList(datastoreDetails_);
      }
    }
    /**
     *
     *
     * <pre>
     * Identification of a Datastore source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.DatastoreIODetails datastore_details = 7;</code>
     */
    public com.google.dataflow.v1beta3.DatastoreIODetails.Builder addDatastoreDetailsBuilder() {
      return getDatastoreDetailsFieldBuilder()
          .addBuilder(com.google.dataflow.v1beta3.DatastoreIODetails.getDefaultInstance());
    }
    /**
     *
     *
     * <pre>
     * Identification of a Datastore source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.DatastoreIODetails datastore_details = 7;</code>
     */
    public com.google.dataflow.v1beta3.DatastoreIODetails.Builder addDatastoreDetailsBuilder(
        int index) {
      return getDatastoreDetailsFieldBuilder()
          .addBuilder(index, com.google.dataflow.v1beta3.DatastoreIODetails.getDefaultInstance());
    }
    /**
     *
     *
     * <pre>
     * Identification of a Datastore source used in the Dataflow job.
     * </pre>
     *
     * <code>repeated .google.dataflow.v1beta3.DatastoreIODetails datastore_details = 7;</code>
     */
    public java.util.List<com.google.dataflow.v1beta3.DatastoreIODetails.Builder>
        getDatastoreDetailsBuilderList() {
      return getDatastoreDetailsFieldBuilder().getBuilderList();
    }

    private com.google.protobuf.RepeatedFieldBuilderV3<
            com.google.dataflow.v1beta3.DatastoreIODetails,
            com.google.dataflow.v1beta3.DatastoreIODetails.Builder,
            com.google.dataflow.v1beta3.DatastoreIODetailsOrBuilder>
        getDatastoreDetailsFieldBuilder() {
      if (datastoreDetailsBuilder_ == null) {
        datastoreDetailsBuilder_ =
            new com.google.protobuf.RepeatedFieldBuilderV3<
                com.google.dataflow.v1beta3.DatastoreIODetails,
                com.google.dataflow.v1beta3.DatastoreIODetails.Builder,
                com.google.dataflow.v1beta3.DatastoreIODetailsOrBuilder>(
                datastoreDetails_,
                ((bitField0_ & 0x00000020) != 0),
                getParentForChildren(),
                isClean());
        datastoreDetails_ = null;
      }
      return datastoreDetailsBuilder_;
    }

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

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

    // @@protoc_insertion_point(builder_scope:google.dataflow.v1beta3.JobMetadata)
  }

  // @@protoc_insertion_point(class_scope:google.dataflow.v1beta3.JobMetadata)
  private static final com.google.dataflow.v1beta3.JobMetadata DEFAULT_INSTANCE;

  static {
    DEFAULT_INSTANCE = new com.google.dataflow.v1beta3.JobMetadata();
  }

  public static com.google.dataflow.v1beta3.JobMetadata getDefaultInstance() {
    return DEFAULT_INSTANCE;
  }

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

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

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

  @java.lang.Override
  public com.google.dataflow.v1beta3.JobMetadata getDefaultInstanceForType() {
    return DEFAULT_INSTANCE;
  }
}
