/*
 * 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/cloud/notebooks/v1/execution.proto

package com.google.cloud.notebooks.v1;

/**
 *
 *
 * <pre>
 * The description a notebook execution workload.
 * </pre>
 *
 * Protobuf type {@code google.cloud.notebooks.v1.ExecutionTemplate}
 */
public final class ExecutionTemplate extends com.google.protobuf.GeneratedMessageV3
    implements
    // @@protoc_insertion_point(message_implements:google.cloud.notebooks.v1.ExecutionTemplate)
    ExecutionTemplateOrBuilder {
  private static final long serialVersionUID = 0L;
  // Use ExecutionTemplate.newBuilder() to construct.
  private ExecutionTemplate(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
    super(builder);
  }

  private ExecutionTemplate() {
    scaleTier_ = 0;
    masterType_ = "";
    inputNotebookFile_ = "";
    containerImageUri_ = "";
    outputNotebookFolder_ = "";
    paramsYamlFile_ = "";
    parameters_ = "";
    serviceAccount_ = "";
    jobType_ = 0;
    kernelSpec_ = "";
    tensorboard_ = "";
  }

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

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

  public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
    return com.google.cloud.notebooks.v1.ExecutionProto
        .internal_static_google_cloud_notebooks_v1_ExecutionTemplate_descriptor;
  }

  @SuppressWarnings({"rawtypes"})
  @java.lang.Override
  protected com.google.protobuf.MapField internalGetMapField(int number) {
    switch (number) {
      case 4:
        return internalGetLabels();
      default:
        throw new RuntimeException("Invalid map field number: " + number);
    }
  }

  @java.lang.Override
  protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internalGetFieldAccessorTable() {
    return com.google.cloud.notebooks.v1.ExecutionProto
        .internal_static_google_cloud_notebooks_v1_ExecutionTemplate_fieldAccessorTable
        .ensureFieldAccessorsInitialized(
            com.google.cloud.notebooks.v1.ExecutionTemplate.class,
            com.google.cloud.notebooks.v1.ExecutionTemplate.Builder.class);
  }

  /**
   *
   *
   * <pre>
   * Required. Specifies the machine types, the number of replicas for workers
   * and parameter servers.
   * </pre>
   *
   * Protobuf enum {@code google.cloud.notebooks.v1.ExecutionTemplate.ScaleTier}
   */
  public enum ScaleTier implements com.google.protobuf.ProtocolMessageEnum {
    /**
     *
     *
     * <pre>
     * Unspecified Scale Tier.
     * </pre>
     *
     * <code>SCALE_TIER_UNSPECIFIED = 0;</code>
     */
    SCALE_TIER_UNSPECIFIED(0),
    /**
     *
     *
     * <pre>
     * A single worker instance. This tier is suitable for learning how to use
     * Cloud ML, and for experimenting with new models using small datasets.
     * </pre>
     *
     * <code>BASIC = 1;</code>
     */
    BASIC(1),
    /**
     *
     *
     * <pre>
     * Many workers and a few parameter servers.
     * </pre>
     *
     * <code>STANDARD_1 = 2;</code>
     */
    STANDARD_1(2),
    /**
     *
     *
     * <pre>
     * A large number of workers with many parameter servers.
     * </pre>
     *
     * <code>PREMIUM_1 = 3;</code>
     */
    PREMIUM_1(3),
    /**
     *
     *
     * <pre>
     * A single worker instance with a K80 GPU.
     * </pre>
     *
     * <code>BASIC_GPU = 4;</code>
     */
    BASIC_GPU(4),
    /**
     *
     *
     * <pre>
     * A single worker instance with a Cloud TPU.
     * </pre>
     *
     * <code>BASIC_TPU = 5;</code>
     */
    BASIC_TPU(5),
    /**
     *
     *
     * <pre>
     * The CUSTOM tier is not a set tier, but rather enables you to use your
     * own cluster specification. When you use this tier, set values to
     * configure your processing cluster according to these guidelines:
     * *   You _must_ set `ExecutionTemplate.masterType` to specify the type
     *     of machine to use for your master node. This is the only required
     *     setting.
     * </pre>
     *
     * <code>CUSTOM = 6;</code>
     */
    CUSTOM(6),
    UNRECOGNIZED(-1),
    ;

    /**
     *
     *
     * <pre>
     * Unspecified Scale Tier.
     * </pre>
     *
     * <code>SCALE_TIER_UNSPECIFIED = 0;</code>
     */
    public static final int SCALE_TIER_UNSPECIFIED_VALUE = 0;
    /**
     *
     *
     * <pre>
     * A single worker instance. This tier is suitable for learning how to use
     * Cloud ML, and for experimenting with new models using small datasets.
     * </pre>
     *
     * <code>BASIC = 1;</code>
     */
    public static final int BASIC_VALUE = 1;
    /**
     *
     *
     * <pre>
     * Many workers and a few parameter servers.
     * </pre>
     *
     * <code>STANDARD_1 = 2;</code>
     */
    public static final int STANDARD_1_VALUE = 2;
    /**
     *
     *
     * <pre>
     * A large number of workers with many parameter servers.
     * </pre>
     *
     * <code>PREMIUM_1 = 3;</code>
     */
    public static final int PREMIUM_1_VALUE = 3;
    /**
     *
     *
     * <pre>
     * A single worker instance with a K80 GPU.
     * </pre>
     *
     * <code>BASIC_GPU = 4;</code>
     */
    public static final int BASIC_GPU_VALUE = 4;
    /**
     *
     *
     * <pre>
     * A single worker instance with a Cloud TPU.
     * </pre>
     *
     * <code>BASIC_TPU = 5;</code>
     */
    public static final int BASIC_TPU_VALUE = 5;
    /**
     *
     *
     * <pre>
     * The CUSTOM tier is not a set tier, but rather enables you to use your
     * own cluster specification. When you use this tier, set values to
     * configure your processing cluster according to these guidelines:
     * *   You _must_ set `ExecutionTemplate.masterType` to specify the type
     *     of machine to use for your master node. This is the only required
     *     setting.
     * </pre>
     *
     * <code>CUSTOM = 6;</code>
     */
    public static final int CUSTOM_VALUE = 6;

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

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     * @deprecated Use {@link #forNumber(int)} instead.
     */
    @java.lang.Deprecated
    public static ScaleTier valueOf(int value) {
      return forNumber(value);
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     */
    public static ScaleTier forNumber(int value) {
      switch (value) {
        case 0:
          return SCALE_TIER_UNSPECIFIED;
        case 1:
          return BASIC;
        case 2:
          return STANDARD_1;
        case 3:
          return PREMIUM_1;
        case 4:
          return BASIC_GPU;
        case 5:
          return BASIC_TPU;
        case 6:
          return CUSTOM;
        default:
          return null;
      }
    }

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

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

    public final com.google.protobuf.Descriptors.EnumValueDescriptor getValueDescriptor() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalStateException(
            "Can't get the descriptor of an unrecognized enum value.");
      }
      return getDescriptor().getValues().get(ordinal());
    }

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

    public static final com.google.protobuf.Descriptors.EnumDescriptor getDescriptor() {
      return com.google.cloud.notebooks.v1.ExecutionTemplate.getDescriptor().getEnumTypes().get(0);
    }

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

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

    private final int value;

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

    // @@protoc_insertion_point(enum_scope:google.cloud.notebooks.v1.ExecutionTemplate.ScaleTier)
  }

  /**
   *
   *
   * <pre>
   * Hardware accelerator types for AI Platform Training jobs.
   * </pre>
   *
   * Protobuf enum {@code google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorType}
   */
  public enum SchedulerAcceleratorType implements com.google.protobuf.ProtocolMessageEnum {
    /**
     *
     *
     * <pre>
     * Unspecified accelerator type. Default to no GPU.
     * </pre>
     *
     * <code>SCHEDULER_ACCELERATOR_TYPE_UNSPECIFIED = 0;</code>
     */
    SCHEDULER_ACCELERATOR_TYPE_UNSPECIFIED(0),
    /**
     *
     *
     * <pre>
     * Nvidia Tesla K80 GPU.
     * </pre>
     *
     * <code>NVIDIA_TESLA_K80 = 1;</code>
     */
    NVIDIA_TESLA_K80(1),
    /**
     *
     *
     * <pre>
     * Nvidia Tesla P100 GPU.
     * </pre>
     *
     * <code>NVIDIA_TESLA_P100 = 2;</code>
     */
    NVIDIA_TESLA_P100(2),
    /**
     *
     *
     * <pre>
     * Nvidia Tesla V100 GPU.
     * </pre>
     *
     * <code>NVIDIA_TESLA_V100 = 3;</code>
     */
    NVIDIA_TESLA_V100(3),
    /**
     *
     *
     * <pre>
     * Nvidia Tesla P4 GPU.
     * </pre>
     *
     * <code>NVIDIA_TESLA_P4 = 4;</code>
     */
    NVIDIA_TESLA_P4(4),
    /**
     *
     *
     * <pre>
     * Nvidia Tesla T4 GPU.
     * </pre>
     *
     * <code>NVIDIA_TESLA_T4 = 5;</code>
     */
    NVIDIA_TESLA_T4(5),
    /**
     *
     *
     * <pre>
     * Nvidia Tesla A100 GPU.
     * </pre>
     *
     * <code>NVIDIA_TESLA_A100 = 10;</code>
     */
    NVIDIA_TESLA_A100(10),
    /**
     *
     *
     * <pre>
     * TPU v2.
     * </pre>
     *
     * <code>TPU_V2 = 6;</code>
     */
    TPU_V2(6),
    /**
     *
     *
     * <pre>
     * TPU v3.
     * </pre>
     *
     * <code>TPU_V3 = 7;</code>
     */
    TPU_V3(7),
    UNRECOGNIZED(-1),
    ;

    /**
     *
     *
     * <pre>
     * Unspecified accelerator type. Default to no GPU.
     * </pre>
     *
     * <code>SCHEDULER_ACCELERATOR_TYPE_UNSPECIFIED = 0;</code>
     */
    public static final int SCHEDULER_ACCELERATOR_TYPE_UNSPECIFIED_VALUE = 0;
    /**
     *
     *
     * <pre>
     * Nvidia Tesla K80 GPU.
     * </pre>
     *
     * <code>NVIDIA_TESLA_K80 = 1;</code>
     */
    public static final int NVIDIA_TESLA_K80_VALUE = 1;
    /**
     *
     *
     * <pre>
     * Nvidia Tesla P100 GPU.
     * </pre>
     *
     * <code>NVIDIA_TESLA_P100 = 2;</code>
     */
    public static final int NVIDIA_TESLA_P100_VALUE = 2;
    /**
     *
     *
     * <pre>
     * Nvidia Tesla V100 GPU.
     * </pre>
     *
     * <code>NVIDIA_TESLA_V100 = 3;</code>
     */
    public static final int NVIDIA_TESLA_V100_VALUE = 3;
    /**
     *
     *
     * <pre>
     * Nvidia Tesla P4 GPU.
     * </pre>
     *
     * <code>NVIDIA_TESLA_P4 = 4;</code>
     */
    public static final int NVIDIA_TESLA_P4_VALUE = 4;
    /**
     *
     *
     * <pre>
     * Nvidia Tesla T4 GPU.
     * </pre>
     *
     * <code>NVIDIA_TESLA_T4 = 5;</code>
     */
    public static final int NVIDIA_TESLA_T4_VALUE = 5;
    /**
     *
     *
     * <pre>
     * Nvidia Tesla A100 GPU.
     * </pre>
     *
     * <code>NVIDIA_TESLA_A100 = 10;</code>
     */
    public static final int NVIDIA_TESLA_A100_VALUE = 10;
    /**
     *
     *
     * <pre>
     * TPU v2.
     * </pre>
     *
     * <code>TPU_V2 = 6;</code>
     */
    public static final int TPU_V2_VALUE = 6;
    /**
     *
     *
     * <pre>
     * TPU v3.
     * </pre>
     *
     * <code>TPU_V3 = 7;</code>
     */
    public static final int TPU_V3_VALUE = 7;

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

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     * @deprecated Use {@link #forNumber(int)} instead.
     */
    @java.lang.Deprecated
    public static SchedulerAcceleratorType valueOf(int value) {
      return forNumber(value);
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     */
    public static SchedulerAcceleratorType forNumber(int value) {
      switch (value) {
        case 0:
          return SCHEDULER_ACCELERATOR_TYPE_UNSPECIFIED;
        case 1:
          return NVIDIA_TESLA_K80;
        case 2:
          return NVIDIA_TESLA_P100;
        case 3:
          return NVIDIA_TESLA_V100;
        case 4:
          return NVIDIA_TESLA_P4;
        case 5:
          return NVIDIA_TESLA_T4;
        case 10:
          return NVIDIA_TESLA_A100;
        case 6:
          return TPU_V2;
        case 7:
          return TPU_V3;
        default:
          return null;
      }
    }

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

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

    public final com.google.protobuf.Descriptors.EnumValueDescriptor getValueDescriptor() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalStateException(
            "Can't get the descriptor of an unrecognized enum value.");
      }
      return getDescriptor().getValues().get(ordinal());
    }

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

    public static final com.google.protobuf.Descriptors.EnumDescriptor getDescriptor() {
      return com.google.cloud.notebooks.v1.ExecutionTemplate.getDescriptor().getEnumTypes().get(1);
    }

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

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

    private final int value;

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

    // @@protoc_insertion_point(enum_scope:google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorType)
  }

  /**
   *
   *
   * <pre>
   * The backend used for this execution.
   * </pre>
   *
   * Protobuf enum {@code google.cloud.notebooks.v1.ExecutionTemplate.JobType}
   */
  public enum JobType implements com.google.protobuf.ProtocolMessageEnum {
    /**
     *
     *
     * <pre>
     * No type specified.
     * </pre>
     *
     * <code>JOB_TYPE_UNSPECIFIED = 0;</code>
     */
    JOB_TYPE_UNSPECIFIED(0),
    /**
     *
     *
     * <pre>
     * Custom Job in `aiplatform.googleapis.com`.
     * Default value for an execution.
     * </pre>
     *
     * <code>VERTEX_AI = 1;</code>
     */
    VERTEX_AI(1),
    /**
     *
     *
     * <pre>
     * Run execution on a cluster with Dataproc as a job.
     * https://cloud.google.com/dataproc/docs/reference/rest/v1/projects.regions.jobs
     * </pre>
     *
     * <code>DATAPROC = 2;</code>
     */
    DATAPROC(2),
    UNRECOGNIZED(-1),
    ;

    /**
     *
     *
     * <pre>
     * No type specified.
     * </pre>
     *
     * <code>JOB_TYPE_UNSPECIFIED = 0;</code>
     */
    public static final int JOB_TYPE_UNSPECIFIED_VALUE = 0;
    /**
     *
     *
     * <pre>
     * Custom Job in `aiplatform.googleapis.com`.
     * Default value for an execution.
     * </pre>
     *
     * <code>VERTEX_AI = 1;</code>
     */
    public static final int VERTEX_AI_VALUE = 1;
    /**
     *
     *
     * <pre>
     * Run execution on a cluster with Dataproc as a job.
     * https://cloud.google.com/dataproc/docs/reference/rest/v1/projects.regions.jobs
     * </pre>
     *
     * <code>DATAPROC = 2;</code>
     */
    public static final int DATAPROC_VALUE = 2;

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

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     * @deprecated Use {@link #forNumber(int)} instead.
     */
    @java.lang.Deprecated
    public static JobType valueOf(int value) {
      return forNumber(value);
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     */
    public static JobType forNumber(int value) {
      switch (value) {
        case 0:
          return JOB_TYPE_UNSPECIFIED;
        case 1:
          return VERTEX_AI;
        case 2:
          return DATAPROC;
        default:
          return null;
      }
    }

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

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

    public final com.google.protobuf.Descriptors.EnumValueDescriptor getValueDescriptor() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalStateException(
            "Can't get the descriptor of an unrecognized enum value.");
      }
      return getDescriptor().getValues().get(ordinal());
    }

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

    public static final com.google.protobuf.Descriptors.EnumDescriptor getDescriptor() {
      return com.google.cloud.notebooks.v1.ExecutionTemplate.getDescriptor().getEnumTypes().get(2);
    }

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

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

    private final int value;

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

    // @@protoc_insertion_point(enum_scope:google.cloud.notebooks.v1.ExecutionTemplate.JobType)
  }

  public interface SchedulerAcceleratorConfigOrBuilder
      extends
      // @@protoc_insertion_point(interface_extends:google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorConfig)
      com.google.protobuf.MessageOrBuilder {

    /**
     *
     *
     * <pre>
     * Type of this accelerator.
     * </pre>
     *
     * <code>.google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorType type = 1;</code>
     *
     * @return The enum numeric value on the wire for type.
     */
    int getTypeValue();
    /**
     *
     *
     * <pre>
     * Type of this accelerator.
     * </pre>
     *
     * <code>.google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorType type = 1;</code>
     *
     * @return The type.
     */
    com.google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorType getType();

    /**
     *
     *
     * <pre>
     * Count of cores of this accelerator.
     * </pre>
     *
     * <code>int64 core_count = 2;</code>
     *
     * @return The coreCount.
     */
    long getCoreCount();
  }
  /**
   *
   *
   * <pre>
   * Definition of a hardware accelerator. Note that not all combinations
   * of `type` and `core_count` are valid. Check [GPUs on
   * Compute Engine](https://cloud.google.com/compute/docs/gpus) to find a valid
   * combination. TPUs are not supported.
   * </pre>
   *
   * Protobuf type {@code google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorConfig}
   */
  public static final class SchedulerAcceleratorConfig
      extends com.google.protobuf.GeneratedMessageV3
      implements
      // @@protoc_insertion_point(message_implements:google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorConfig)
      SchedulerAcceleratorConfigOrBuilder {
    private static final long serialVersionUID = 0L;
    // Use SchedulerAcceleratorConfig.newBuilder() to construct.
    private SchedulerAcceleratorConfig(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }

    private SchedulerAcceleratorConfig() {
      type_ = 0;
    }

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

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

    public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
      return com.google.cloud.notebooks.v1.ExecutionProto
          .internal_static_google_cloud_notebooks_v1_ExecutionTemplate_SchedulerAcceleratorConfig_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.cloud.notebooks.v1.ExecutionProto
          .internal_static_google_cloud_notebooks_v1_ExecutionTemplate_SchedulerAcceleratorConfig_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorConfig.class,
              com.google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorConfig.Builder
                  .class);
    }

    public static final int TYPE_FIELD_NUMBER = 1;
    private int type_ = 0;
    /**
     *
     *
     * <pre>
     * Type of this accelerator.
     * </pre>
     *
     * <code>.google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorType type = 1;</code>
     *
     * @return The enum numeric value on the wire for type.
     */
    @java.lang.Override
    public int getTypeValue() {
      return type_;
    }
    /**
     *
     *
     * <pre>
     * Type of this accelerator.
     * </pre>
     *
     * <code>.google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorType type = 1;</code>
     *
     * @return The type.
     */
    @java.lang.Override
    public com.google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorType getType() {
      com.google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorType result =
          com.google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorType.forNumber(type_);
      return result == null
          ? com.google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorType.UNRECOGNIZED
          : result;
    }

    public static final int CORE_COUNT_FIELD_NUMBER = 2;
    private long coreCount_ = 0L;
    /**
     *
     *
     * <pre>
     * Count of cores of this accelerator.
     * </pre>
     *
     * <code>int64 core_count = 2;</code>
     *
     * @return The coreCount.
     */
    @java.lang.Override
    public long getCoreCount() {
      return coreCount_;
    }

    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 (type_
          != com.google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorType
              .SCHEDULER_ACCELERATOR_TYPE_UNSPECIFIED
              .getNumber()) {
        output.writeEnum(1, type_);
      }
      if (coreCount_ != 0L) {
        output.writeInt64(2, coreCount_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (type_
          != com.google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorType
              .SCHEDULER_ACCELERATOR_TYPE_UNSPECIFIED
              .getNumber()) {
        size += com.google.protobuf.CodedOutputStream.computeEnumSize(1, type_);
      }
      if (coreCount_ != 0L) {
        size += com.google.protobuf.CodedOutputStream.computeInt64Size(2, coreCount_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
        return true;
      }
      if (!(obj
          instanceof com.google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorConfig)) {
        return super.equals(obj);
      }
      com.google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorConfig other =
          (com.google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorConfig) obj;

      if (type_ != other.type_) return false;
      if (getCoreCount() != other.getCoreCount()) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

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

    public static com.google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorConfig
        parseFrom(java.nio.ByteBuffer data)
            throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorConfig
        parseFrom(
            java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorConfig
        parseFrom(com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorConfig
        parseFrom(
            com.google.protobuf.ByteString data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorConfig
        parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorConfig
        parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorConfig
        parseFrom(java.io.InputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
    }

    public static com.google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorConfig
        parseFrom(
            java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
          PARSER, input, extensionRegistry);
    }

    public static com.google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorConfig
        parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
    }

    public static com.google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorConfig
        parseDelimitedFrom(
            java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(
          PARSER, input, extensionRegistry);
    }

    public static com.google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorConfig
        parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
    }

    public static com.google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorConfig
        parseFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
          PARSER, input, extensionRegistry);
    }

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

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

    public static Builder newBuilder(
        com.google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorConfig 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>
     * Definition of a hardware accelerator. Note that not all combinations
     * of `type` and `core_count` are valid. Check [GPUs on
     * Compute Engine](https://cloud.google.com/compute/docs/gpus) to find a valid
     * combination. TPUs are not supported.
     * </pre>
     *
     * Protobuf type {@code google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorConfig}
     */
    public static final class Builder
        extends com.google.protobuf.GeneratedMessageV3.Builder<Builder>
        implements
        // @@protoc_insertion_point(builder_implements:google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorConfig)
        com.google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorConfigOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
        return com.google.cloud.notebooks.v1.ExecutionProto
            .internal_static_google_cloud_notebooks_v1_ExecutionTemplate_SchedulerAcceleratorConfig_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.cloud.notebooks.v1.ExecutionProto
            .internal_static_google_cloud_notebooks_v1_ExecutionTemplate_SchedulerAcceleratorConfig_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorConfig.class,
                com.google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorConfig.Builder
                    .class);
      }

      // Construct using
      // com.google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorConfig.newBuilder()
      private Builder() {}

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

      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        type_ = 0;
        coreCount_ = 0L;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
        return com.google.cloud.notebooks.v1.ExecutionProto
            .internal_static_google_cloud_notebooks_v1_ExecutionTemplate_SchedulerAcceleratorConfig_descriptor;
      }

      @java.lang.Override
      public com.google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorConfig
          getDefaultInstanceForType() {
        return com.google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorConfig
            .getDefaultInstance();
      }

      @java.lang.Override
      public com.google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorConfig build() {
        com.google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorConfig result =
            buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorConfig
          buildPartial() {
        com.google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorConfig result =
            new com.google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorConfig(this);
        if (bitField0_ != 0) {
          buildPartial0(result);
        }
        onBuilt();
        return result;
      }

      private void buildPartial0(
          com.google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorConfig result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.type_ = type_;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.coreCount_ = coreCount_;
        }
      }

      @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.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorConfig) {
          return mergeFrom(
              (com.google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorConfig) other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(
          com.google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorConfig other) {
        if (other
            == com.google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorConfig
                .getDefaultInstance()) return this;
        if (other.type_ != 0) {
          setTypeValue(other.getTypeValue());
        }
        if (other.getCoreCount() != 0L) {
          setCoreCount(other.getCoreCount());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        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 {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8:
                {
                  type_ = input.readEnum();
                  bitField0_ |= 0x00000001;
                  break;
                } // case 8
              case 16:
                {
                  coreCount_ = input.readInt64();
                  bitField0_ |= 0x00000002;
                  break;
                } // case 16
              default:
                {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }

      private int bitField0_;

      private int type_ = 0;
      /**
       *
       *
       * <pre>
       * Type of this accelerator.
       * </pre>
       *
       * <code>.google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorType type = 1;
       * </code>
       *
       * @return The enum numeric value on the wire for type.
       */
      @java.lang.Override
      public int getTypeValue() {
        return type_;
      }
      /**
       *
       *
       * <pre>
       * Type of this accelerator.
       * </pre>
       *
       * <code>.google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorType type = 1;
       * </code>
       *
       * @param value The enum numeric value on the wire for type to set.
       * @return This builder for chaining.
       */
      public Builder setTypeValue(int value) {
        type_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Type of this accelerator.
       * </pre>
       *
       * <code>.google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorType type = 1;
       * </code>
       *
       * @return The type.
       */
      @java.lang.Override
      public com.google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorType getType() {
        com.google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorType result =
            com.google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorType.forNumber(
                type_);
        return result == null
            ? com.google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorType.UNRECOGNIZED
            : result;
      }
      /**
       *
       *
       * <pre>
       * Type of this accelerator.
       * </pre>
       *
       * <code>.google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorType type = 1;
       * </code>
       *
       * @param value The type to set.
       * @return This builder for chaining.
       */
      public Builder setType(
          com.google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorType value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000001;
        type_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Type of this accelerator.
       * </pre>
       *
       * <code>.google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorType type = 1;
       * </code>
       *
       * @return This builder for chaining.
       */
      public Builder clearType() {
        bitField0_ = (bitField0_ & ~0x00000001);
        type_ = 0;
        onChanged();
        return this;
      }

      private long coreCount_;
      /**
       *
       *
       * <pre>
       * Count of cores of this accelerator.
       * </pre>
       *
       * <code>int64 core_count = 2;</code>
       *
       * @return The coreCount.
       */
      @java.lang.Override
      public long getCoreCount() {
        return coreCount_;
      }
      /**
       *
       *
       * <pre>
       * Count of cores of this accelerator.
       * </pre>
       *
       * <code>int64 core_count = 2;</code>
       *
       * @param value The coreCount to set.
       * @return This builder for chaining.
       */
      public Builder setCoreCount(long value) {

        coreCount_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Count of cores of this accelerator.
       * </pre>
       *
       * <code>int64 core_count = 2;</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearCoreCount() {
        bitField0_ = (bitField0_ & ~0x00000002);
        coreCount_ = 0L;
        onChanged();
        return this;
      }

      @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.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorConfig)
    }

    // @@protoc_insertion_point(class_scope:google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorConfig)
    private static final com.google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorConfig
        DEFAULT_INSTANCE;

    static {
      DEFAULT_INSTANCE =
          new com.google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorConfig();
    }

    public static com.google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorConfig
        getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<SchedulerAcceleratorConfig> PARSER =
        new com.google.protobuf.AbstractParser<SchedulerAcceleratorConfig>() {
          @java.lang.Override
          public SchedulerAcceleratorConfig parsePartialFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            Builder builder = newBuilder();
            try {
              builder.mergeFrom(input, extensionRegistry);
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              throw e.setUnfinishedMessage(builder.buildPartial());
            } catch (com.google.protobuf.UninitializedMessageException e) {
              throw e.asInvalidProtocolBufferException()
                  .setUnfinishedMessage(builder.buildPartial());
            } catch (java.io.IOException e) {
              throw new com.google.protobuf.InvalidProtocolBufferException(e)
                  .setUnfinishedMessage(builder.buildPartial());
            }
            return builder.buildPartial();
          }
        };

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

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

    @java.lang.Override
    public com.google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorConfig
        getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }
  }

  public interface DataprocParametersOrBuilder
      extends
      // @@protoc_insertion_point(interface_extends:google.cloud.notebooks.v1.ExecutionTemplate.DataprocParameters)
      com.google.protobuf.MessageOrBuilder {

    /**
     *
     *
     * <pre>
     * URI for cluster used to run Dataproc execution.
     * Format: `projects/{PROJECT_ID}/regions/{REGION}/clusters/{CLUSTER_NAME}`
     * </pre>
     *
     * <code>string cluster = 1;</code>
     *
     * @return The cluster.
     */
    java.lang.String getCluster();
    /**
     *
     *
     * <pre>
     * URI for cluster used to run Dataproc execution.
     * Format: `projects/{PROJECT_ID}/regions/{REGION}/clusters/{CLUSTER_NAME}`
     * </pre>
     *
     * <code>string cluster = 1;</code>
     *
     * @return The bytes for cluster.
     */
    com.google.protobuf.ByteString getClusterBytes();
  }
  /**
   *
   *
   * <pre>
   * Parameters used in Dataproc JobType executions.
   * </pre>
   *
   * Protobuf type {@code google.cloud.notebooks.v1.ExecutionTemplate.DataprocParameters}
   */
  public static final class DataprocParameters extends com.google.protobuf.GeneratedMessageV3
      implements
      // @@protoc_insertion_point(message_implements:google.cloud.notebooks.v1.ExecutionTemplate.DataprocParameters)
      DataprocParametersOrBuilder {
    private static final long serialVersionUID = 0L;
    // Use DataprocParameters.newBuilder() to construct.
    private DataprocParameters(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }

    private DataprocParameters() {
      cluster_ = "";
    }

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

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

    public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
      return com.google.cloud.notebooks.v1.ExecutionProto
          .internal_static_google_cloud_notebooks_v1_ExecutionTemplate_DataprocParameters_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.cloud.notebooks.v1.ExecutionProto
          .internal_static_google_cloud_notebooks_v1_ExecutionTemplate_DataprocParameters_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.cloud.notebooks.v1.ExecutionTemplate.DataprocParameters.class,
              com.google.cloud.notebooks.v1.ExecutionTemplate.DataprocParameters.Builder.class);
    }

    public static final int CLUSTER_FIELD_NUMBER = 1;

    @SuppressWarnings("serial")
    private volatile java.lang.Object cluster_ = "";
    /**
     *
     *
     * <pre>
     * URI for cluster used to run Dataproc execution.
     * Format: `projects/{PROJECT_ID}/regions/{REGION}/clusters/{CLUSTER_NAME}`
     * </pre>
     *
     * <code>string cluster = 1;</code>
     *
     * @return The cluster.
     */
    @java.lang.Override
    public java.lang.String getCluster() {
      java.lang.Object ref = cluster_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        cluster_ = s;
        return s;
      }
    }
    /**
     *
     *
     * <pre>
     * URI for cluster used to run Dataproc execution.
     * Format: `projects/{PROJECT_ID}/regions/{REGION}/clusters/{CLUSTER_NAME}`
     * </pre>
     *
     * <code>string cluster = 1;</code>
     *
     * @return The bytes for cluster.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getClusterBytes() {
      java.lang.Object ref = cluster_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
        cluster_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    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 (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(cluster_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, cluster_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(cluster_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, cluster_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
        return true;
      }
      if (!(obj instanceof com.google.cloud.notebooks.v1.ExecutionTemplate.DataprocParameters)) {
        return super.equals(obj);
      }
      com.google.cloud.notebooks.v1.ExecutionTemplate.DataprocParameters other =
          (com.google.cloud.notebooks.v1.ExecutionTemplate.DataprocParameters) obj;

      if (!getCluster().equals(other.getCluster())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

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

    public static com.google.cloud.notebooks.v1.ExecutionTemplate.DataprocParameters parseFrom(
        java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.notebooks.v1.ExecutionTemplate.DataprocParameters parseFrom(
        java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.notebooks.v1.ExecutionTemplate.DataprocParameters parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.notebooks.v1.ExecutionTemplate.DataprocParameters parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.notebooks.v1.ExecutionTemplate.DataprocParameters parseFrom(
        byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.notebooks.v1.ExecutionTemplate.DataprocParameters parseFrom(
        byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.notebooks.v1.ExecutionTemplate.DataprocParameters parseFrom(
        java.io.InputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
    }

    public static com.google.cloud.notebooks.v1.ExecutionTemplate.DataprocParameters parseFrom(
        java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
          PARSER, input, extensionRegistry);
    }

    public static com.google.cloud.notebooks.v1.ExecutionTemplate.DataprocParameters
        parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
    }

    public static com.google.cloud.notebooks.v1.ExecutionTemplate.DataprocParameters
        parseDelimitedFrom(
            java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(
          PARSER, input, extensionRegistry);
    }

    public static com.google.cloud.notebooks.v1.ExecutionTemplate.DataprocParameters parseFrom(
        com.google.protobuf.CodedInputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
    }

    public static com.google.cloud.notebooks.v1.ExecutionTemplate.DataprocParameters parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
          PARSER, input, extensionRegistry);
    }

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

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

    public static Builder newBuilder(
        com.google.cloud.notebooks.v1.ExecutionTemplate.DataprocParameters 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>
     * Parameters used in Dataproc JobType executions.
     * </pre>
     *
     * Protobuf type {@code google.cloud.notebooks.v1.ExecutionTemplate.DataprocParameters}
     */
    public static final class Builder
        extends com.google.protobuf.GeneratedMessageV3.Builder<Builder>
        implements
        // @@protoc_insertion_point(builder_implements:google.cloud.notebooks.v1.ExecutionTemplate.DataprocParameters)
        com.google.cloud.notebooks.v1.ExecutionTemplate.DataprocParametersOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
        return com.google.cloud.notebooks.v1.ExecutionProto
            .internal_static_google_cloud_notebooks_v1_ExecutionTemplate_DataprocParameters_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.cloud.notebooks.v1.ExecutionProto
            .internal_static_google_cloud_notebooks_v1_ExecutionTemplate_DataprocParameters_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.cloud.notebooks.v1.ExecutionTemplate.DataprocParameters.class,
                com.google.cloud.notebooks.v1.ExecutionTemplate.DataprocParameters.Builder.class);
      }

      // Construct using
      // com.google.cloud.notebooks.v1.ExecutionTemplate.DataprocParameters.newBuilder()
      private Builder() {}

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

      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        cluster_ = "";
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
        return com.google.cloud.notebooks.v1.ExecutionProto
            .internal_static_google_cloud_notebooks_v1_ExecutionTemplate_DataprocParameters_descriptor;
      }

      @java.lang.Override
      public com.google.cloud.notebooks.v1.ExecutionTemplate.DataprocParameters
          getDefaultInstanceForType() {
        return com.google.cloud.notebooks.v1.ExecutionTemplate.DataprocParameters
            .getDefaultInstance();
      }

      @java.lang.Override
      public com.google.cloud.notebooks.v1.ExecutionTemplate.DataprocParameters build() {
        com.google.cloud.notebooks.v1.ExecutionTemplate.DataprocParameters result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.google.cloud.notebooks.v1.ExecutionTemplate.DataprocParameters buildPartial() {
        com.google.cloud.notebooks.v1.ExecutionTemplate.DataprocParameters result =
            new com.google.cloud.notebooks.v1.ExecutionTemplate.DataprocParameters(this);
        if (bitField0_ != 0) {
          buildPartial0(result);
        }
        onBuilt();
        return result;
      }

      private void buildPartial0(
          com.google.cloud.notebooks.v1.ExecutionTemplate.DataprocParameters result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.cluster_ = cluster_;
        }
      }

      @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.cloud.notebooks.v1.ExecutionTemplate.DataprocParameters) {
          return mergeFrom(
              (com.google.cloud.notebooks.v1.ExecutionTemplate.DataprocParameters) other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(
          com.google.cloud.notebooks.v1.ExecutionTemplate.DataprocParameters other) {
        if (other
            == com.google.cloud.notebooks.v1.ExecutionTemplate.DataprocParameters
                .getDefaultInstance()) return this;
        if (!other.getCluster().isEmpty()) {
          cluster_ = other.cluster_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        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 {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10:
                {
                  cluster_ = input.readStringRequireUtf8();
                  bitField0_ |= 0x00000001;
                  break;
                } // case 10
              default:
                {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }

      private int bitField0_;

      private java.lang.Object cluster_ = "";
      /**
       *
       *
       * <pre>
       * URI for cluster used to run Dataproc execution.
       * Format: `projects/{PROJECT_ID}/regions/{REGION}/clusters/{CLUSTER_NAME}`
       * </pre>
       *
       * <code>string cluster = 1;</code>
       *
       * @return The cluster.
       */
      public java.lang.String getCluster() {
        java.lang.Object ref = cluster_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          cluster_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       *
       *
       * <pre>
       * URI for cluster used to run Dataproc execution.
       * Format: `projects/{PROJECT_ID}/regions/{REGION}/clusters/{CLUSTER_NAME}`
       * </pre>
       *
       * <code>string cluster = 1;</code>
       *
       * @return The bytes for cluster.
       */
      public com.google.protobuf.ByteString getClusterBytes() {
        java.lang.Object ref = cluster_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
          cluster_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       *
       *
       * <pre>
       * URI for cluster used to run Dataproc execution.
       * Format: `projects/{PROJECT_ID}/regions/{REGION}/clusters/{CLUSTER_NAME}`
       * </pre>
       *
       * <code>string cluster = 1;</code>
       *
       * @param value The cluster to set.
       * @return This builder for chaining.
       */
      public Builder setCluster(java.lang.String value) {
        if (value == null) {
          throw new NullPointerException();
        }
        cluster_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * URI for cluster used to run Dataproc execution.
       * Format: `projects/{PROJECT_ID}/regions/{REGION}/clusters/{CLUSTER_NAME}`
       * </pre>
       *
       * <code>string cluster = 1;</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearCluster() {
        cluster_ = getDefaultInstance().getCluster();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * URI for cluster used to run Dataproc execution.
       * Format: `projects/{PROJECT_ID}/regions/{REGION}/clusters/{CLUSTER_NAME}`
       * </pre>
       *
       * <code>string cluster = 1;</code>
       *
       * @param value The bytes for cluster to set.
       * @return This builder for chaining.
       */
      public Builder setClusterBytes(com.google.protobuf.ByteString value) {
        if (value == null) {
          throw new NullPointerException();
        }
        checkByteStringIsUtf8(value);
        cluster_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      @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.cloud.notebooks.v1.ExecutionTemplate.DataprocParameters)
    }

    // @@protoc_insertion_point(class_scope:google.cloud.notebooks.v1.ExecutionTemplate.DataprocParameters)
    private static final com.google.cloud.notebooks.v1.ExecutionTemplate.DataprocParameters
        DEFAULT_INSTANCE;

    static {
      DEFAULT_INSTANCE = new com.google.cloud.notebooks.v1.ExecutionTemplate.DataprocParameters();
    }

    public static com.google.cloud.notebooks.v1.ExecutionTemplate.DataprocParameters
        getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<DataprocParameters> PARSER =
        new com.google.protobuf.AbstractParser<DataprocParameters>() {
          @java.lang.Override
          public DataprocParameters parsePartialFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            Builder builder = newBuilder();
            try {
              builder.mergeFrom(input, extensionRegistry);
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              throw e.setUnfinishedMessage(builder.buildPartial());
            } catch (com.google.protobuf.UninitializedMessageException e) {
              throw e.asInvalidProtocolBufferException()
                  .setUnfinishedMessage(builder.buildPartial());
            } catch (java.io.IOException e) {
              throw new com.google.protobuf.InvalidProtocolBufferException(e)
                  .setUnfinishedMessage(builder.buildPartial());
            }
            return builder.buildPartial();
          }
        };

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

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

    @java.lang.Override
    public com.google.cloud.notebooks.v1.ExecutionTemplate.DataprocParameters
        getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }
  }

  public interface VertexAIParametersOrBuilder
      extends
      // @@protoc_insertion_point(interface_extends:google.cloud.notebooks.v1.ExecutionTemplate.VertexAIParameters)
      com.google.protobuf.MessageOrBuilder {

    /**
     *
     *
     * <pre>
     * The full name of the Compute Engine
     * [network](https://cloud.google.com/compute/docs/networks-and-firewalls#networks)
     * to which the Job should be peered. For example,
     * `projects/12345/global/networks/myVPC`.
     * [Format](https://cloud.google.com/compute/docs/reference/rest/v1/networks/insert)
     * is of the form `projects/{project}/global/networks/{network}`.
     * Where `{project}` is a project number, as in `12345`, and `{network}` is
     * a network name.
     * Private services access must already be configured for the network. If
     * left unspecified, the job is not peered with any network.
     * </pre>
     *
     * <code>string network = 1;</code>
     *
     * @return The network.
     */
    java.lang.String getNetwork();
    /**
     *
     *
     * <pre>
     * The full name of the Compute Engine
     * [network](https://cloud.google.com/compute/docs/networks-and-firewalls#networks)
     * to which the Job should be peered. For example,
     * `projects/12345/global/networks/myVPC`.
     * [Format](https://cloud.google.com/compute/docs/reference/rest/v1/networks/insert)
     * is of the form `projects/{project}/global/networks/{network}`.
     * Where `{project}` is a project number, as in `12345`, and `{network}` is
     * a network name.
     * Private services access must already be configured for the network. If
     * left unspecified, the job is not peered with any network.
     * </pre>
     *
     * <code>string network = 1;</code>
     *
     * @return The bytes for network.
     */
    com.google.protobuf.ByteString getNetworkBytes();

    /**
     *
     *
     * <pre>
     * Environment variables.
     * At most 100 environment variables can be specified and unique.
     * Example: `GCP_BUCKET=gs://my-bucket/samples/`
     * </pre>
     *
     * <code>map&lt;string, string&gt; env = 2;</code>
     */
    int getEnvCount();
    /**
     *
     *
     * <pre>
     * Environment variables.
     * At most 100 environment variables can be specified and unique.
     * Example: `GCP_BUCKET=gs://my-bucket/samples/`
     * </pre>
     *
     * <code>map&lt;string, string&gt; env = 2;</code>
     */
    boolean containsEnv(java.lang.String key);
    /** Use {@link #getEnvMap()} instead. */
    @java.lang.Deprecated
    java.util.Map<java.lang.String, java.lang.String> getEnv();
    /**
     *
     *
     * <pre>
     * Environment variables.
     * At most 100 environment variables can be specified and unique.
     * Example: `GCP_BUCKET=gs://my-bucket/samples/`
     * </pre>
     *
     * <code>map&lt;string, string&gt; env = 2;</code>
     */
    java.util.Map<java.lang.String, java.lang.String> getEnvMap();
    /**
     *
     *
     * <pre>
     * Environment variables.
     * At most 100 environment variables can be specified and unique.
     * Example: `GCP_BUCKET=gs://my-bucket/samples/`
     * </pre>
     *
     * <code>map&lt;string, string&gt; env = 2;</code>
     */
    /* nullable */
    java.lang.String getEnvOrDefault(
        java.lang.String key,
        /* nullable */
        java.lang.String defaultValue);
    /**
     *
     *
     * <pre>
     * Environment variables.
     * At most 100 environment variables can be specified and unique.
     * Example: `GCP_BUCKET=gs://my-bucket/samples/`
     * </pre>
     *
     * <code>map&lt;string, string&gt; env = 2;</code>
     */
    java.lang.String getEnvOrThrow(java.lang.String key);
  }
  /**
   *
   *
   * <pre>
   * Parameters used in Vertex AI JobType executions.
   * </pre>
   *
   * Protobuf type {@code google.cloud.notebooks.v1.ExecutionTemplate.VertexAIParameters}
   */
  public static final class VertexAIParameters extends com.google.protobuf.GeneratedMessageV3
      implements
      // @@protoc_insertion_point(message_implements:google.cloud.notebooks.v1.ExecutionTemplate.VertexAIParameters)
      VertexAIParametersOrBuilder {
    private static final long serialVersionUID = 0L;
    // Use VertexAIParameters.newBuilder() to construct.
    private VertexAIParameters(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }

    private VertexAIParameters() {
      network_ = "";
    }

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

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

    public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
      return com.google.cloud.notebooks.v1.ExecutionProto
          .internal_static_google_cloud_notebooks_v1_ExecutionTemplate_VertexAIParameters_descriptor;
    }

    @SuppressWarnings({"rawtypes"})
    @java.lang.Override
    protected com.google.protobuf.MapField internalGetMapField(int number) {
      switch (number) {
        case 2:
          return internalGetEnv();
        default:
          throw new RuntimeException("Invalid map field number: " + number);
      }
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.cloud.notebooks.v1.ExecutionProto
          .internal_static_google_cloud_notebooks_v1_ExecutionTemplate_VertexAIParameters_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.cloud.notebooks.v1.ExecutionTemplate.VertexAIParameters.class,
              com.google.cloud.notebooks.v1.ExecutionTemplate.VertexAIParameters.Builder.class);
    }

    public static final int NETWORK_FIELD_NUMBER = 1;

    @SuppressWarnings("serial")
    private volatile java.lang.Object network_ = "";
    /**
     *
     *
     * <pre>
     * The full name of the Compute Engine
     * [network](https://cloud.google.com/compute/docs/networks-and-firewalls#networks)
     * to which the Job should be peered. For example,
     * `projects/12345/global/networks/myVPC`.
     * [Format](https://cloud.google.com/compute/docs/reference/rest/v1/networks/insert)
     * is of the form `projects/{project}/global/networks/{network}`.
     * Where `{project}` is a project number, as in `12345`, and `{network}` is
     * a network name.
     * Private services access must already be configured for the network. If
     * left unspecified, the job is not peered with any network.
     * </pre>
     *
     * <code>string network = 1;</code>
     *
     * @return The network.
     */
    @java.lang.Override
    public java.lang.String getNetwork() {
      java.lang.Object ref = network_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        network_ = s;
        return s;
      }
    }
    /**
     *
     *
     * <pre>
     * The full name of the Compute Engine
     * [network](https://cloud.google.com/compute/docs/networks-and-firewalls#networks)
     * to which the Job should be peered. For example,
     * `projects/12345/global/networks/myVPC`.
     * [Format](https://cloud.google.com/compute/docs/reference/rest/v1/networks/insert)
     * is of the form `projects/{project}/global/networks/{network}`.
     * Where `{project}` is a project number, as in `12345`, and `{network}` is
     * a network name.
     * Private services access must already be configured for the network. If
     * left unspecified, the job is not peered with any network.
     * </pre>
     *
     * <code>string network = 1;</code>
     *
     * @return The bytes for network.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getNetworkBytes() {
      java.lang.Object ref = network_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
        network_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int ENV_FIELD_NUMBER = 2;

    private static final class EnvDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<java.lang.String, java.lang.String> defaultEntry =
          com.google.protobuf.MapEntry.<java.lang.String, java.lang.String>newDefaultInstance(
              com.google.cloud.notebooks.v1.ExecutionProto
                  .internal_static_google_cloud_notebooks_v1_ExecutionTemplate_VertexAIParameters_EnvEntry_descriptor,
              com.google.protobuf.WireFormat.FieldType.STRING,
              "",
              com.google.protobuf.WireFormat.FieldType.STRING,
              "");
    }

    @SuppressWarnings("serial")
    private com.google.protobuf.MapField<java.lang.String, java.lang.String> env_;

    private com.google.protobuf.MapField<java.lang.String, java.lang.String> internalGetEnv() {
      if (env_ == null) {
        return com.google.protobuf.MapField.emptyMapField(EnvDefaultEntryHolder.defaultEntry);
      }
      return env_;
    }

    public int getEnvCount() {
      return internalGetEnv().getMap().size();
    }
    /**
     *
     *
     * <pre>
     * Environment variables.
     * At most 100 environment variables can be specified and unique.
     * Example: `GCP_BUCKET=gs://my-bucket/samples/`
     * </pre>
     *
     * <code>map&lt;string, string&gt; env = 2;</code>
     */
    @java.lang.Override
    public boolean containsEnv(java.lang.String key) {
      if (key == null) {
        throw new NullPointerException("map key");
      }
      return internalGetEnv().getMap().containsKey(key);
    }
    /** Use {@link #getEnvMap()} instead. */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map<java.lang.String, java.lang.String> getEnv() {
      return getEnvMap();
    }
    /**
     *
     *
     * <pre>
     * Environment variables.
     * At most 100 environment variables can be specified and unique.
     * Example: `GCP_BUCKET=gs://my-bucket/samples/`
     * </pre>
     *
     * <code>map&lt;string, string&gt; env = 2;</code>
     */
    @java.lang.Override
    public java.util.Map<java.lang.String, java.lang.String> getEnvMap() {
      return internalGetEnv().getMap();
    }
    /**
     *
     *
     * <pre>
     * Environment variables.
     * At most 100 environment variables can be specified and unique.
     * Example: `GCP_BUCKET=gs://my-bucket/samples/`
     * </pre>
     *
     * <code>map&lt;string, string&gt; env = 2;</code>
     */
    @java.lang.Override
    public /* nullable */ java.lang.String getEnvOrDefault(
        java.lang.String key,
        /* nullable */
        java.lang.String defaultValue) {
      if (key == null) {
        throw new NullPointerException("map key");
      }
      java.util.Map<java.lang.String, java.lang.String> map = internalGetEnv().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     *
     *
     * <pre>
     * Environment variables.
     * At most 100 environment variables can be specified and unique.
     * Example: `GCP_BUCKET=gs://my-bucket/samples/`
     * </pre>
     *
     * <code>map&lt;string, string&gt; env = 2;</code>
     */
    @java.lang.Override
    public java.lang.String getEnvOrThrow(java.lang.String key) {
      if (key == null) {
        throw new NullPointerException("map key");
      }
      java.util.Map<java.lang.String, java.lang.String> map = internalGetEnv().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    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 (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(network_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, network_);
      }
      com.google.protobuf.GeneratedMessageV3.serializeStringMapTo(
          output, internalGetEnv(), EnvDefaultEntryHolder.defaultEntry, 2);
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(network_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, network_);
      }
      for (java.util.Map.Entry<java.lang.String, java.lang.String> entry :
          internalGetEnv().getMap().entrySet()) {
        com.google.protobuf.MapEntry<java.lang.String, java.lang.String> env__ =
            EnvDefaultEntryHolder.defaultEntry
                .newBuilderForType()
                .setKey(entry.getKey())
                .setValue(entry.getValue())
                .build();
        size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, env__);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
        return true;
      }
      if (!(obj instanceof com.google.cloud.notebooks.v1.ExecutionTemplate.VertexAIParameters)) {
        return super.equals(obj);
      }
      com.google.cloud.notebooks.v1.ExecutionTemplate.VertexAIParameters other =
          (com.google.cloud.notebooks.v1.ExecutionTemplate.VertexAIParameters) obj;

      if (!getNetwork().equals(other.getNetwork())) return false;
      if (!internalGetEnv().equals(other.internalGetEnv())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + NETWORK_FIELD_NUMBER;
      hash = (53 * hash) + getNetwork().hashCode();
      if (!internalGetEnv().getMap().isEmpty()) {
        hash = (37 * hash) + ENV_FIELD_NUMBER;
        hash = (53 * hash) + internalGetEnv().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.cloud.notebooks.v1.ExecutionTemplate.VertexAIParameters parseFrom(
        java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.notebooks.v1.ExecutionTemplate.VertexAIParameters parseFrom(
        java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.notebooks.v1.ExecutionTemplate.VertexAIParameters parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.notebooks.v1.ExecutionTemplate.VertexAIParameters parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.notebooks.v1.ExecutionTemplate.VertexAIParameters parseFrom(
        byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }

    public static com.google.cloud.notebooks.v1.ExecutionTemplate.VertexAIParameters parseFrom(
        byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }

    public static com.google.cloud.notebooks.v1.ExecutionTemplate.VertexAIParameters parseFrom(
        java.io.InputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
    }

    public static com.google.cloud.notebooks.v1.ExecutionTemplate.VertexAIParameters parseFrom(
        java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
          PARSER, input, extensionRegistry);
    }

    public static com.google.cloud.notebooks.v1.ExecutionTemplate.VertexAIParameters
        parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
    }

    public static com.google.cloud.notebooks.v1.ExecutionTemplate.VertexAIParameters
        parseDelimitedFrom(
            java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(
          PARSER, input, extensionRegistry);
    }

    public static com.google.cloud.notebooks.v1.ExecutionTemplate.VertexAIParameters parseFrom(
        com.google.protobuf.CodedInputStream input) throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
    }

    public static com.google.cloud.notebooks.v1.ExecutionTemplate.VertexAIParameters parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
          PARSER, input, extensionRegistry);
    }

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

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

    public static Builder newBuilder(
        com.google.cloud.notebooks.v1.ExecutionTemplate.VertexAIParameters 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>
     * Parameters used in Vertex AI JobType executions.
     * </pre>
     *
     * Protobuf type {@code google.cloud.notebooks.v1.ExecutionTemplate.VertexAIParameters}
     */
    public static final class Builder
        extends com.google.protobuf.GeneratedMessageV3.Builder<Builder>
        implements
        // @@protoc_insertion_point(builder_implements:google.cloud.notebooks.v1.ExecutionTemplate.VertexAIParameters)
        com.google.cloud.notebooks.v1.ExecutionTemplate.VertexAIParametersOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
        return com.google.cloud.notebooks.v1.ExecutionProto
            .internal_static_google_cloud_notebooks_v1_ExecutionTemplate_VertexAIParameters_descriptor;
      }

      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapField internalGetMapField(int number) {
        switch (number) {
          case 2:
            return internalGetEnv();
          default:
            throw new RuntimeException("Invalid map field number: " + number);
        }
      }

      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapField internalGetMutableMapField(int number) {
        switch (number) {
          case 2:
            return internalGetMutableEnv();
          default:
            throw new RuntimeException("Invalid map field number: " + number);
        }
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.cloud.notebooks.v1.ExecutionProto
            .internal_static_google_cloud_notebooks_v1_ExecutionTemplate_VertexAIParameters_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.cloud.notebooks.v1.ExecutionTemplate.VertexAIParameters.class,
                com.google.cloud.notebooks.v1.ExecutionTemplate.VertexAIParameters.Builder.class);
      }

      // Construct using
      // com.google.cloud.notebooks.v1.ExecutionTemplate.VertexAIParameters.newBuilder()
      private Builder() {}

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

      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        network_ = "";
        internalGetMutableEnv().clear();
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
        return com.google.cloud.notebooks.v1.ExecutionProto
            .internal_static_google_cloud_notebooks_v1_ExecutionTemplate_VertexAIParameters_descriptor;
      }

      @java.lang.Override
      public com.google.cloud.notebooks.v1.ExecutionTemplate.VertexAIParameters
          getDefaultInstanceForType() {
        return com.google.cloud.notebooks.v1.ExecutionTemplate.VertexAIParameters
            .getDefaultInstance();
      }

      @java.lang.Override
      public com.google.cloud.notebooks.v1.ExecutionTemplate.VertexAIParameters build() {
        com.google.cloud.notebooks.v1.ExecutionTemplate.VertexAIParameters result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.google.cloud.notebooks.v1.ExecutionTemplate.VertexAIParameters buildPartial() {
        com.google.cloud.notebooks.v1.ExecutionTemplate.VertexAIParameters result =
            new com.google.cloud.notebooks.v1.ExecutionTemplate.VertexAIParameters(this);
        if (bitField0_ != 0) {
          buildPartial0(result);
        }
        onBuilt();
        return result;
      }

      private void buildPartial0(
          com.google.cloud.notebooks.v1.ExecutionTemplate.VertexAIParameters result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.network_ = network_;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.env_ = internalGetEnv();
          result.env_.makeImmutable();
        }
      }

      @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.cloud.notebooks.v1.ExecutionTemplate.VertexAIParameters) {
          return mergeFrom(
              (com.google.cloud.notebooks.v1.ExecutionTemplate.VertexAIParameters) other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(
          com.google.cloud.notebooks.v1.ExecutionTemplate.VertexAIParameters other) {
        if (other
            == com.google.cloud.notebooks.v1.ExecutionTemplate.VertexAIParameters
                .getDefaultInstance()) return this;
        if (!other.getNetwork().isEmpty()) {
          network_ = other.network_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        internalGetMutableEnv().mergeFrom(other.internalGetEnv());
        bitField0_ |= 0x00000002;
        this.mergeUnknownFields(other.getUnknownFields());
        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 {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10:
                {
                  network_ = input.readStringRequireUtf8();
                  bitField0_ |= 0x00000001;
                  break;
                } // case 10
              case 18:
                {
                  com.google.protobuf.MapEntry<java.lang.String, java.lang.String> env__ =
                      input.readMessage(
                          EnvDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
                  internalGetMutableEnv().getMutableMap().put(env__.getKey(), env__.getValue());
                  bitField0_ |= 0x00000002;
                  break;
                } // case 18
              default:
                {
                  if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                    done = true; // was an endgroup tag
                  }
                  break;
                } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }

      private int bitField0_;

      private java.lang.Object network_ = "";
      /**
       *
       *
       * <pre>
       * The full name of the Compute Engine
       * [network](https://cloud.google.com/compute/docs/networks-and-firewalls#networks)
       * to which the Job should be peered. For example,
       * `projects/12345/global/networks/myVPC`.
       * [Format](https://cloud.google.com/compute/docs/reference/rest/v1/networks/insert)
       * is of the form `projects/{project}/global/networks/{network}`.
       * Where `{project}` is a project number, as in `12345`, and `{network}` is
       * a network name.
       * Private services access must already be configured for the network. If
       * left unspecified, the job is not peered with any network.
       * </pre>
       *
       * <code>string network = 1;</code>
       *
       * @return The network.
       */
      public java.lang.String getNetwork() {
        java.lang.Object ref = network_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          network_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       *
       *
       * <pre>
       * The full name of the Compute Engine
       * [network](https://cloud.google.com/compute/docs/networks-and-firewalls#networks)
       * to which the Job should be peered. For example,
       * `projects/12345/global/networks/myVPC`.
       * [Format](https://cloud.google.com/compute/docs/reference/rest/v1/networks/insert)
       * is of the form `projects/{project}/global/networks/{network}`.
       * Where `{project}` is a project number, as in `12345`, and `{network}` is
       * a network name.
       * Private services access must already be configured for the network. If
       * left unspecified, the job is not peered with any network.
       * </pre>
       *
       * <code>string network = 1;</code>
       *
       * @return The bytes for network.
       */
      public com.google.protobuf.ByteString getNetworkBytes() {
        java.lang.Object ref = network_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b =
              com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
          network_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       *
       *
       * <pre>
       * The full name of the Compute Engine
       * [network](https://cloud.google.com/compute/docs/networks-and-firewalls#networks)
       * to which the Job should be peered. For example,
       * `projects/12345/global/networks/myVPC`.
       * [Format](https://cloud.google.com/compute/docs/reference/rest/v1/networks/insert)
       * is of the form `projects/{project}/global/networks/{network}`.
       * Where `{project}` is a project number, as in `12345`, and `{network}` is
       * a network name.
       * Private services access must already be configured for the network. If
       * left unspecified, the job is not peered with any network.
       * </pre>
       *
       * <code>string network = 1;</code>
       *
       * @param value The network to set.
       * @return This builder for chaining.
       */
      public Builder setNetwork(java.lang.String value) {
        if (value == null) {
          throw new NullPointerException();
        }
        network_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * The full name of the Compute Engine
       * [network](https://cloud.google.com/compute/docs/networks-and-firewalls#networks)
       * to which the Job should be peered. For example,
       * `projects/12345/global/networks/myVPC`.
       * [Format](https://cloud.google.com/compute/docs/reference/rest/v1/networks/insert)
       * is of the form `projects/{project}/global/networks/{network}`.
       * Where `{project}` is a project number, as in `12345`, and `{network}` is
       * a network name.
       * Private services access must already be configured for the network. If
       * left unspecified, the job is not peered with any network.
       * </pre>
       *
       * <code>string network = 1;</code>
       *
       * @return This builder for chaining.
       */
      public Builder clearNetwork() {
        network_ = getDefaultInstance().getNetwork();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       *
       *
       * <pre>
       * The full name of the Compute Engine
       * [network](https://cloud.google.com/compute/docs/networks-and-firewalls#networks)
       * to which the Job should be peered. For example,
       * `projects/12345/global/networks/myVPC`.
       * [Format](https://cloud.google.com/compute/docs/reference/rest/v1/networks/insert)
       * is of the form `projects/{project}/global/networks/{network}`.
       * Where `{project}` is a project number, as in `12345`, and `{network}` is
       * a network name.
       * Private services access must already be configured for the network. If
       * left unspecified, the job is not peered with any network.
       * </pre>
       *
       * <code>string network = 1;</code>
       *
       * @param value The bytes for network to set.
       * @return This builder for chaining.
       */
      public Builder setNetworkBytes(com.google.protobuf.ByteString value) {
        if (value == null) {
          throw new NullPointerException();
        }
        checkByteStringIsUtf8(value);
        network_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private com.google.protobuf.MapField<java.lang.String, java.lang.String> env_;

      private com.google.protobuf.MapField<java.lang.String, java.lang.String> internalGetEnv() {
        if (env_ == null) {
          return com.google.protobuf.MapField.emptyMapField(EnvDefaultEntryHolder.defaultEntry);
        }
        return env_;
      }

      private com.google.protobuf.MapField<java.lang.String, java.lang.String>
          internalGetMutableEnv() {
        if (env_ == null) {
          env_ = com.google.protobuf.MapField.newMapField(EnvDefaultEntryHolder.defaultEntry);
        }
        if (!env_.isMutable()) {
          env_ = env_.copy();
        }
        bitField0_ |= 0x00000002;
        onChanged();
        return env_;
      }

      public int getEnvCount() {
        return internalGetEnv().getMap().size();
      }
      /**
       *
       *
       * <pre>
       * Environment variables.
       * At most 100 environment variables can be specified and unique.
       * Example: `GCP_BUCKET=gs://my-bucket/samples/`
       * </pre>
       *
       * <code>map&lt;string, string&gt; env = 2;</code>
       */
      @java.lang.Override
      public boolean containsEnv(java.lang.String key) {
        if (key == null) {
          throw new NullPointerException("map key");
        }
        return internalGetEnv().getMap().containsKey(key);
      }
      /** Use {@link #getEnvMap()} instead. */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, java.lang.String> getEnv() {
        return getEnvMap();
      }
      /**
       *
       *
       * <pre>
       * Environment variables.
       * At most 100 environment variables can be specified and unique.
       * Example: `GCP_BUCKET=gs://my-bucket/samples/`
       * </pre>
       *
       * <code>map&lt;string, string&gt; env = 2;</code>
       */
      @java.lang.Override
      public java.util.Map<java.lang.String, java.lang.String> getEnvMap() {
        return internalGetEnv().getMap();
      }
      /**
       *
       *
       * <pre>
       * Environment variables.
       * At most 100 environment variables can be specified and unique.
       * Example: `GCP_BUCKET=gs://my-bucket/samples/`
       * </pre>
       *
       * <code>map&lt;string, string&gt; env = 2;</code>
       */
      @java.lang.Override
      public /* nullable */ java.lang.String getEnvOrDefault(
          java.lang.String key,
          /* nullable */
          java.lang.String defaultValue) {
        if (key == null) {
          throw new NullPointerException("map key");
        }
        java.util.Map<java.lang.String, java.lang.String> map = internalGetEnv().getMap();
        return map.containsKey(key) ? map.get(key) : defaultValue;
      }
      /**
       *
       *
       * <pre>
       * Environment variables.
       * At most 100 environment variables can be specified and unique.
       * Example: `GCP_BUCKET=gs://my-bucket/samples/`
       * </pre>
       *
       * <code>map&lt;string, string&gt; env = 2;</code>
       */
      @java.lang.Override
      public java.lang.String getEnvOrThrow(java.lang.String key) {
        if (key == null) {
          throw new NullPointerException("map key");
        }
        java.util.Map<java.lang.String, java.lang.String> map = internalGetEnv().getMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return map.get(key);
      }

      public Builder clearEnv() {
        bitField0_ = (bitField0_ & ~0x00000002);
        internalGetMutableEnv().getMutableMap().clear();
        return this;
      }
      /**
       *
       *
       * <pre>
       * Environment variables.
       * At most 100 environment variables can be specified and unique.
       * Example: `GCP_BUCKET=gs://my-bucket/samples/`
       * </pre>
       *
       * <code>map&lt;string, string&gt; env = 2;</code>
       */
      public Builder removeEnv(java.lang.String key) {
        if (key == null) {
          throw new NullPointerException("map key");
        }
        internalGetMutableEnv().getMutableMap().remove(key);
        return this;
      }
      /** Use alternate mutation accessors instead. */
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, java.lang.String> getMutableEnv() {
        bitField0_ |= 0x00000002;
        return internalGetMutableEnv().getMutableMap();
      }
      /**
       *
       *
       * <pre>
       * Environment variables.
       * At most 100 environment variables can be specified and unique.
       * Example: `GCP_BUCKET=gs://my-bucket/samples/`
       * </pre>
       *
       * <code>map&lt;string, string&gt; env = 2;</code>
       */
      public Builder putEnv(java.lang.String key, java.lang.String value) {
        if (key == null) {
          throw new NullPointerException("map key");
        }
        if (value == null) {
          throw new NullPointerException("map value");
        }
        internalGetMutableEnv().getMutableMap().put(key, value);
        bitField0_ |= 0x00000002;
        return this;
      }
      /**
       *
       *
       * <pre>
       * Environment variables.
       * At most 100 environment variables can be specified and unique.
       * Example: `GCP_BUCKET=gs://my-bucket/samples/`
       * </pre>
       *
       * <code>map&lt;string, string&gt; env = 2;</code>
       */
      public Builder putAllEnv(java.util.Map<java.lang.String, java.lang.String> values) {
        internalGetMutableEnv().getMutableMap().putAll(values);
        bitField0_ |= 0x00000002;
        return this;
      }

      @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.cloud.notebooks.v1.ExecutionTemplate.VertexAIParameters)
    }

    // @@protoc_insertion_point(class_scope:google.cloud.notebooks.v1.ExecutionTemplate.VertexAIParameters)
    private static final com.google.cloud.notebooks.v1.ExecutionTemplate.VertexAIParameters
        DEFAULT_INSTANCE;

    static {
      DEFAULT_INSTANCE = new com.google.cloud.notebooks.v1.ExecutionTemplate.VertexAIParameters();
    }

    public static com.google.cloud.notebooks.v1.ExecutionTemplate.VertexAIParameters
        getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<VertexAIParameters> PARSER =
        new com.google.protobuf.AbstractParser<VertexAIParameters>() {
          @java.lang.Override
          public VertexAIParameters parsePartialFrom(
              com.google.protobuf.CodedInputStream input,
              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
              throws com.google.protobuf.InvalidProtocolBufferException {
            Builder builder = newBuilder();
            try {
              builder.mergeFrom(input, extensionRegistry);
            } catch (com.google.protobuf.InvalidProtocolBufferException e) {
              throw e.setUnfinishedMessage(builder.buildPartial());
            } catch (com.google.protobuf.UninitializedMessageException e) {
              throw e.asInvalidProtocolBufferException()
                  .setUnfinishedMessage(builder.buildPartial());
            } catch (java.io.IOException e) {
              throw new com.google.protobuf.InvalidProtocolBufferException(e)
                  .setUnfinishedMessage(builder.buildPartial());
            }
            return builder.buildPartial();
          }
        };

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

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

    @java.lang.Override
    public com.google.cloud.notebooks.v1.ExecutionTemplate.VertexAIParameters
        getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }
  }

  private int jobParametersCase_ = 0;
  private java.lang.Object jobParameters_;

  public enum JobParametersCase
      implements
          com.google.protobuf.Internal.EnumLite,
          com.google.protobuf.AbstractMessage.InternalOneOfEnum {
    DATAPROC_PARAMETERS(12),
    VERTEX_AI_PARAMETERS(13),
    JOBPARAMETERS_NOT_SET(0);
    private final int value;

    private JobParametersCase(int value) {
      this.value = value;
    }
    /**
     * @param value The number of the enum to look for.
     * @return The enum associated with the given number.
     * @deprecated Use {@link #forNumber(int)} instead.
     */
    @java.lang.Deprecated
    public static JobParametersCase valueOf(int value) {
      return forNumber(value);
    }

    public static JobParametersCase forNumber(int value) {
      switch (value) {
        case 12:
          return DATAPROC_PARAMETERS;
        case 13:
          return VERTEX_AI_PARAMETERS;
        case 0:
          return JOBPARAMETERS_NOT_SET;
        default:
          return null;
      }
    }

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

  public JobParametersCase getJobParametersCase() {
    return JobParametersCase.forNumber(jobParametersCase_);
  }

  public static final int SCALE_TIER_FIELD_NUMBER = 1;
  private int scaleTier_ = 0;
  /**
   *
   *
   * <pre>
   * Required. Scale tier of the hardware used for notebook execution.
   * DEPRECATED Will be discontinued. As right now only CUSTOM is supported.
   * </pre>
   *
   * <code>
   * .google.cloud.notebooks.v1.ExecutionTemplate.ScaleTier scale_tier = 1 [deprecated = true, (.google.api.field_behavior) = REQUIRED];
   * </code>
   *
   * @deprecated google.cloud.notebooks.v1.ExecutionTemplate.scale_tier is deprecated. See
   *     google/cloud/notebooks/v1/execution.proto;l=151
   * @return The enum numeric value on the wire for scaleTier.
   */
  @java.lang.Override
  @java.lang.Deprecated
  public int getScaleTierValue() {
    return scaleTier_;
  }
  /**
   *
   *
   * <pre>
   * Required. Scale tier of the hardware used for notebook execution.
   * DEPRECATED Will be discontinued. As right now only CUSTOM is supported.
   * </pre>
   *
   * <code>
   * .google.cloud.notebooks.v1.ExecutionTemplate.ScaleTier scale_tier = 1 [deprecated = true, (.google.api.field_behavior) = REQUIRED];
   * </code>
   *
   * @deprecated google.cloud.notebooks.v1.ExecutionTemplate.scale_tier is deprecated. See
   *     google/cloud/notebooks/v1/execution.proto;l=151
   * @return The scaleTier.
   */
  @java.lang.Override
  @java.lang.Deprecated
  public com.google.cloud.notebooks.v1.ExecutionTemplate.ScaleTier getScaleTier() {
    com.google.cloud.notebooks.v1.ExecutionTemplate.ScaleTier result =
        com.google.cloud.notebooks.v1.ExecutionTemplate.ScaleTier.forNumber(scaleTier_);
    return result == null
        ? com.google.cloud.notebooks.v1.ExecutionTemplate.ScaleTier.UNRECOGNIZED
        : result;
  }

  public static final int MASTER_TYPE_FIELD_NUMBER = 2;

  @SuppressWarnings("serial")
  private volatile java.lang.Object masterType_ = "";
  /**
   *
   *
   * <pre>
   * Specifies the type of virtual machine to use for your training
   * job's master worker. You must specify this field when `scaleTier` is set to
   * `CUSTOM`.
   * You can use certain Compute Engine machine types directly in this field.
   * The following types are supported:
   * - `n1-standard-4`
   * - `n1-standard-8`
   * - `n1-standard-16`
   * - `n1-standard-32`
   * - `n1-standard-64`
   * - `n1-standard-96`
   * - `n1-highmem-2`
   * - `n1-highmem-4`
   * - `n1-highmem-8`
   * - `n1-highmem-16`
   * - `n1-highmem-32`
   * - `n1-highmem-64`
   * - `n1-highmem-96`
   * - `n1-highcpu-16`
   * - `n1-highcpu-32`
   * - `n1-highcpu-64`
   * - `n1-highcpu-96`
   * Alternatively, you can use the following legacy machine types:
   * - `standard`
   * - `large_model`
   * - `complex_model_s`
   * - `complex_model_m`
   * - `complex_model_l`
   * - `standard_gpu`
   * - `complex_model_m_gpu`
   * - `complex_model_l_gpu`
   * - `standard_p100`
   * - `complex_model_m_p100`
   * - `standard_v100`
   * - `large_model_v100`
   * - `complex_model_m_v100`
   * - `complex_model_l_v100`
   * Finally, if you want to use a TPU for training, specify `cloud_tpu` in this
   * field. Learn more about the [special configuration options for training
   * with
   * TPU](https://cloud.google.com/ai-platform/training/docs/using-tpus#configuring_a_custom_tpu_machine).
   * </pre>
   *
   * <code>string master_type = 2;</code>
   *
   * @return The masterType.
   */
  @java.lang.Override
  public java.lang.String getMasterType() {
    java.lang.Object ref = masterType_;
    if (ref instanceof java.lang.String) {
      return (java.lang.String) ref;
    } else {
      com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
      java.lang.String s = bs.toStringUtf8();
      masterType_ = s;
      return s;
    }
  }
  /**
   *
   *
   * <pre>
   * Specifies the type of virtual machine to use for your training
   * job's master worker. You must specify this field when `scaleTier` is set to
   * `CUSTOM`.
   * You can use certain Compute Engine machine types directly in this field.
   * The following types are supported:
   * - `n1-standard-4`
   * - `n1-standard-8`
   * - `n1-standard-16`
   * - `n1-standard-32`
   * - `n1-standard-64`
   * - `n1-standard-96`
   * - `n1-highmem-2`
   * - `n1-highmem-4`
   * - `n1-highmem-8`
   * - `n1-highmem-16`
   * - `n1-highmem-32`
   * - `n1-highmem-64`
   * - `n1-highmem-96`
   * - `n1-highcpu-16`
   * - `n1-highcpu-32`
   * - `n1-highcpu-64`
   * - `n1-highcpu-96`
   * Alternatively, you can use the following legacy machine types:
   * - `standard`
   * - `large_model`
   * - `complex_model_s`
   * - `complex_model_m`
   * - `complex_model_l`
   * - `standard_gpu`
   * - `complex_model_m_gpu`
   * - `complex_model_l_gpu`
   * - `standard_p100`
   * - `complex_model_m_p100`
   * - `standard_v100`
   * - `large_model_v100`
   * - `complex_model_m_v100`
   * - `complex_model_l_v100`
   * Finally, if you want to use a TPU for training, specify `cloud_tpu` in this
   * field. Learn more about the [special configuration options for training
   * with
   * TPU](https://cloud.google.com/ai-platform/training/docs/using-tpus#configuring_a_custom_tpu_machine).
   * </pre>
   *
   * <code>string master_type = 2;</code>
   *
   * @return The bytes for masterType.
   */
  @java.lang.Override
  public com.google.protobuf.ByteString getMasterTypeBytes() {
    java.lang.Object ref = masterType_;
    if (ref instanceof java.lang.String) {
      com.google.protobuf.ByteString b =
          com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
      masterType_ = b;
      return b;
    } else {
      return (com.google.protobuf.ByteString) ref;
    }
  }

  public static final int ACCELERATOR_CONFIG_FIELD_NUMBER = 3;
  private com.google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorConfig
      acceleratorConfig_;
  /**
   *
   *
   * <pre>
   * Configuration (count and accelerator type) for hardware running notebook
   * execution.
   * </pre>
   *
   * <code>
   * .google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorConfig accelerator_config = 3;
   * </code>
   *
   * @return Whether the acceleratorConfig field is set.
   */
  @java.lang.Override
  public boolean hasAcceleratorConfig() {
    return acceleratorConfig_ != null;
  }
  /**
   *
   *
   * <pre>
   * Configuration (count and accelerator type) for hardware running notebook
   * execution.
   * </pre>
   *
   * <code>
   * .google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorConfig accelerator_config = 3;
   * </code>
   *
   * @return The acceleratorConfig.
   */
  @java.lang.Override
  public com.google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorConfig
      getAcceleratorConfig() {
    return acceleratorConfig_ == null
        ? com.google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorConfig
            .getDefaultInstance()
        : acceleratorConfig_;
  }
  /**
   *
   *
   * <pre>
   * Configuration (count and accelerator type) for hardware running notebook
   * execution.
   * </pre>
   *
   * <code>
   * .google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorConfig accelerator_config = 3;
   * </code>
   */
  @java.lang.Override
  public com.google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorConfigOrBuilder
      getAcceleratorConfigOrBuilder() {
    return acceleratorConfig_ == null
        ? com.google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorConfig
            .getDefaultInstance()
        : acceleratorConfig_;
  }

  public static final int LABELS_FIELD_NUMBER = 4;

  private static final class LabelsDefaultEntryHolder {
    static final com.google.protobuf.MapEntry<java.lang.String, java.lang.String> defaultEntry =
        com.google.protobuf.MapEntry.<java.lang.String, java.lang.String>newDefaultInstance(
            com.google.cloud.notebooks.v1.ExecutionProto
                .internal_static_google_cloud_notebooks_v1_ExecutionTemplate_LabelsEntry_descriptor,
            com.google.protobuf.WireFormat.FieldType.STRING,
            "",
            com.google.protobuf.WireFormat.FieldType.STRING,
            "");
  }

  @SuppressWarnings("serial")
  private com.google.protobuf.MapField<java.lang.String, java.lang.String> labels_;

  private com.google.protobuf.MapField<java.lang.String, java.lang.String> internalGetLabels() {
    if (labels_ == null) {
      return com.google.protobuf.MapField.emptyMapField(LabelsDefaultEntryHolder.defaultEntry);
    }
    return labels_;
  }

  public int getLabelsCount() {
    return internalGetLabels().getMap().size();
  }
  /**
   *
   *
   * <pre>
   * Labels for execution.
   * If execution is scheduled, a field included will be 'nbs-scheduled'.
   * Otherwise, it is an immediate execution, and an included field will be
   * 'nbs-immediate'. Use fields to efficiently index between various types of
   * executions.
   * </pre>
   *
   * <code>map&lt;string, string&gt; labels = 4;</code>
   */
  @java.lang.Override
  public boolean containsLabels(java.lang.String key) {
    if (key == null) {
      throw new NullPointerException("map key");
    }
    return internalGetLabels().getMap().containsKey(key);
  }
  /** Use {@link #getLabelsMap()} instead. */
  @java.lang.Override
  @java.lang.Deprecated
  public java.util.Map<java.lang.String, java.lang.String> getLabels() {
    return getLabelsMap();
  }
  /**
   *
   *
   * <pre>
   * Labels for execution.
   * If execution is scheduled, a field included will be 'nbs-scheduled'.
   * Otherwise, it is an immediate execution, and an included field will be
   * 'nbs-immediate'. Use fields to efficiently index between various types of
   * executions.
   * </pre>
   *
   * <code>map&lt;string, string&gt; labels = 4;</code>
   */
  @java.lang.Override
  public java.util.Map<java.lang.String, java.lang.String> getLabelsMap() {
    return internalGetLabels().getMap();
  }
  /**
   *
   *
   * <pre>
   * Labels for execution.
   * If execution is scheduled, a field included will be 'nbs-scheduled'.
   * Otherwise, it is an immediate execution, and an included field will be
   * 'nbs-immediate'. Use fields to efficiently index between various types of
   * executions.
   * </pre>
   *
   * <code>map&lt;string, string&gt; labels = 4;</code>
   */
  @java.lang.Override
  public /* nullable */ java.lang.String getLabelsOrDefault(
      java.lang.String key,
      /* nullable */
      java.lang.String defaultValue) {
    if (key == null) {
      throw new NullPointerException("map key");
    }
    java.util.Map<java.lang.String, java.lang.String> map = internalGetLabels().getMap();
    return map.containsKey(key) ? map.get(key) : defaultValue;
  }
  /**
   *
   *
   * <pre>
   * Labels for execution.
   * If execution is scheduled, a field included will be 'nbs-scheduled'.
   * Otherwise, it is an immediate execution, and an included field will be
   * 'nbs-immediate'. Use fields to efficiently index between various types of
   * executions.
   * </pre>
   *
   * <code>map&lt;string, string&gt; labels = 4;</code>
   */
  @java.lang.Override
  public java.lang.String getLabelsOrThrow(java.lang.String key) {
    if (key == null) {
      throw new NullPointerException("map key");
    }
    java.util.Map<java.lang.String, java.lang.String> map = internalGetLabels().getMap();
    if (!map.containsKey(key)) {
      throw new java.lang.IllegalArgumentException();
    }
    return map.get(key);
  }

  public static final int INPUT_NOTEBOOK_FILE_FIELD_NUMBER = 5;

  @SuppressWarnings("serial")
  private volatile java.lang.Object inputNotebookFile_ = "";
  /**
   *
   *
   * <pre>
   * Path to the notebook file to execute.
   * Must be in a Google Cloud Storage bucket.
   * Format: `gs://{bucket_name}/{folder}/{notebook_file_name}`
   * Ex: `gs://notebook_user/scheduled_notebooks/sentiment_notebook.ipynb`
   * </pre>
   *
   * <code>string input_notebook_file = 5;</code>
   *
   * @return The inputNotebookFile.
   */
  @java.lang.Override
  public java.lang.String getInputNotebookFile() {
    java.lang.Object ref = inputNotebookFile_;
    if (ref instanceof java.lang.String) {
      return (java.lang.String) ref;
    } else {
      com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
      java.lang.String s = bs.toStringUtf8();
      inputNotebookFile_ = s;
      return s;
    }
  }
  /**
   *
   *
   * <pre>
   * Path to the notebook file to execute.
   * Must be in a Google Cloud Storage bucket.
   * Format: `gs://{bucket_name}/{folder}/{notebook_file_name}`
   * Ex: `gs://notebook_user/scheduled_notebooks/sentiment_notebook.ipynb`
   * </pre>
   *
   * <code>string input_notebook_file = 5;</code>
   *
   * @return The bytes for inputNotebookFile.
   */
  @java.lang.Override
  public com.google.protobuf.ByteString getInputNotebookFileBytes() {
    java.lang.Object ref = inputNotebookFile_;
    if (ref instanceof java.lang.String) {
      com.google.protobuf.ByteString b =
          com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
      inputNotebookFile_ = b;
      return b;
    } else {
      return (com.google.protobuf.ByteString) ref;
    }
  }

  public static final int CONTAINER_IMAGE_URI_FIELD_NUMBER = 6;

  @SuppressWarnings("serial")
  private volatile java.lang.Object containerImageUri_ = "";
  /**
   *
   *
   * <pre>
   * Container Image URI to a DLVM
   * Example: 'gcr.io/deeplearning-platform-release/base-cu100'
   * More examples can be found at:
   * https://cloud.google.com/ai-platform/deep-learning-containers/docs/choosing-container
   * </pre>
   *
   * <code>string container_image_uri = 6;</code>
   *
   * @return The containerImageUri.
   */
  @java.lang.Override
  public java.lang.String getContainerImageUri() {
    java.lang.Object ref = containerImageUri_;
    if (ref instanceof java.lang.String) {
      return (java.lang.String) ref;
    } else {
      com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
      java.lang.String s = bs.toStringUtf8();
      containerImageUri_ = s;
      return s;
    }
  }
  /**
   *
   *
   * <pre>
   * Container Image URI to a DLVM
   * Example: 'gcr.io/deeplearning-platform-release/base-cu100'
   * More examples can be found at:
   * https://cloud.google.com/ai-platform/deep-learning-containers/docs/choosing-container
   * </pre>
   *
   * <code>string container_image_uri = 6;</code>
   *
   * @return The bytes for containerImageUri.
   */
  @java.lang.Override
  public com.google.protobuf.ByteString getContainerImageUriBytes() {
    java.lang.Object ref = containerImageUri_;
    if (ref instanceof java.lang.String) {
      com.google.protobuf.ByteString b =
          com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
      containerImageUri_ = b;
      return b;
    } else {
      return (com.google.protobuf.ByteString) ref;
    }
  }

  public static final int OUTPUT_NOTEBOOK_FOLDER_FIELD_NUMBER = 7;

  @SuppressWarnings("serial")
  private volatile java.lang.Object outputNotebookFolder_ = "";
  /**
   *
   *
   * <pre>
   * Path to the notebook folder to write to.
   * Must be in a Google Cloud Storage bucket path.
   * Format: `gs://{bucket_name}/{folder}`
   * Ex: `gs://notebook_user/scheduled_notebooks`
   * </pre>
   *
   * <code>string output_notebook_folder = 7;</code>
   *
   * @return The outputNotebookFolder.
   */
  @java.lang.Override
  public java.lang.String getOutputNotebookFolder() {
    java.lang.Object ref = outputNotebookFolder_;
    if (ref instanceof java.lang.String) {
      return (java.lang.String) ref;
    } else {
      com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
      java.lang.String s = bs.toStringUtf8();
      outputNotebookFolder_ = s;
      return s;
    }
  }
  /**
   *
   *
   * <pre>
   * Path to the notebook folder to write to.
   * Must be in a Google Cloud Storage bucket path.
   * Format: `gs://{bucket_name}/{folder}`
   * Ex: `gs://notebook_user/scheduled_notebooks`
   * </pre>
   *
   * <code>string output_notebook_folder = 7;</code>
   *
   * @return The bytes for outputNotebookFolder.
   */
  @java.lang.Override
  public com.google.protobuf.ByteString getOutputNotebookFolderBytes() {
    java.lang.Object ref = outputNotebookFolder_;
    if (ref instanceof java.lang.String) {
      com.google.protobuf.ByteString b =
          com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
      outputNotebookFolder_ = b;
      return b;
    } else {
      return (com.google.protobuf.ByteString) ref;
    }
  }

  public static final int PARAMS_YAML_FILE_FIELD_NUMBER = 8;

  @SuppressWarnings("serial")
  private volatile java.lang.Object paramsYamlFile_ = "";
  /**
   *
   *
   * <pre>
   * Parameters to be overridden in the notebook during execution.
   * Ref https://papermill.readthedocs.io/en/latest/usage-parameterize.html on
   * how to specifying parameters in the input notebook and pass them here
   * in an YAML file.
   * Ex: `gs://notebook_user/scheduled_notebooks/sentiment_notebook_params.yaml`
   * </pre>
   *
   * <code>string params_yaml_file = 8;</code>
   *
   * @return The paramsYamlFile.
   */
  @java.lang.Override
  public java.lang.String getParamsYamlFile() {
    java.lang.Object ref = paramsYamlFile_;
    if (ref instanceof java.lang.String) {
      return (java.lang.String) ref;
    } else {
      com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
      java.lang.String s = bs.toStringUtf8();
      paramsYamlFile_ = s;
      return s;
    }
  }
  /**
   *
   *
   * <pre>
   * Parameters to be overridden in the notebook during execution.
   * Ref https://papermill.readthedocs.io/en/latest/usage-parameterize.html on
   * how to specifying parameters in the input notebook and pass them here
   * in an YAML file.
   * Ex: `gs://notebook_user/scheduled_notebooks/sentiment_notebook_params.yaml`
   * </pre>
   *
   * <code>string params_yaml_file = 8;</code>
   *
   * @return The bytes for paramsYamlFile.
   */
  @java.lang.Override
  public com.google.protobuf.ByteString getParamsYamlFileBytes() {
    java.lang.Object ref = paramsYamlFile_;
    if (ref instanceof java.lang.String) {
      com.google.protobuf.ByteString b =
          com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
      paramsYamlFile_ = b;
      return b;
    } else {
      return (com.google.protobuf.ByteString) ref;
    }
  }

  public static final int PARAMETERS_FIELD_NUMBER = 9;

  @SuppressWarnings("serial")
  private volatile java.lang.Object parameters_ = "";
  /**
   *
   *
   * <pre>
   * Parameters used within the 'input_notebook_file' notebook.
   * </pre>
   *
   * <code>string parameters = 9;</code>
   *
   * @return The parameters.
   */
  @java.lang.Override
  public java.lang.String getParameters() {
    java.lang.Object ref = parameters_;
    if (ref instanceof java.lang.String) {
      return (java.lang.String) ref;
    } else {
      com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
      java.lang.String s = bs.toStringUtf8();
      parameters_ = s;
      return s;
    }
  }
  /**
   *
   *
   * <pre>
   * Parameters used within the 'input_notebook_file' notebook.
   * </pre>
   *
   * <code>string parameters = 9;</code>
   *
   * @return The bytes for parameters.
   */
  @java.lang.Override
  public com.google.protobuf.ByteString getParametersBytes() {
    java.lang.Object ref = parameters_;
    if (ref instanceof java.lang.String) {
      com.google.protobuf.ByteString b =
          com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
      parameters_ = b;
      return b;
    } else {
      return (com.google.protobuf.ByteString) ref;
    }
  }

  public static final int SERVICE_ACCOUNT_FIELD_NUMBER = 10;

  @SuppressWarnings("serial")
  private volatile java.lang.Object serviceAccount_ = "";
  /**
   *
   *
   * <pre>
   * The email address of a service account to use when running the execution.
   * You must have the `iam.serviceAccounts.actAs` permission for the specified
   * service account.
   * </pre>
   *
   * <code>string service_account = 10;</code>
   *
   * @return The serviceAccount.
   */
  @java.lang.Override
  public java.lang.String getServiceAccount() {
    java.lang.Object ref = serviceAccount_;
    if (ref instanceof java.lang.String) {
      return (java.lang.String) ref;
    } else {
      com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
      java.lang.String s = bs.toStringUtf8();
      serviceAccount_ = s;
      return s;
    }
  }
  /**
   *
   *
   * <pre>
   * The email address of a service account to use when running the execution.
   * You must have the `iam.serviceAccounts.actAs` permission for the specified
   * service account.
   * </pre>
   *
   * <code>string service_account = 10;</code>
   *
   * @return The bytes for serviceAccount.
   */
  @java.lang.Override
  public com.google.protobuf.ByteString getServiceAccountBytes() {
    java.lang.Object ref = serviceAccount_;
    if (ref instanceof java.lang.String) {
      com.google.protobuf.ByteString b =
          com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
      serviceAccount_ = b;
      return b;
    } else {
      return (com.google.protobuf.ByteString) ref;
    }
  }

  public static final int JOB_TYPE_FIELD_NUMBER = 11;
  private int jobType_ = 0;
  /**
   *
   *
   * <pre>
   * The type of Job to be used on this execution.
   * </pre>
   *
   * <code>.google.cloud.notebooks.v1.ExecutionTemplate.JobType job_type = 11;</code>
   *
   * @return The enum numeric value on the wire for jobType.
   */
  @java.lang.Override
  public int getJobTypeValue() {
    return jobType_;
  }
  /**
   *
   *
   * <pre>
   * The type of Job to be used on this execution.
   * </pre>
   *
   * <code>.google.cloud.notebooks.v1.ExecutionTemplate.JobType job_type = 11;</code>
   *
   * @return The jobType.
   */
  @java.lang.Override
  public com.google.cloud.notebooks.v1.ExecutionTemplate.JobType getJobType() {
    com.google.cloud.notebooks.v1.ExecutionTemplate.JobType result =
        com.google.cloud.notebooks.v1.ExecutionTemplate.JobType.forNumber(jobType_);
    return result == null
        ? com.google.cloud.notebooks.v1.ExecutionTemplate.JobType.UNRECOGNIZED
        : result;
  }

  public static final int DATAPROC_PARAMETERS_FIELD_NUMBER = 12;
  /**
   *
   *
   * <pre>
   * Parameters used in Dataproc JobType executions.
   * </pre>
   *
   * <code>.google.cloud.notebooks.v1.ExecutionTemplate.DataprocParameters dataproc_parameters = 12;
   * </code>
   *
   * @return Whether the dataprocParameters field is set.
   */
  @java.lang.Override
  public boolean hasDataprocParameters() {
    return jobParametersCase_ == 12;
  }
  /**
   *
   *
   * <pre>
   * Parameters used in Dataproc JobType executions.
   * </pre>
   *
   * <code>.google.cloud.notebooks.v1.ExecutionTemplate.DataprocParameters dataproc_parameters = 12;
   * </code>
   *
   * @return The dataprocParameters.
   */
  @java.lang.Override
  public com.google.cloud.notebooks.v1.ExecutionTemplate.DataprocParameters
      getDataprocParameters() {
    if (jobParametersCase_ == 12) {
      return (com.google.cloud.notebooks.v1.ExecutionTemplate.DataprocParameters) jobParameters_;
    }
    return com.google.cloud.notebooks.v1.ExecutionTemplate.DataprocParameters.getDefaultInstance();
  }
  /**
   *
   *
   * <pre>
   * Parameters used in Dataproc JobType executions.
   * </pre>
   *
   * <code>.google.cloud.notebooks.v1.ExecutionTemplate.DataprocParameters dataproc_parameters = 12;
   * </code>
   */
  @java.lang.Override
  public com.google.cloud.notebooks.v1.ExecutionTemplate.DataprocParametersOrBuilder
      getDataprocParametersOrBuilder() {
    if (jobParametersCase_ == 12) {
      return (com.google.cloud.notebooks.v1.ExecutionTemplate.DataprocParameters) jobParameters_;
    }
    return com.google.cloud.notebooks.v1.ExecutionTemplate.DataprocParameters.getDefaultInstance();
  }

  public static final int VERTEX_AI_PARAMETERS_FIELD_NUMBER = 13;
  /**
   *
   *
   * <pre>
   * Parameters used in Vertex AI JobType executions.
   * </pre>
   *
   * <code>
   * .google.cloud.notebooks.v1.ExecutionTemplate.VertexAIParameters vertex_ai_parameters = 13;
   * </code>
   *
   * @return Whether the vertexAiParameters field is set.
   */
  @java.lang.Override
  public boolean hasVertexAiParameters() {
    return jobParametersCase_ == 13;
  }
  /**
   *
   *
   * <pre>
   * Parameters used in Vertex AI JobType executions.
   * </pre>
   *
   * <code>
   * .google.cloud.notebooks.v1.ExecutionTemplate.VertexAIParameters vertex_ai_parameters = 13;
   * </code>
   *
   * @return The vertexAiParameters.
   */
  @java.lang.Override
  public com.google.cloud.notebooks.v1.ExecutionTemplate.VertexAIParameters
      getVertexAiParameters() {
    if (jobParametersCase_ == 13) {
      return (com.google.cloud.notebooks.v1.ExecutionTemplate.VertexAIParameters) jobParameters_;
    }
    return com.google.cloud.notebooks.v1.ExecutionTemplate.VertexAIParameters.getDefaultInstance();
  }
  /**
   *
   *
   * <pre>
   * Parameters used in Vertex AI JobType executions.
   * </pre>
   *
   * <code>
   * .google.cloud.notebooks.v1.ExecutionTemplate.VertexAIParameters vertex_ai_parameters = 13;
   * </code>
   */
  @java.lang.Override
  public com.google.cloud.notebooks.v1.ExecutionTemplate.VertexAIParametersOrBuilder
      getVertexAiParametersOrBuilder() {
    if (jobParametersCase_ == 13) {
      return (com.google.cloud.notebooks.v1.ExecutionTemplate.VertexAIParameters) jobParameters_;
    }
    return com.google.cloud.notebooks.v1.ExecutionTemplate.VertexAIParameters.getDefaultInstance();
  }

  public static final int KERNEL_SPEC_FIELD_NUMBER = 14;

  @SuppressWarnings("serial")
  private volatile java.lang.Object kernelSpec_ = "";
  /**
   *
   *
   * <pre>
   * Name of the kernel spec to use. This must be specified if the
   * kernel spec name on the execution target does not match the name in the
   * input notebook file.
   * </pre>
   *
   * <code>string kernel_spec = 14;</code>
   *
   * @return The kernelSpec.
   */
  @java.lang.Override
  public java.lang.String getKernelSpec() {
    java.lang.Object ref = kernelSpec_;
    if (ref instanceof java.lang.String) {
      return (java.lang.String) ref;
    } else {
      com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
      java.lang.String s = bs.toStringUtf8();
      kernelSpec_ = s;
      return s;
    }
  }
  /**
   *
   *
   * <pre>
   * Name of the kernel spec to use. This must be specified if the
   * kernel spec name on the execution target does not match the name in the
   * input notebook file.
   * </pre>
   *
   * <code>string kernel_spec = 14;</code>
   *
   * @return The bytes for kernelSpec.
   */
  @java.lang.Override
  public com.google.protobuf.ByteString getKernelSpecBytes() {
    java.lang.Object ref = kernelSpec_;
    if (ref instanceof java.lang.String) {
      com.google.protobuf.ByteString b =
          com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
      kernelSpec_ = b;
      return b;
    } else {
      return (com.google.protobuf.ByteString) ref;
    }
  }

  public static final int TENSORBOARD_FIELD_NUMBER = 15;

  @SuppressWarnings("serial")
  private volatile java.lang.Object tensorboard_ = "";
  /**
   *
   *
   * <pre>
   * The name of a Vertex AI [Tensorboard] resource to which this execution
   * will upload Tensorboard logs.
   * Format:
   * `projects/{project}/locations/{location}/tensorboards/{tensorboard}`
   * </pre>
   *
   * <code>string tensorboard = 15 [(.google.api.resource_reference) = { ... }</code>
   *
   * @return The tensorboard.
   */
  @java.lang.Override
  public java.lang.String getTensorboard() {
    java.lang.Object ref = tensorboard_;
    if (ref instanceof java.lang.String) {
      return (java.lang.String) ref;
    } else {
      com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
      java.lang.String s = bs.toStringUtf8();
      tensorboard_ = s;
      return s;
    }
  }
  /**
   *
   *
   * <pre>
   * The name of a Vertex AI [Tensorboard] resource to which this execution
   * will upload Tensorboard logs.
   * Format:
   * `projects/{project}/locations/{location}/tensorboards/{tensorboard}`
   * </pre>
   *
   * <code>string tensorboard = 15 [(.google.api.resource_reference) = { ... }</code>
   *
   * @return The bytes for tensorboard.
   */
  @java.lang.Override
  public com.google.protobuf.ByteString getTensorboardBytes() {
    java.lang.Object ref = tensorboard_;
    if (ref instanceof java.lang.String) {
      com.google.protobuf.ByteString b =
          com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
      tensorboard_ = b;
      return b;
    } else {
      return (com.google.protobuf.ByteString) ref;
    }
  }

  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 (scaleTier_
        != com.google.cloud.notebooks.v1.ExecutionTemplate.ScaleTier.SCALE_TIER_UNSPECIFIED
            .getNumber()) {
      output.writeEnum(1, scaleTier_);
    }
    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(masterType_)) {
      com.google.protobuf.GeneratedMessageV3.writeString(output, 2, masterType_);
    }
    if (acceleratorConfig_ != null) {
      output.writeMessage(3, getAcceleratorConfig());
    }
    com.google.protobuf.GeneratedMessageV3.serializeStringMapTo(
        output, internalGetLabels(), LabelsDefaultEntryHolder.defaultEntry, 4);
    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(inputNotebookFile_)) {
      com.google.protobuf.GeneratedMessageV3.writeString(output, 5, inputNotebookFile_);
    }
    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(containerImageUri_)) {
      com.google.protobuf.GeneratedMessageV3.writeString(output, 6, containerImageUri_);
    }
    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(outputNotebookFolder_)) {
      com.google.protobuf.GeneratedMessageV3.writeString(output, 7, outputNotebookFolder_);
    }
    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(paramsYamlFile_)) {
      com.google.protobuf.GeneratedMessageV3.writeString(output, 8, paramsYamlFile_);
    }
    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(parameters_)) {
      com.google.protobuf.GeneratedMessageV3.writeString(output, 9, parameters_);
    }
    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(serviceAccount_)) {
      com.google.protobuf.GeneratedMessageV3.writeString(output, 10, serviceAccount_);
    }
    if (jobType_
        != com.google.cloud.notebooks.v1.ExecutionTemplate.JobType.JOB_TYPE_UNSPECIFIED
            .getNumber()) {
      output.writeEnum(11, jobType_);
    }
    if (jobParametersCase_ == 12) {
      output.writeMessage(
          12, (com.google.cloud.notebooks.v1.ExecutionTemplate.DataprocParameters) jobParameters_);
    }
    if (jobParametersCase_ == 13) {
      output.writeMessage(
          13, (com.google.cloud.notebooks.v1.ExecutionTemplate.VertexAIParameters) jobParameters_);
    }
    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(kernelSpec_)) {
      com.google.protobuf.GeneratedMessageV3.writeString(output, 14, kernelSpec_);
    }
    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(tensorboard_)) {
      com.google.protobuf.GeneratedMessageV3.writeString(output, 15, tensorboard_);
    }
    getUnknownFields().writeTo(output);
  }

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

    size = 0;
    if (scaleTier_
        != com.google.cloud.notebooks.v1.ExecutionTemplate.ScaleTier.SCALE_TIER_UNSPECIFIED
            .getNumber()) {
      size += com.google.protobuf.CodedOutputStream.computeEnumSize(1, scaleTier_);
    }
    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(masterType_)) {
      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, masterType_);
    }
    if (acceleratorConfig_ != null) {
      size += com.google.protobuf.CodedOutputStream.computeMessageSize(3, getAcceleratorConfig());
    }
    for (java.util.Map.Entry<java.lang.String, java.lang.String> entry :
        internalGetLabels().getMap().entrySet()) {
      com.google.protobuf.MapEntry<java.lang.String, java.lang.String> labels__ =
          LabelsDefaultEntryHolder.defaultEntry
              .newBuilderForType()
              .setKey(entry.getKey())
              .setValue(entry.getValue())
              .build();
      size += com.google.protobuf.CodedOutputStream.computeMessageSize(4, labels__);
    }
    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(inputNotebookFile_)) {
      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, inputNotebookFile_);
    }
    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(containerImageUri_)) {
      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(6, containerImageUri_);
    }
    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(outputNotebookFolder_)) {
      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(7, outputNotebookFolder_);
    }
    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(paramsYamlFile_)) {
      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(8, paramsYamlFile_);
    }
    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(parameters_)) {
      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(9, parameters_);
    }
    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(serviceAccount_)) {
      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(10, serviceAccount_);
    }
    if (jobType_
        != com.google.cloud.notebooks.v1.ExecutionTemplate.JobType.JOB_TYPE_UNSPECIFIED
            .getNumber()) {
      size += com.google.protobuf.CodedOutputStream.computeEnumSize(11, jobType_);
    }
    if (jobParametersCase_ == 12) {
      size +=
          com.google.protobuf.CodedOutputStream.computeMessageSize(
              12,
              (com.google.cloud.notebooks.v1.ExecutionTemplate.DataprocParameters) jobParameters_);
    }
    if (jobParametersCase_ == 13) {
      size +=
          com.google.protobuf.CodedOutputStream.computeMessageSize(
              13,
              (com.google.cloud.notebooks.v1.ExecutionTemplate.VertexAIParameters) jobParameters_);
    }
    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(kernelSpec_)) {
      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(14, kernelSpec_);
    }
    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(tensorboard_)) {
      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(15, tensorboard_);
    }
    size += getUnknownFields().getSerializedSize();
    memoizedSize = size;
    return size;
  }

  @java.lang.Override
  public boolean equals(final java.lang.Object obj) {
    if (obj == this) {
      return true;
    }
    if (!(obj instanceof com.google.cloud.notebooks.v1.ExecutionTemplate)) {
      return super.equals(obj);
    }
    com.google.cloud.notebooks.v1.ExecutionTemplate other =
        (com.google.cloud.notebooks.v1.ExecutionTemplate) obj;

    if (scaleTier_ != other.scaleTier_) return false;
    if (!getMasterType().equals(other.getMasterType())) return false;
    if (hasAcceleratorConfig() != other.hasAcceleratorConfig()) return false;
    if (hasAcceleratorConfig()) {
      if (!getAcceleratorConfig().equals(other.getAcceleratorConfig())) return false;
    }
    if (!internalGetLabels().equals(other.internalGetLabels())) return false;
    if (!getInputNotebookFile().equals(other.getInputNotebookFile())) return false;
    if (!getContainerImageUri().equals(other.getContainerImageUri())) return false;
    if (!getOutputNotebookFolder().equals(other.getOutputNotebookFolder())) return false;
    if (!getParamsYamlFile().equals(other.getParamsYamlFile())) return false;
    if (!getParameters().equals(other.getParameters())) return false;
    if (!getServiceAccount().equals(other.getServiceAccount())) return false;
    if (jobType_ != other.jobType_) return false;
    if (!getKernelSpec().equals(other.getKernelSpec())) return false;
    if (!getTensorboard().equals(other.getTensorboard())) return false;
    if (!getJobParametersCase().equals(other.getJobParametersCase())) return false;
    switch (jobParametersCase_) {
      case 12:
        if (!getDataprocParameters().equals(other.getDataprocParameters())) return false;
        break;
      case 13:
        if (!getVertexAiParameters().equals(other.getVertexAiParameters())) return false;
        break;
      case 0:
      default:
    }
    if (!getUnknownFields().equals(other.getUnknownFields())) return false;
    return true;
  }

  @java.lang.Override
  public int hashCode() {
    if (memoizedHashCode != 0) {
      return memoizedHashCode;
    }
    int hash = 41;
    hash = (19 * hash) + getDescriptor().hashCode();
    hash = (37 * hash) + SCALE_TIER_FIELD_NUMBER;
    hash = (53 * hash) + scaleTier_;
    hash = (37 * hash) + MASTER_TYPE_FIELD_NUMBER;
    hash = (53 * hash) + getMasterType().hashCode();
    if (hasAcceleratorConfig()) {
      hash = (37 * hash) + ACCELERATOR_CONFIG_FIELD_NUMBER;
      hash = (53 * hash) + getAcceleratorConfig().hashCode();
    }
    if (!internalGetLabels().getMap().isEmpty()) {
      hash = (37 * hash) + LABELS_FIELD_NUMBER;
      hash = (53 * hash) + internalGetLabels().hashCode();
    }
    hash = (37 * hash) + INPUT_NOTEBOOK_FILE_FIELD_NUMBER;
    hash = (53 * hash) + getInputNotebookFile().hashCode();
    hash = (37 * hash) + CONTAINER_IMAGE_URI_FIELD_NUMBER;
    hash = (53 * hash) + getContainerImageUri().hashCode();
    hash = (37 * hash) + OUTPUT_NOTEBOOK_FOLDER_FIELD_NUMBER;
    hash = (53 * hash) + getOutputNotebookFolder().hashCode();
    hash = (37 * hash) + PARAMS_YAML_FILE_FIELD_NUMBER;
    hash = (53 * hash) + getParamsYamlFile().hashCode();
    hash = (37 * hash) + PARAMETERS_FIELD_NUMBER;
    hash = (53 * hash) + getParameters().hashCode();
    hash = (37 * hash) + SERVICE_ACCOUNT_FIELD_NUMBER;
    hash = (53 * hash) + getServiceAccount().hashCode();
    hash = (37 * hash) + JOB_TYPE_FIELD_NUMBER;
    hash = (53 * hash) + jobType_;
    hash = (37 * hash) + KERNEL_SPEC_FIELD_NUMBER;
    hash = (53 * hash) + getKernelSpec().hashCode();
    hash = (37 * hash) + TENSORBOARD_FIELD_NUMBER;
    hash = (53 * hash) + getTensorboard().hashCode();
    switch (jobParametersCase_) {
      case 12:
        hash = (37 * hash) + DATAPROC_PARAMETERS_FIELD_NUMBER;
        hash = (53 * hash) + getDataprocParameters().hashCode();
        break;
      case 13:
        hash = (37 * hash) + VERTEX_AI_PARAMETERS_FIELD_NUMBER;
        hash = (53 * hash) + getVertexAiParameters().hashCode();
        break;
      case 0:
      default:
    }
    hash = (29 * hash) + getUnknownFields().hashCode();
    memoizedHashCode = hash;
    return hash;
  }

  public static com.google.cloud.notebooks.v1.ExecutionTemplate parseFrom(java.nio.ByteBuffer data)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data);
  }

  public static com.google.cloud.notebooks.v1.ExecutionTemplate parseFrom(
      java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data, extensionRegistry);
  }

  public static com.google.cloud.notebooks.v1.ExecutionTemplate parseFrom(
      com.google.protobuf.ByteString data)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data);
  }

  public static com.google.cloud.notebooks.v1.ExecutionTemplate parseFrom(
      com.google.protobuf.ByteString data,
      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data, extensionRegistry);
  }

  public static com.google.cloud.notebooks.v1.ExecutionTemplate parseFrom(byte[] data)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data);
  }

  public static com.google.cloud.notebooks.v1.ExecutionTemplate parseFrom(
      byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data, extensionRegistry);
  }

  public static com.google.cloud.notebooks.v1.ExecutionTemplate parseFrom(java.io.InputStream input)
      throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
  }

  public static com.google.cloud.notebooks.v1.ExecutionTemplate parseFrom(
      java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
        PARSER, input, extensionRegistry);
  }

  public static com.google.cloud.notebooks.v1.ExecutionTemplate parseDelimitedFrom(
      java.io.InputStream input) throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
  }

  public static com.google.cloud.notebooks.v1.ExecutionTemplate parseDelimitedFrom(
      java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(
        PARSER, input, extensionRegistry);
  }

  public static com.google.cloud.notebooks.v1.ExecutionTemplate parseFrom(
      com.google.protobuf.CodedInputStream input) throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
  }

  public static com.google.cloud.notebooks.v1.ExecutionTemplate parseFrom(
      com.google.protobuf.CodedInputStream input,
      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
        PARSER, input, extensionRegistry);
  }

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

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

  public static Builder newBuilder(com.google.cloud.notebooks.v1.ExecutionTemplate prototype) {
    return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
  }

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

  @java.lang.Override
  protected Builder newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
    Builder builder = new Builder(parent);
    return builder;
  }
  /**
   *
   *
   * <pre>
   * The description a notebook execution workload.
   * </pre>
   *
   * Protobuf type {@code google.cloud.notebooks.v1.ExecutionTemplate}
   */
  public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder>
      implements
      // @@protoc_insertion_point(builder_implements:google.cloud.notebooks.v1.ExecutionTemplate)
      com.google.cloud.notebooks.v1.ExecutionTemplateOrBuilder {
    public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
      return com.google.cloud.notebooks.v1.ExecutionProto
          .internal_static_google_cloud_notebooks_v1_ExecutionTemplate_descriptor;
    }

    @SuppressWarnings({"rawtypes"})
    protected com.google.protobuf.MapField internalGetMapField(int number) {
      switch (number) {
        case 4:
          return internalGetLabels();
        default:
          throw new RuntimeException("Invalid map field number: " + number);
      }
    }

    @SuppressWarnings({"rawtypes"})
    protected com.google.protobuf.MapField internalGetMutableMapField(int number) {
      switch (number) {
        case 4:
          return internalGetMutableLabels();
        default:
          throw new RuntimeException("Invalid map field number: " + number);
      }
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.cloud.notebooks.v1.ExecutionProto
          .internal_static_google_cloud_notebooks_v1_ExecutionTemplate_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.cloud.notebooks.v1.ExecutionTemplate.class,
              com.google.cloud.notebooks.v1.ExecutionTemplate.Builder.class);
    }

    // Construct using com.google.cloud.notebooks.v1.ExecutionTemplate.newBuilder()
    private Builder() {}

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

    @java.lang.Override
    public Builder clear() {
      super.clear();
      bitField0_ = 0;
      scaleTier_ = 0;
      masterType_ = "";
      acceleratorConfig_ = null;
      if (acceleratorConfigBuilder_ != null) {
        acceleratorConfigBuilder_.dispose();
        acceleratorConfigBuilder_ = null;
      }
      internalGetMutableLabels().clear();
      inputNotebookFile_ = "";
      containerImageUri_ = "";
      outputNotebookFolder_ = "";
      paramsYamlFile_ = "";
      parameters_ = "";
      serviceAccount_ = "";
      jobType_ = 0;
      if (dataprocParametersBuilder_ != null) {
        dataprocParametersBuilder_.clear();
      }
      if (vertexAiParametersBuilder_ != null) {
        vertexAiParametersBuilder_.clear();
      }
      kernelSpec_ = "";
      tensorboard_ = "";
      jobParametersCase_ = 0;
      jobParameters_ = null;
      return this;
    }

    @java.lang.Override
    public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
      return com.google.cloud.notebooks.v1.ExecutionProto
          .internal_static_google_cloud_notebooks_v1_ExecutionTemplate_descriptor;
    }

    @java.lang.Override
    public com.google.cloud.notebooks.v1.ExecutionTemplate getDefaultInstanceForType() {
      return com.google.cloud.notebooks.v1.ExecutionTemplate.getDefaultInstance();
    }

    @java.lang.Override
    public com.google.cloud.notebooks.v1.ExecutionTemplate build() {
      com.google.cloud.notebooks.v1.ExecutionTemplate result = buildPartial();
      if (!result.isInitialized()) {
        throw newUninitializedMessageException(result);
      }
      return result;
    }

    @java.lang.Override
    public com.google.cloud.notebooks.v1.ExecutionTemplate buildPartial() {
      com.google.cloud.notebooks.v1.ExecutionTemplate result =
          new com.google.cloud.notebooks.v1.ExecutionTemplate(this);
      if (bitField0_ != 0) {
        buildPartial0(result);
      }
      buildPartialOneofs(result);
      onBuilt();
      return result;
    }

    private void buildPartial0(com.google.cloud.notebooks.v1.ExecutionTemplate result) {
      int from_bitField0_ = bitField0_;
      if (((from_bitField0_ & 0x00000001) != 0)) {
        result.scaleTier_ = scaleTier_;
      }
      if (((from_bitField0_ & 0x00000002) != 0)) {
        result.masterType_ = masterType_;
      }
      if (((from_bitField0_ & 0x00000004) != 0)) {
        result.acceleratorConfig_ =
            acceleratorConfigBuilder_ == null
                ? acceleratorConfig_
                : acceleratorConfigBuilder_.build();
      }
      if (((from_bitField0_ & 0x00000008) != 0)) {
        result.labels_ = internalGetLabels();
        result.labels_.makeImmutable();
      }
      if (((from_bitField0_ & 0x00000010) != 0)) {
        result.inputNotebookFile_ = inputNotebookFile_;
      }
      if (((from_bitField0_ & 0x00000020) != 0)) {
        result.containerImageUri_ = containerImageUri_;
      }
      if (((from_bitField0_ & 0x00000040) != 0)) {
        result.outputNotebookFolder_ = outputNotebookFolder_;
      }
      if (((from_bitField0_ & 0x00000080) != 0)) {
        result.paramsYamlFile_ = paramsYamlFile_;
      }
      if (((from_bitField0_ & 0x00000100) != 0)) {
        result.parameters_ = parameters_;
      }
      if (((from_bitField0_ & 0x00000200) != 0)) {
        result.serviceAccount_ = serviceAccount_;
      }
      if (((from_bitField0_ & 0x00000400) != 0)) {
        result.jobType_ = jobType_;
      }
      if (((from_bitField0_ & 0x00002000) != 0)) {
        result.kernelSpec_ = kernelSpec_;
      }
      if (((from_bitField0_ & 0x00004000) != 0)) {
        result.tensorboard_ = tensorboard_;
      }
    }

    private void buildPartialOneofs(com.google.cloud.notebooks.v1.ExecutionTemplate result) {
      result.jobParametersCase_ = jobParametersCase_;
      result.jobParameters_ = this.jobParameters_;
      if (jobParametersCase_ == 12 && dataprocParametersBuilder_ != null) {
        result.jobParameters_ = dataprocParametersBuilder_.build();
      }
      if (jobParametersCase_ == 13 && vertexAiParametersBuilder_ != null) {
        result.jobParameters_ = vertexAiParametersBuilder_.build();
      }
    }

    @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.cloud.notebooks.v1.ExecutionTemplate) {
        return mergeFrom((com.google.cloud.notebooks.v1.ExecutionTemplate) other);
      } else {
        super.mergeFrom(other);
        return this;
      }
    }

    public Builder mergeFrom(com.google.cloud.notebooks.v1.ExecutionTemplate other) {
      if (other == com.google.cloud.notebooks.v1.ExecutionTemplate.getDefaultInstance())
        return this;
      if (other.scaleTier_ != 0) {
        setScaleTierValue(other.getScaleTierValue());
      }
      if (!other.getMasterType().isEmpty()) {
        masterType_ = other.masterType_;
        bitField0_ |= 0x00000002;
        onChanged();
      }
      if (other.hasAcceleratorConfig()) {
        mergeAcceleratorConfig(other.getAcceleratorConfig());
      }
      internalGetMutableLabels().mergeFrom(other.internalGetLabels());
      bitField0_ |= 0x00000008;
      if (!other.getInputNotebookFile().isEmpty()) {
        inputNotebookFile_ = other.inputNotebookFile_;
        bitField0_ |= 0x00000010;
        onChanged();
      }
      if (!other.getContainerImageUri().isEmpty()) {
        containerImageUri_ = other.containerImageUri_;
        bitField0_ |= 0x00000020;
        onChanged();
      }
      if (!other.getOutputNotebookFolder().isEmpty()) {
        outputNotebookFolder_ = other.outputNotebookFolder_;
        bitField0_ |= 0x00000040;
        onChanged();
      }
      if (!other.getParamsYamlFile().isEmpty()) {
        paramsYamlFile_ = other.paramsYamlFile_;
        bitField0_ |= 0x00000080;
        onChanged();
      }
      if (!other.getParameters().isEmpty()) {
        parameters_ = other.parameters_;
        bitField0_ |= 0x00000100;
        onChanged();
      }
      if (!other.getServiceAccount().isEmpty()) {
        serviceAccount_ = other.serviceAccount_;
        bitField0_ |= 0x00000200;
        onChanged();
      }
      if (other.jobType_ != 0) {
        setJobTypeValue(other.getJobTypeValue());
      }
      if (!other.getKernelSpec().isEmpty()) {
        kernelSpec_ = other.kernelSpec_;
        bitField0_ |= 0x00002000;
        onChanged();
      }
      if (!other.getTensorboard().isEmpty()) {
        tensorboard_ = other.tensorboard_;
        bitField0_ |= 0x00004000;
        onChanged();
      }
      switch (other.getJobParametersCase()) {
        case DATAPROC_PARAMETERS:
          {
            mergeDataprocParameters(other.getDataprocParameters());
            break;
          }
        case VERTEX_AI_PARAMETERS:
          {
            mergeVertexAiParameters(other.getVertexAiParameters());
            break;
          }
        case JOBPARAMETERS_NOT_SET:
          {
            break;
          }
      }
      this.mergeUnknownFields(other.getUnknownFields());
      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 {
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 8:
              {
                scaleTier_ = input.readEnum();
                bitField0_ |= 0x00000001;
                break;
              } // case 8
            case 18:
              {
                masterType_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000002;
                break;
              } // case 18
            case 26:
              {
                input.readMessage(
                    getAcceleratorConfigFieldBuilder().getBuilder(), extensionRegistry);
                bitField0_ |= 0x00000004;
                break;
              } // case 26
            case 34:
              {
                com.google.protobuf.MapEntry<java.lang.String, java.lang.String> labels__ =
                    input.readMessage(
                        LabelsDefaultEntryHolder.defaultEntry.getParserForType(),
                        extensionRegistry);
                internalGetMutableLabels()
                    .getMutableMap()
                    .put(labels__.getKey(), labels__.getValue());
                bitField0_ |= 0x00000008;
                break;
              } // case 34
            case 42:
              {
                inputNotebookFile_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000010;
                break;
              } // case 42
            case 50:
              {
                containerImageUri_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000020;
                break;
              } // case 50
            case 58:
              {
                outputNotebookFolder_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000040;
                break;
              } // case 58
            case 66:
              {
                paramsYamlFile_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000080;
                break;
              } // case 66
            case 74:
              {
                parameters_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000100;
                break;
              } // case 74
            case 82:
              {
                serviceAccount_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000200;
                break;
              } // case 82
            case 88:
              {
                jobType_ = input.readEnum();
                bitField0_ |= 0x00000400;
                break;
              } // case 88
            case 98:
              {
                input.readMessage(
                    getDataprocParametersFieldBuilder().getBuilder(), extensionRegistry);
                jobParametersCase_ = 12;
                break;
              } // case 98
            case 106:
              {
                input.readMessage(
                    getVertexAiParametersFieldBuilder().getBuilder(), extensionRegistry);
                jobParametersCase_ = 13;
                break;
              } // case 106
            case 114:
              {
                kernelSpec_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00002000;
                break;
              } // case 114
            case 122:
              {
                tensorboard_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00004000;
                break;
              } // case 122
            default:
              {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
          } // switch (tag)
        } // while (!done)
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.unwrapIOException();
      } finally {
        onChanged();
      } // finally
      return this;
    }

    private int jobParametersCase_ = 0;
    private java.lang.Object jobParameters_;

    public JobParametersCase getJobParametersCase() {
      return JobParametersCase.forNumber(jobParametersCase_);
    }

    public Builder clearJobParameters() {
      jobParametersCase_ = 0;
      jobParameters_ = null;
      onChanged();
      return this;
    }

    private int bitField0_;

    private int scaleTier_ = 0;
    /**
     *
     *
     * <pre>
     * Required. Scale tier of the hardware used for notebook execution.
     * DEPRECATED Will be discontinued. As right now only CUSTOM is supported.
     * </pre>
     *
     * <code>
     * .google.cloud.notebooks.v1.ExecutionTemplate.ScaleTier scale_tier = 1 [deprecated = true, (.google.api.field_behavior) = REQUIRED];
     * </code>
     *
     * @deprecated google.cloud.notebooks.v1.ExecutionTemplate.scale_tier is deprecated. See
     *     google/cloud/notebooks/v1/execution.proto;l=151
     * @return The enum numeric value on the wire for scaleTier.
     */
    @java.lang.Override
    @java.lang.Deprecated
    public int getScaleTierValue() {
      return scaleTier_;
    }
    /**
     *
     *
     * <pre>
     * Required. Scale tier of the hardware used for notebook execution.
     * DEPRECATED Will be discontinued. As right now only CUSTOM is supported.
     * </pre>
     *
     * <code>
     * .google.cloud.notebooks.v1.ExecutionTemplate.ScaleTier scale_tier = 1 [deprecated = true, (.google.api.field_behavior) = REQUIRED];
     * </code>
     *
     * @deprecated google.cloud.notebooks.v1.ExecutionTemplate.scale_tier is deprecated. See
     *     google/cloud/notebooks/v1/execution.proto;l=151
     * @param value The enum numeric value on the wire for scaleTier to set.
     * @return This builder for chaining.
     */
    @java.lang.Deprecated
    public Builder setScaleTierValue(int value) {
      scaleTier_ = value;
      bitField0_ |= 0x00000001;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Required. Scale tier of the hardware used for notebook execution.
     * DEPRECATED Will be discontinued. As right now only CUSTOM is supported.
     * </pre>
     *
     * <code>
     * .google.cloud.notebooks.v1.ExecutionTemplate.ScaleTier scale_tier = 1 [deprecated = true, (.google.api.field_behavior) = REQUIRED];
     * </code>
     *
     * @deprecated google.cloud.notebooks.v1.ExecutionTemplate.scale_tier is deprecated. See
     *     google/cloud/notebooks/v1/execution.proto;l=151
     * @return The scaleTier.
     */
    @java.lang.Override
    @java.lang.Deprecated
    public com.google.cloud.notebooks.v1.ExecutionTemplate.ScaleTier getScaleTier() {
      com.google.cloud.notebooks.v1.ExecutionTemplate.ScaleTier result =
          com.google.cloud.notebooks.v1.ExecutionTemplate.ScaleTier.forNumber(scaleTier_);
      return result == null
          ? com.google.cloud.notebooks.v1.ExecutionTemplate.ScaleTier.UNRECOGNIZED
          : result;
    }
    /**
     *
     *
     * <pre>
     * Required. Scale tier of the hardware used for notebook execution.
     * DEPRECATED Will be discontinued. As right now only CUSTOM is supported.
     * </pre>
     *
     * <code>
     * .google.cloud.notebooks.v1.ExecutionTemplate.ScaleTier scale_tier = 1 [deprecated = true, (.google.api.field_behavior) = REQUIRED];
     * </code>
     *
     * @deprecated google.cloud.notebooks.v1.ExecutionTemplate.scale_tier is deprecated. See
     *     google/cloud/notebooks/v1/execution.proto;l=151
     * @param value The scaleTier to set.
     * @return This builder for chaining.
     */
    @java.lang.Deprecated
    public Builder setScaleTier(com.google.cloud.notebooks.v1.ExecutionTemplate.ScaleTier value) {
      if (value == null) {
        throw new NullPointerException();
      }
      bitField0_ |= 0x00000001;
      scaleTier_ = value.getNumber();
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Required. Scale tier of the hardware used for notebook execution.
     * DEPRECATED Will be discontinued. As right now only CUSTOM is supported.
     * </pre>
     *
     * <code>
     * .google.cloud.notebooks.v1.ExecutionTemplate.ScaleTier scale_tier = 1 [deprecated = true, (.google.api.field_behavior) = REQUIRED];
     * </code>
     *
     * @deprecated google.cloud.notebooks.v1.ExecutionTemplate.scale_tier is deprecated. See
     *     google/cloud/notebooks/v1/execution.proto;l=151
     * @return This builder for chaining.
     */
    @java.lang.Deprecated
    public Builder clearScaleTier() {
      bitField0_ = (bitField0_ & ~0x00000001);
      scaleTier_ = 0;
      onChanged();
      return this;
    }

    private java.lang.Object masterType_ = "";
    /**
     *
     *
     * <pre>
     * Specifies the type of virtual machine to use for your training
     * job's master worker. You must specify this field when `scaleTier` is set to
     * `CUSTOM`.
     * You can use certain Compute Engine machine types directly in this field.
     * The following types are supported:
     * - `n1-standard-4`
     * - `n1-standard-8`
     * - `n1-standard-16`
     * - `n1-standard-32`
     * - `n1-standard-64`
     * - `n1-standard-96`
     * - `n1-highmem-2`
     * - `n1-highmem-4`
     * - `n1-highmem-8`
     * - `n1-highmem-16`
     * - `n1-highmem-32`
     * - `n1-highmem-64`
     * - `n1-highmem-96`
     * - `n1-highcpu-16`
     * - `n1-highcpu-32`
     * - `n1-highcpu-64`
     * - `n1-highcpu-96`
     * Alternatively, you can use the following legacy machine types:
     * - `standard`
     * - `large_model`
     * - `complex_model_s`
     * - `complex_model_m`
     * - `complex_model_l`
     * - `standard_gpu`
     * - `complex_model_m_gpu`
     * - `complex_model_l_gpu`
     * - `standard_p100`
     * - `complex_model_m_p100`
     * - `standard_v100`
     * - `large_model_v100`
     * - `complex_model_m_v100`
     * - `complex_model_l_v100`
     * Finally, if you want to use a TPU for training, specify `cloud_tpu` in this
     * field. Learn more about the [special configuration options for training
     * with
     * TPU](https://cloud.google.com/ai-platform/training/docs/using-tpus#configuring_a_custom_tpu_machine).
     * </pre>
     *
     * <code>string master_type = 2;</code>
     *
     * @return The masterType.
     */
    public java.lang.String getMasterType() {
      java.lang.Object ref = masterType_;
      if (!(ref instanceof java.lang.String)) {
        com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        masterType_ = s;
        return s;
      } else {
        return (java.lang.String) ref;
      }
    }
    /**
     *
     *
     * <pre>
     * Specifies the type of virtual machine to use for your training
     * job's master worker. You must specify this field when `scaleTier` is set to
     * `CUSTOM`.
     * You can use certain Compute Engine machine types directly in this field.
     * The following types are supported:
     * - `n1-standard-4`
     * - `n1-standard-8`
     * - `n1-standard-16`
     * - `n1-standard-32`
     * - `n1-standard-64`
     * - `n1-standard-96`
     * - `n1-highmem-2`
     * - `n1-highmem-4`
     * - `n1-highmem-8`
     * - `n1-highmem-16`
     * - `n1-highmem-32`
     * - `n1-highmem-64`
     * - `n1-highmem-96`
     * - `n1-highcpu-16`
     * - `n1-highcpu-32`
     * - `n1-highcpu-64`
     * - `n1-highcpu-96`
     * Alternatively, you can use the following legacy machine types:
     * - `standard`
     * - `large_model`
     * - `complex_model_s`
     * - `complex_model_m`
     * - `complex_model_l`
     * - `standard_gpu`
     * - `complex_model_m_gpu`
     * - `complex_model_l_gpu`
     * - `standard_p100`
     * - `complex_model_m_p100`
     * - `standard_v100`
     * - `large_model_v100`
     * - `complex_model_m_v100`
     * - `complex_model_l_v100`
     * Finally, if you want to use a TPU for training, specify `cloud_tpu` in this
     * field. Learn more about the [special configuration options for training
     * with
     * TPU](https://cloud.google.com/ai-platform/training/docs/using-tpus#configuring_a_custom_tpu_machine).
     * </pre>
     *
     * <code>string master_type = 2;</code>
     *
     * @return The bytes for masterType.
     */
    public com.google.protobuf.ByteString getMasterTypeBytes() {
      java.lang.Object ref = masterType_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
        masterType_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    /**
     *
     *
     * <pre>
     * Specifies the type of virtual machine to use for your training
     * job's master worker. You must specify this field when `scaleTier` is set to
     * `CUSTOM`.
     * You can use certain Compute Engine machine types directly in this field.
     * The following types are supported:
     * - `n1-standard-4`
     * - `n1-standard-8`
     * - `n1-standard-16`
     * - `n1-standard-32`
     * - `n1-standard-64`
     * - `n1-standard-96`
     * - `n1-highmem-2`
     * - `n1-highmem-4`
     * - `n1-highmem-8`
     * - `n1-highmem-16`
     * - `n1-highmem-32`
     * - `n1-highmem-64`
     * - `n1-highmem-96`
     * - `n1-highcpu-16`
     * - `n1-highcpu-32`
     * - `n1-highcpu-64`
     * - `n1-highcpu-96`
     * Alternatively, you can use the following legacy machine types:
     * - `standard`
     * - `large_model`
     * - `complex_model_s`
     * - `complex_model_m`
     * - `complex_model_l`
     * - `standard_gpu`
     * - `complex_model_m_gpu`
     * - `complex_model_l_gpu`
     * - `standard_p100`
     * - `complex_model_m_p100`
     * - `standard_v100`
     * - `large_model_v100`
     * - `complex_model_m_v100`
     * - `complex_model_l_v100`
     * Finally, if you want to use a TPU for training, specify `cloud_tpu` in this
     * field. Learn more about the [special configuration options for training
     * with
     * TPU](https://cloud.google.com/ai-platform/training/docs/using-tpus#configuring_a_custom_tpu_machine).
     * </pre>
     *
     * <code>string master_type = 2;</code>
     *
     * @param value The masterType to set.
     * @return This builder for chaining.
     */
    public Builder setMasterType(java.lang.String value) {
      if (value == null) {
        throw new NullPointerException();
      }
      masterType_ = value;
      bitField0_ |= 0x00000002;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Specifies the type of virtual machine to use for your training
     * job's master worker. You must specify this field when `scaleTier` is set to
     * `CUSTOM`.
     * You can use certain Compute Engine machine types directly in this field.
     * The following types are supported:
     * - `n1-standard-4`
     * - `n1-standard-8`
     * - `n1-standard-16`
     * - `n1-standard-32`
     * - `n1-standard-64`
     * - `n1-standard-96`
     * - `n1-highmem-2`
     * - `n1-highmem-4`
     * - `n1-highmem-8`
     * - `n1-highmem-16`
     * - `n1-highmem-32`
     * - `n1-highmem-64`
     * - `n1-highmem-96`
     * - `n1-highcpu-16`
     * - `n1-highcpu-32`
     * - `n1-highcpu-64`
     * - `n1-highcpu-96`
     * Alternatively, you can use the following legacy machine types:
     * - `standard`
     * - `large_model`
     * - `complex_model_s`
     * - `complex_model_m`
     * - `complex_model_l`
     * - `standard_gpu`
     * - `complex_model_m_gpu`
     * - `complex_model_l_gpu`
     * - `standard_p100`
     * - `complex_model_m_p100`
     * - `standard_v100`
     * - `large_model_v100`
     * - `complex_model_m_v100`
     * - `complex_model_l_v100`
     * Finally, if you want to use a TPU for training, specify `cloud_tpu` in this
     * field. Learn more about the [special configuration options for training
     * with
     * TPU](https://cloud.google.com/ai-platform/training/docs/using-tpus#configuring_a_custom_tpu_machine).
     * </pre>
     *
     * <code>string master_type = 2;</code>
     *
     * @return This builder for chaining.
     */
    public Builder clearMasterType() {
      masterType_ = getDefaultInstance().getMasterType();
      bitField0_ = (bitField0_ & ~0x00000002);
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Specifies the type of virtual machine to use for your training
     * job's master worker. You must specify this field when `scaleTier` is set to
     * `CUSTOM`.
     * You can use certain Compute Engine machine types directly in this field.
     * The following types are supported:
     * - `n1-standard-4`
     * - `n1-standard-8`
     * - `n1-standard-16`
     * - `n1-standard-32`
     * - `n1-standard-64`
     * - `n1-standard-96`
     * - `n1-highmem-2`
     * - `n1-highmem-4`
     * - `n1-highmem-8`
     * - `n1-highmem-16`
     * - `n1-highmem-32`
     * - `n1-highmem-64`
     * - `n1-highmem-96`
     * - `n1-highcpu-16`
     * - `n1-highcpu-32`
     * - `n1-highcpu-64`
     * - `n1-highcpu-96`
     * Alternatively, you can use the following legacy machine types:
     * - `standard`
     * - `large_model`
     * - `complex_model_s`
     * - `complex_model_m`
     * - `complex_model_l`
     * - `standard_gpu`
     * - `complex_model_m_gpu`
     * - `complex_model_l_gpu`
     * - `standard_p100`
     * - `complex_model_m_p100`
     * - `standard_v100`
     * - `large_model_v100`
     * - `complex_model_m_v100`
     * - `complex_model_l_v100`
     * Finally, if you want to use a TPU for training, specify `cloud_tpu` in this
     * field. Learn more about the [special configuration options for training
     * with
     * TPU](https://cloud.google.com/ai-platform/training/docs/using-tpus#configuring_a_custom_tpu_machine).
     * </pre>
     *
     * <code>string master_type = 2;</code>
     *
     * @param value The bytes for masterType to set.
     * @return This builder for chaining.
     */
    public Builder setMasterTypeBytes(com.google.protobuf.ByteString value) {
      if (value == null) {
        throw new NullPointerException();
      }
      checkByteStringIsUtf8(value);
      masterType_ = value;
      bitField0_ |= 0x00000002;
      onChanged();
      return this;
    }

    private com.google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorConfig
        acceleratorConfig_;
    private com.google.protobuf.SingleFieldBuilderV3<
            com.google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorConfig,
            com.google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorConfig.Builder,
            com.google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorConfigOrBuilder>
        acceleratorConfigBuilder_;
    /**
     *
     *
     * <pre>
     * Configuration (count and accelerator type) for hardware running notebook
     * execution.
     * </pre>
     *
     * <code>
     * .google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorConfig accelerator_config = 3;
     * </code>
     *
     * @return Whether the acceleratorConfig field is set.
     */
    public boolean hasAcceleratorConfig() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     *
     *
     * <pre>
     * Configuration (count and accelerator type) for hardware running notebook
     * execution.
     * </pre>
     *
     * <code>
     * .google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorConfig accelerator_config = 3;
     * </code>
     *
     * @return The acceleratorConfig.
     */
    public com.google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorConfig
        getAcceleratorConfig() {
      if (acceleratorConfigBuilder_ == null) {
        return acceleratorConfig_ == null
            ? com.google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorConfig
                .getDefaultInstance()
            : acceleratorConfig_;
      } else {
        return acceleratorConfigBuilder_.getMessage();
      }
    }
    /**
     *
     *
     * <pre>
     * Configuration (count and accelerator type) for hardware running notebook
     * execution.
     * </pre>
     *
     * <code>
     * .google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorConfig accelerator_config = 3;
     * </code>
     */
    public Builder setAcceleratorConfig(
        com.google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorConfig value) {
      if (acceleratorConfigBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        acceleratorConfig_ = value;
      } else {
        acceleratorConfigBuilder_.setMessage(value);
      }
      bitField0_ |= 0x00000004;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Configuration (count and accelerator type) for hardware running notebook
     * execution.
     * </pre>
     *
     * <code>
     * .google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorConfig accelerator_config = 3;
     * </code>
     */
    public Builder setAcceleratorConfig(
        com.google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorConfig.Builder
            builderForValue) {
      if (acceleratorConfigBuilder_ == null) {
        acceleratorConfig_ = builderForValue.build();
      } else {
        acceleratorConfigBuilder_.setMessage(builderForValue.build());
      }
      bitField0_ |= 0x00000004;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Configuration (count and accelerator type) for hardware running notebook
     * execution.
     * </pre>
     *
     * <code>
     * .google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorConfig accelerator_config = 3;
     * </code>
     */
    public Builder mergeAcceleratorConfig(
        com.google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorConfig value) {
      if (acceleratorConfigBuilder_ == null) {
        if (((bitField0_ & 0x00000004) != 0)
            && acceleratorConfig_ != null
            && acceleratorConfig_
                != com.google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorConfig
                    .getDefaultInstance()) {
          getAcceleratorConfigBuilder().mergeFrom(value);
        } else {
          acceleratorConfig_ = value;
        }
      } else {
        acceleratorConfigBuilder_.mergeFrom(value);
      }
      bitField0_ |= 0x00000004;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Configuration (count and accelerator type) for hardware running notebook
     * execution.
     * </pre>
     *
     * <code>
     * .google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorConfig accelerator_config = 3;
     * </code>
     */
    public Builder clearAcceleratorConfig() {
      bitField0_ = (bitField0_ & ~0x00000004);
      acceleratorConfig_ = null;
      if (acceleratorConfigBuilder_ != null) {
        acceleratorConfigBuilder_.dispose();
        acceleratorConfigBuilder_ = null;
      }
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Configuration (count and accelerator type) for hardware running notebook
     * execution.
     * </pre>
     *
     * <code>
     * .google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorConfig accelerator_config = 3;
     * </code>
     */
    public com.google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorConfig.Builder
        getAcceleratorConfigBuilder() {
      bitField0_ |= 0x00000004;
      onChanged();
      return getAcceleratorConfigFieldBuilder().getBuilder();
    }
    /**
     *
     *
     * <pre>
     * Configuration (count and accelerator type) for hardware running notebook
     * execution.
     * </pre>
     *
     * <code>
     * .google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorConfig accelerator_config = 3;
     * </code>
     */
    public com.google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorConfigOrBuilder
        getAcceleratorConfigOrBuilder() {
      if (acceleratorConfigBuilder_ != null) {
        return acceleratorConfigBuilder_.getMessageOrBuilder();
      } else {
        return acceleratorConfig_ == null
            ? com.google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorConfig
                .getDefaultInstance()
            : acceleratorConfig_;
      }
    }
    /**
     *
     *
     * <pre>
     * Configuration (count and accelerator type) for hardware running notebook
     * execution.
     * </pre>
     *
     * <code>
     * .google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorConfig accelerator_config = 3;
     * </code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
            com.google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorConfig,
            com.google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorConfig.Builder,
            com.google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorConfigOrBuilder>
        getAcceleratorConfigFieldBuilder() {
      if (acceleratorConfigBuilder_ == null) {
        acceleratorConfigBuilder_ =
            new com.google.protobuf.SingleFieldBuilderV3<
                com.google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorConfig,
                com.google.cloud.notebooks.v1.ExecutionTemplate.SchedulerAcceleratorConfig.Builder,
                com.google.cloud.notebooks.v1.ExecutionTemplate
                    .SchedulerAcceleratorConfigOrBuilder>(
                getAcceleratorConfig(), getParentForChildren(), isClean());
        acceleratorConfig_ = null;
      }
      return acceleratorConfigBuilder_;
    }

    private com.google.protobuf.MapField<java.lang.String, java.lang.String> labels_;

    private com.google.protobuf.MapField<java.lang.String, java.lang.String> internalGetLabels() {
      if (labels_ == null) {
        return com.google.protobuf.MapField.emptyMapField(LabelsDefaultEntryHolder.defaultEntry);
      }
      return labels_;
    }

    private com.google.protobuf.MapField<java.lang.String, java.lang.String>
        internalGetMutableLabels() {
      if (labels_ == null) {
        labels_ = com.google.protobuf.MapField.newMapField(LabelsDefaultEntryHolder.defaultEntry);
      }
      if (!labels_.isMutable()) {
        labels_ = labels_.copy();
      }
      bitField0_ |= 0x00000008;
      onChanged();
      return labels_;
    }

    public int getLabelsCount() {
      return internalGetLabels().getMap().size();
    }
    /**
     *
     *
     * <pre>
     * Labels for execution.
     * If execution is scheduled, a field included will be 'nbs-scheduled'.
     * Otherwise, it is an immediate execution, and an included field will be
     * 'nbs-immediate'. Use fields to efficiently index between various types of
     * executions.
     * </pre>
     *
     * <code>map&lt;string, string&gt; labels = 4;</code>
     */
    @java.lang.Override
    public boolean containsLabels(java.lang.String key) {
      if (key == null) {
        throw new NullPointerException("map key");
      }
      return internalGetLabels().getMap().containsKey(key);
    }
    /** Use {@link #getLabelsMap()} instead. */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map<java.lang.String, java.lang.String> getLabels() {
      return getLabelsMap();
    }
    /**
     *
     *
     * <pre>
     * Labels for execution.
     * If execution is scheduled, a field included will be 'nbs-scheduled'.
     * Otherwise, it is an immediate execution, and an included field will be
     * 'nbs-immediate'. Use fields to efficiently index between various types of
     * executions.
     * </pre>
     *
     * <code>map&lt;string, string&gt; labels = 4;</code>
     */
    @java.lang.Override
    public java.util.Map<java.lang.String, java.lang.String> getLabelsMap() {
      return internalGetLabels().getMap();
    }
    /**
     *
     *
     * <pre>
     * Labels for execution.
     * If execution is scheduled, a field included will be 'nbs-scheduled'.
     * Otherwise, it is an immediate execution, and an included field will be
     * 'nbs-immediate'. Use fields to efficiently index between various types of
     * executions.
     * </pre>
     *
     * <code>map&lt;string, string&gt; labels = 4;</code>
     */
    @java.lang.Override
    public /* nullable */ java.lang.String getLabelsOrDefault(
        java.lang.String key,
        /* nullable */
        java.lang.String defaultValue) {
      if (key == null) {
        throw new NullPointerException("map key");
      }
      java.util.Map<java.lang.String, java.lang.String> map = internalGetLabels().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     *
     *
     * <pre>
     * Labels for execution.
     * If execution is scheduled, a field included will be 'nbs-scheduled'.
     * Otherwise, it is an immediate execution, and an included field will be
     * 'nbs-immediate'. Use fields to efficiently index between various types of
     * executions.
     * </pre>
     *
     * <code>map&lt;string, string&gt; labels = 4;</code>
     */
    @java.lang.Override
    public java.lang.String getLabelsOrThrow(java.lang.String key) {
      if (key == null) {
        throw new NullPointerException("map key");
      }
      java.util.Map<java.lang.String, java.lang.String> map = internalGetLabels().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    public Builder clearLabels() {
      bitField0_ = (bitField0_ & ~0x00000008);
      internalGetMutableLabels().getMutableMap().clear();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Labels for execution.
     * If execution is scheduled, a field included will be 'nbs-scheduled'.
     * Otherwise, it is an immediate execution, and an included field will be
     * 'nbs-immediate'. Use fields to efficiently index between various types of
     * executions.
     * </pre>
     *
     * <code>map&lt;string, string&gt; labels = 4;</code>
     */
    public Builder removeLabels(java.lang.String key) {
      if (key == null) {
        throw new NullPointerException("map key");
      }
      internalGetMutableLabels().getMutableMap().remove(key);
      return this;
    }
    /** Use alternate mutation accessors instead. */
    @java.lang.Deprecated
    public java.util.Map<java.lang.String, java.lang.String> getMutableLabels() {
      bitField0_ |= 0x00000008;
      return internalGetMutableLabels().getMutableMap();
    }
    /**
     *
     *
     * <pre>
     * Labels for execution.
     * If execution is scheduled, a field included will be 'nbs-scheduled'.
     * Otherwise, it is an immediate execution, and an included field will be
     * 'nbs-immediate'. Use fields to efficiently index between various types of
     * executions.
     * </pre>
     *
     * <code>map&lt;string, string&gt; labels = 4;</code>
     */
    public Builder putLabels(java.lang.String key, java.lang.String value) {
      if (key == null) {
        throw new NullPointerException("map key");
      }
      if (value == null) {
        throw new NullPointerException("map value");
      }
      internalGetMutableLabels().getMutableMap().put(key, value);
      bitField0_ |= 0x00000008;
      return this;
    }
    /**
     *
     *
     * <pre>
     * Labels for execution.
     * If execution is scheduled, a field included will be 'nbs-scheduled'.
     * Otherwise, it is an immediate execution, and an included field will be
     * 'nbs-immediate'. Use fields to efficiently index between various types of
     * executions.
     * </pre>
     *
     * <code>map&lt;string, string&gt; labels = 4;</code>
     */
    public Builder putAllLabels(java.util.Map<java.lang.String, java.lang.String> values) {
      internalGetMutableLabels().getMutableMap().putAll(values);
      bitField0_ |= 0x00000008;
      return this;
    }

    private java.lang.Object inputNotebookFile_ = "";
    /**
     *
     *
     * <pre>
     * Path to the notebook file to execute.
     * Must be in a Google Cloud Storage bucket.
     * Format: `gs://{bucket_name}/{folder}/{notebook_file_name}`
     * Ex: `gs://notebook_user/scheduled_notebooks/sentiment_notebook.ipynb`
     * </pre>
     *
     * <code>string input_notebook_file = 5;</code>
     *
     * @return The inputNotebookFile.
     */
    public java.lang.String getInputNotebookFile() {
      java.lang.Object ref = inputNotebookFile_;
      if (!(ref instanceof java.lang.String)) {
        com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        inputNotebookFile_ = s;
        return s;
      } else {
        return (java.lang.String) ref;
      }
    }
    /**
     *
     *
     * <pre>
     * Path to the notebook file to execute.
     * Must be in a Google Cloud Storage bucket.
     * Format: `gs://{bucket_name}/{folder}/{notebook_file_name}`
     * Ex: `gs://notebook_user/scheduled_notebooks/sentiment_notebook.ipynb`
     * </pre>
     *
     * <code>string input_notebook_file = 5;</code>
     *
     * @return The bytes for inputNotebookFile.
     */
    public com.google.protobuf.ByteString getInputNotebookFileBytes() {
      java.lang.Object ref = inputNotebookFile_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
        inputNotebookFile_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    /**
     *
     *
     * <pre>
     * Path to the notebook file to execute.
     * Must be in a Google Cloud Storage bucket.
     * Format: `gs://{bucket_name}/{folder}/{notebook_file_name}`
     * Ex: `gs://notebook_user/scheduled_notebooks/sentiment_notebook.ipynb`
     * </pre>
     *
     * <code>string input_notebook_file = 5;</code>
     *
     * @param value The inputNotebookFile to set.
     * @return This builder for chaining.
     */
    public Builder setInputNotebookFile(java.lang.String value) {
      if (value == null) {
        throw new NullPointerException();
      }
      inputNotebookFile_ = value;
      bitField0_ |= 0x00000010;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Path to the notebook file to execute.
     * Must be in a Google Cloud Storage bucket.
     * Format: `gs://{bucket_name}/{folder}/{notebook_file_name}`
     * Ex: `gs://notebook_user/scheduled_notebooks/sentiment_notebook.ipynb`
     * </pre>
     *
     * <code>string input_notebook_file = 5;</code>
     *
     * @return This builder for chaining.
     */
    public Builder clearInputNotebookFile() {
      inputNotebookFile_ = getDefaultInstance().getInputNotebookFile();
      bitField0_ = (bitField0_ & ~0x00000010);
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Path to the notebook file to execute.
     * Must be in a Google Cloud Storage bucket.
     * Format: `gs://{bucket_name}/{folder}/{notebook_file_name}`
     * Ex: `gs://notebook_user/scheduled_notebooks/sentiment_notebook.ipynb`
     * </pre>
     *
     * <code>string input_notebook_file = 5;</code>
     *
     * @param value The bytes for inputNotebookFile to set.
     * @return This builder for chaining.
     */
    public Builder setInputNotebookFileBytes(com.google.protobuf.ByteString value) {
      if (value == null) {
        throw new NullPointerException();
      }
      checkByteStringIsUtf8(value);
      inputNotebookFile_ = value;
      bitField0_ |= 0x00000010;
      onChanged();
      return this;
    }

    private java.lang.Object containerImageUri_ = "";
    /**
     *
     *
     * <pre>
     * Container Image URI to a DLVM
     * Example: 'gcr.io/deeplearning-platform-release/base-cu100'
     * More examples can be found at:
     * https://cloud.google.com/ai-platform/deep-learning-containers/docs/choosing-container
     * </pre>
     *
     * <code>string container_image_uri = 6;</code>
     *
     * @return The containerImageUri.
     */
    public java.lang.String getContainerImageUri() {
      java.lang.Object ref = containerImageUri_;
      if (!(ref instanceof java.lang.String)) {
        com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        containerImageUri_ = s;
        return s;
      } else {
        return (java.lang.String) ref;
      }
    }
    /**
     *
     *
     * <pre>
     * Container Image URI to a DLVM
     * Example: 'gcr.io/deeplearning-platform-release/base-cu100'
     * More examples can be found at:
     * https://cloud.google.com/ai-platform/deep-learning-containers/docs/choosing-container
     * </pre>
     *
     * <code>string container_image_uri = 6;</code>
     *
     * @return The bytes for containerImageUri.
     */
    public com.google.protobuf.ByteString getContainerImageUriBytes() {
      java.lang.Object ref = containerImageUri_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
        containerImageUri_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    /**
     *
     *
     * <pre>
     * Container Image URI to a DLVM
     * Example: 'gcr.io/deeplearning-platform-release/base-cu100'
     * More examples can be found at:
     * https://cloud.google.com/ai-platform/deep-learning-containers/docs/choosing-container
     * </pre>
     *
     * <code>string container_image_uri = 6;</code>
     *
     * @param value The containerImageUri to set.
     * @return This builder for chaining.
     */
    public Builder setContainerImageUri(java.lang.String value) {
      if (value == null) {
        throw new NullPointerException();
      }
      containerImageUri_ = value;
      bitField0_ |= 0x00000020;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Container Image URI to a DLVM
     * Example: 'gcr.io/deeplearning-platform-release/base-cu100'
     * More examples can be found at:
     * https://cloud.google.com/ai-platform/deep-learning-containers/docs/choosing-container
     * </pre>
     *
     * <code>string container_image_uri = 6;</code>
     *
     * @return This builder for chaining.
     */
    public Builder clearContainerImageUri() {
      containerImageUri_ = getDefaultInstance().getContainerImageUri();
      bitField0_ = (bitField0_ & ~0x00000020);
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Container Image URI to a DLVM
     * Example: 'gcr.io/deeplearning-platform-release/base-cu100'
     * More examples can be found at:
     * https://cloud.google.com/ai-platform/deep-learning-containers/docs/choosing-container
     * </pre>
     *
     * <code>string container_image_uri = 6;</code>
     *
     * @param value The bytes for containerImageUri to set.
     * @return This builder for chaining.
     */
    public Builder setContainerImageUriBytes(com.google.protobuf.ByteString value) {
      if (value == null) {
        throw new NullPointerException();
      }
      checkByteStringIsUtf8(value);
      containerImageUri_ = value;
      bitField0_ |= 0x00000020;
      onChanged();
      return this;
    }

    private java.lang.Object outputNotebookFolder_ = "";
    /**
     *
     *
     * <pre>
     * Path to the notebook folder to write to.
     * Must be in a Google Cloud Storage bucket path.
     * Format: `gs://{bucket_name}/{folder}`
     * Ex: `gs://notebook_user/scheduled_notebooks`
     * </pre>
     *
     * <code>string output_notebook_folder = 7;</code>
     *
     * @return The outputNotebookFolder.
     */
    public java.lang.String getOutputNotebookFolder() {
      java.lang.Object ref = outputNotebookFolder_;
      if (!(ref instanceof java.lang.String)) {
        com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        outputNotebookFolder_ = s;
        return s;
      } else {
        return (java.lang.String) ref;
      }
    }
    /**
     *
     *
     * <pre>
     * Path to the notebook folder to write to.
     * Must be in a Google Cloud Storage bucket path.
     * Format: `gs://{bucket_name}/{folder}`
     * Ex: `gs://notebook_user/scheduled_notebooks`
     * </pre>
     *
     * <code>string output_notebook_folder = 7;</code>
     *
     * @return The bytes for outputNotebookFolder.
     */
    public com.google.protobuf.ByteString getOutputNotebookFolderBytes() {
      java.lang.Object ref = outputNotebookFolder_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
        outputNotebookFolder_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    /**
     *
     *
     * <pre>
     * Path to the notebook folder to write to.
     * Must be in a Google Cloud Storage bucket path.
     * Format: `gs://{bucket_name}/{folder}`
     * Ex: `gs://notebook_user/scheduled_notebooks`
     * </pre>
     *
     * <code>string output_notebook_folder = 7;</code>
     *
     * @param value The outputNotebookFolder to set.
     * @return This builder for chaining.
     */
    public Builder setOutputNotebookFolder(java.lang.String value) {
      if (value == null) {
        throw new NullPointerException();
      }
      outputNotebookFolder_ = value;
      bitField0_ |= 0x00000040;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Path to the notebook folder to write to.
     * Must be in a Google Cloud Storage bucket path.
     * Format: `gs://{bucket_name}/{folder}`
     * Ex: `gs://notebook_user/scheduled_notebooks`
     * </pre>
     *
     * <code>string output_notebook_folder = 7;</code>
     *
     * @return This builder for chaining.
     */
    public Builder clearOutputNotebookFolder() {
      outputNotebookFolder_ = getDefaultInstance().getOutputNotebookFolder();
      bitField0_ = (bitField0_ & ~0x00000040);
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Path to the notebook folder to write to.
     * Must be in a Google Cloud Storage bucket path.
     * Format: `gs://{bucket_name}/{folder}`
     * Ex: `gs://notebook_user/scheduled_notebooks`
     * </pre>
     *
     * <code>string output_notebook_folder = 7;</code>
     *
     * @param value The bytes for outputNotebookFolder to set.
     * @return This builder for chaining.
     */
    public Builder setOutputNotebookFolderBytes(com.google.protobuf.ByteString value) {
      if (value == null) {
        throw new NullPointerException();
      }
      checkByteStringIsUtf8(value);
      outputNotebookFolder_ = value;
      bitField0_ |= 0x00000040;
      onChanged();
      return this;
    }

    private java.lang.Object paramsYamlFile_ = "";
    /**
     *
     *
     * <pre>
     * Parameters to be overridden in the notebook during execution.
     * Ref https://papermill.readthedocs.io/en/latest/usage-parameterize.html on
     * how to specifying parameters in the input notebook and pass them here
     * in an YAML file.
     * Ex: `gs://notebook_user/scheduled_notebooks/sentiment_notebook_params.yaml`
     * </pre>
     *
     * <code>string params_yaml_file = 8;</code>
     *
     * @return The paramsYamlFile.
     */
    public java.lang.String getParamsYamlFile() {
      java.lang.Object ref = paramsYamlFile_;
      if (!(ref instanceof java.lang.String)) {
        com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        paramsYamlFile_ = s;
        return s;
      } else {
        return (java.lang.String) ref;
      }
    }
    /**
     *
     *
     * <pre>
     * Parameters to be overridden in the notebook during execution.
     * Ref https://papermill.readthedocs.io/en/latest/usage-parameterize.html on
     * how to specifying parameters in the input notebook and pass them here
     * in an YAML file.
     * Ex: `gs://notebook_user/scheduled_notebooks/sentiment_notebook_params.yaml`
     * </pre>
     *
     * <code>string params_yaml_file = 8;</code>
     *
     * @return The bytes for paramsYamlFile.
     */
    public com.google.protobuf.ByteString getParamsYamlFileBytes() {
      java.lang.Object ref = paramsYamlFile_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
        paramsYamlFile_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    /**
     *
     *
     * <pre>
     * Parameters to be overridden in the notebook during execution.
     * Ref https://papermill.readthedocs.io/en/latest/usage-parameterize.html on
     * how to specifying parameters in the input notebook and pass them here
     * in an YAML file.
     * Ex: `gs://notebook_user/scheduled_notebooks/sentiment_notebook_params.yaml`
     * </pre>
     *
     * <code>string params_yaml_file = 8;</code>
     *
     * @param value The paramsYamlFile to set.
     * @return This builder for chaining.
     */
    public Builder setParamsYamlFile(java.lang.String value) {
      if (value == null) {
        throw new NullPointerException();
      }
      paramsYamlFile_ = value;
      bitField0_ |= 0x00000080;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Parameters to be overridden in the notebook during execution.
     * Ref https://papermill.readthedocs.io/en/latest/usage-parameterize.html on
     * how to specifying parameters in the input notebook and pass them here
     * in an YAML file.
     * Ex: `gs://notebook_user/scheduled_notebooks/sentiment_notebook_params.yaml`
     * </pre>
     *
     * <code>string params_yaml_file = 8;</code>
     *
     * @return This builder for chaining.
     */
    public Builder clearParamsYamlFile() {
      paramsYamlFile_ = getDefaultInstance().getParamsYamlFile();
      bitField0_ = (bitField0_ & ~0x00000080);
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Parameters to be overridden in the notebook during execution.
     * Ref https://papermill.readthedocs.io/en/latest/usage-parameterize.html on
     * how to specifying parameters in the input notebook and pass them here
     * in an YAML file.
     * Ex: `gs://notebook_user/scheduled_notebooks/sentiment_notebook_params.yaml`
     * </pre>
     *
     * <code>string params_yaml_file = 8;</code>
     *
     * @param value The bytes for paramsYamlFile to set.
     * @return This builder for chaining.
     */
    public Builder setParamsYamlFileBytes(com.google.protobuf.ByteString value) {
      if (value == null) {
        throw new NullPointerException();
      }
      checkByteStringIsUtf8(value);
      paramsYamlFile_ = value;
      bitField0_ |= 0x00000080;
      onChanged();
      return this;
    }

    private java.lang.Object parameters_ = "";
    /**
     *
     *
     * <pre>
     * Parameters used within the 'input_notebook_file' notebook.
     * </pre>
     *
     * <code>string parameters = 9;</code>
     *
     * @return The parameters.
     */
    public java.lang.String getParameters() {
      java.lang.Object ref = parameters_;
      if (!(ref instanceof java.lang.String)) {
        com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        parameters_ = s;
        return s;
      } else {
        return (java.lang.String) ref;
      }
    }
    /**
     *
     *
     * <pre>
     * Parameters used within the 'input_notebook_file' notebook.
     * </pre>
     *
     * <code>string parameters = 9;</code>
     *
     * @return The bytes for parameters.
     */
    public com.google.protobuf.ByteString getParametersBytes() {
      java.lang.Object ref = parameters_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
        parameters_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    /**
     *
     *
     * <pre>
     * Parameters used within the 'input_notebook_file' notebook.
     * </pre>
     *
     * <code>string parameters = 9;</code>
     *
     * @param value The parameters to set.
     * @return This builder for chaining.
     */
    public Builder setParameters(java.lang.String value) {
      if (value == null) {
        throw new NullPointerException();
      }
      parameters_ = value;
      bitField0_ |= 0x00000100;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Parameters used within the 'input_notebook_file' notebook.
     * </pre>
     *
     * <code>string parameters = 9;</code>
     *
     * @return This builder for chaining.
     */
    public Builder clearParameters() {
      parameters_ = getDefaultInstance().getParameters();
      bitField0_ = (bitField0_ & ~0x00000100);
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Parameters used within the 'input_notebook_file' notebook.
     * </pre>
     *
     * <code>string parameters = 9;</code>
     *
     * @param value The bytes for parameters to set.
     * @return This builder for chaining.
     */
    public Builder setParametersBytes(com.google.protobuf.ByteString value) {
      if (value == null) {
        throw new NullPointerException();
      }
      checkByteStringIsUtf8(value);
      parameters_ = value;
      bitField0_ |= 0x00000100;
      onChanged();
      return this;
    }

    private java.lang.Object serviceAccount_ = "";
    /**
     *
     *
     * <pre>
     * The email address of a service account to use when running the execution.
     * You must have the `iam.serviceAccounts.actAs` permission for the specified
     * service account.
     * </pre>
     *
     * <code>string service_account = 10;</code>
     *
     * @return The serviceAccount.
     */
    public java.lang.String getServiceAccount() {
      java.lang.Object ref = serviceAccount_;
      if (!(ref instanceof java.lang.String)) {
        com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        serviceAccount_ = s;
        return s;
      } else {
        return (java.lang.String) ref;
      }
    }
    /**
     *
     *
     * <pre>
     * The email address of a service account to use when running the execution.
     * You must have the `iam.serviceAccounts.actAs` permission for the specified
     * service account.
     * </pre>
     *
     * <code>string service_account = 10;</code>
     *
     * @return The bytes for serviceAccount.
     */
    public com.google.protobuf.ByteString getServiceAccountBytes() {
      java.lang.Object ref = serviceAccount_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
        serviceAccount_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    /**
     *
     *
     * <pre>
     * The email address of a service account to use when running the execution.
     * You must have the `iam.serviceAccounts.actAs` permission for the specified
     * service account.
     * </pre>
     *
     * <code>string service_account = 10;</code>
     *
     * @param value The serviceAccount to set.
     * @return This builder for chaining.
     */
    public Builder setServiceAccount(java.lang.String value) {
      if (value == null) {
        throw new NullPointerException();
      }
      serviceAccount_ = value;
      bitField0_ |= 0x00000200;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * The email address of a service account to use when running the execution.
     * You must have the `iam.serviceAccounts.actAs` permission for the specified
     * service account.
     * </pre>
     *
     * <code>string service_account = 10;</code>
     *
     * @return This builder for chaining.
     */
    public Builder clearServiceAccount() {
      serviceAccount_ = getDefaultInstance().getServiceAccount();
      bitField0_ = (bitField0_ & ~0x00000200);
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * The email address of a service account to use when running the execution.
     * You must have the `iam.serviceAccounts.actAs` permission for the specified
     * service account.
     * </pre>
     *
     * <code>string service_account = 10;</code>
     *
     * @param value The bytes for serviceAccount to set.
     * @return This builder for chaining.
     */
    public Builder setServiceAccountBytes(com.google.protobuf.ByteString value) {
      if (value == null) {
        throw new NullPointerException();
      }
      checkByteStringIsUtf8(value);
      serviceAccount_ = value;
      bitField0_ |= 0x00000200;
      onChanged();
      return this;
    }

    private int jobType_ = 0;
    /**
     *
     *
     * <pre>
     * The type of Job to be used on this execution.
     * </pre>
     *
     * <code>.google.cloud.notebooks.v1.ExecutionTemplate.JobType job_type = 11;</code>
     *
     * @return The enum numeric value on the wire for jobType.
     */
    @java.lang.Override
    public int getJobTypeValue() {
      return jobType_;
    }
    /**
     *
     *
     * <pre>
     * The type of Job to be used on this execution.
     * </pre>
     *
     * <code>.google.cloud.notebooks.v1.ExecutionTemplate.JobType job_type = 11;</code>
     *
     * @param value The enum numeric value on the wire for jobType to set.
     * @return This builder for chaining.
     */
    public Builder setJobTypeValue(int value) {
      jobType_ = value;
      bitField0_ |= 0x00000400;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * The type of Job to be used on this execution.
     * </pre>
     *
     * <code>.google.cloud.notebooks.v1.ExecutionTemplate.JobType job_type = 11;</code>
     *
     * @return The jobType.
     */
    @java.lang.Override
    public com.google.cloud.notebooks.v1.ExecutionTemplate.JobType getJobType() {
      com.google.cloud.notebooks.v1.ExecutionTemplate.JobType result =
          com.google.cloud.notebooks.v1.ExecutionTemplate.JobType.forNumber(jobType_);
      return result == null
          ? com.google.cloud.notebooks.v1.ExecutionTemplate.JobType.UNRECOGNIZED
          : result;
    }
    /**
     *
     *
     * <pre>
     * The type of Job to be used on this execution.
     * </pre>
     *
     * <code>.google.cloud.notebooks.v1.ExecutionTemplate.JobType job_type = 11;</code>
     *
     * @param value The jobType to set.
     * @return This builder for chaining.
     */
    public Builder setJobType(com.google.cloud.notebooks.v1.ExecutionTemplate.JobType value) {
      if (value == null) {
        throw new NullPointerException();
      }
      bitField0_ |= 0x00000400;
      jobType_ = value.getNumber();
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * The type of Job to be used on this execution.
     * </pre>
     *
     * <code>.google.cloud.notebooks.v1.ExecutionTemplate.JobType job_type = 11;</code>
     *
     * @return This builder for chaining.
     */
    public Builder clearJobType() {
      bitField0_ = (bitField0_ & ~0x00000400);
      jobType_ = 0;
      onChanged();
      return this;
    }

    private com.google.protobuf.SingleFieldBuilderV3<
            com.google.cloud.notebooks.v1.ExecutionTemplate.DataprocParameters,
            com.google.cloud.notebooks.v1.ExecutionTemplate.DataprocParameters.Builder,
            com.google.cloud.notebooks.v1.ExecutionTemplate.DataprocParametersOrBuilder>
        dataprocParametersBuilder_;
    /**
     *
     *
     * <pre>
     * Parameters used in Dataproc JobType executions.
     * </pre>
     *
     * <code>
     * .google.cloud.notebooks.v1.ExecutionTemplate.DataprocParameters dataproc_parameters = 12;
     * </code>
     *
     * @return Whether the dataprocParameters field is set.
     */
    @java.lang.Override
    public boolean hasDataprocParameters() {
      return jobParametersCase_ == 12;
    }
    /**
     *
     *
     * <pre>
     * Parameters used in Dataproc JobType executions.
     * </pre>
     *
     * <code>
     * .google.cloud.notebooks.v1.ExecutionTemplate.DataprocParameters dataproc_parameters = 12;
     * </code>
     *
     * @return The dataprocParameters.
     */
    @java.lang.Override
    public com.google.cloud.notebooks.v1.ExecutionTemplate.DataprocParameters
        getDataprocParameters() {
      if (dataprocParametersBuilder_ == null) {
        if (jobParametersCase_ == 12) {
          return (com.google.cloud.notebooks.v1.ExecutionTemplate.DataprocParameters)
              jobParameters_;
        }
        return com.google.cloud.notebooks.v1.ExecutionTemplate.DataprocParameters
            .getDefaultInstance();
      } else {
        if (jobParametersCase_ == 12) {
          return dataprocParametersBuilder_.getMessage();
        }
        return com.google.cloud.notebooks.v1.ExecutionTemplate.DataprocParameters
            .getDefaultInstance();
      }
    }
    /**
     *
     *
     * <pre>
     * Parameters used in Dataproc JobType executions.
     * </pre>
     *
     * <code>
     * .google.cloud.notebooks.v1.ExecutionTemplate.DataprocParameters dataproc_parameters = 12;
     * </code>
     */
    public Builder setDataprocParameters(
        com.google.cloud.notebooks.v1.ExecutionTemplate.DataprocParameters value) {
      if (dataprocParametersBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        jobParameters_ = value;
        onChanged();
      } else {
        dataprocParametersBuilder_.setMessage(value);
      }
      jobParametersCase_ = 12;
      return this;
    }
    /**
     *
     *
     * <pre>
     * Parameters used in Dataproc JobType executions.
     * </pre>
     *
     * <code>
     * .google.cloud.notebooks.v1.ExecutionTemplate.DataprocParameters dataproc_parameters = 12;
     * </code>
     */
    public Builder setDataprocParameters(
        com.google.cloud.notebooks.v1.ExecutionTemplate.DataprocParameters.Builder
            builderForValue) {
      if (dataprocParametersBuilder_ == null) {
        jobParameters_ = builderForValue.build();
        onChanged();
      } else {
        dataprocParametersBuilder_.setMessage(builderForValue.build());
      }
      jobParametersCase_ = 12;
      return this;
    }
    /**
     *
     *
     * <pre>
     * Parameters used in Dataproc JobType executions.
     * </pre>
     *
     * <code>
     * .google.cloud.notebooks.v1.ExecutionTemplate.DataprocParameters dataproc_parameters = 12;
     * </code>
     */
    public Builder mergeDataprocParameters(
        com.google.cloud.notebooks.v1.ExecutionTemplate.DataprocParameters value) {
      if (dataprocParametersBuilder_ == null) {
        if (jobParametersCase_ == 12
            && jobParameters_
                != com.google.cloud.notebooks.v1.ExecutionTemplate.DataprocParameters
                    .getDefaultInstance()) {
          jobParameters_ =
              com.google.cloud.notebooks.v1.ExecutionTemplate.DataprocParameters.newBuilder(
                      (com.google.cloud.notebooks.v1.ExecutionTemplate.DataprocParameters)
                          jobParameters_)
                  .mergeFrom(value)
                  .buildPartial();
        } else {
          jobParameters_ = value;
        }
        onChanged();
      } else {
        if (jobParametersCase_ == 12) {
          dataprocParametersBuilder_.mergeFrom(value);
        } else {
          dataprocParametersBuilder_.setMessage(value);
        }
      }
      jobParametersCase_ = 12;
      return this;
    }
    /**
     *
     *
     * <pre>
     * Parameters used in Dataproc JobType executions.
     * </pre>
     *
     * <code>
     * .google.cloud.notebooks.v1.ExecutionTemplate.DataprocParameters dataproc_parameters = 12;
     * </code>
     */
    public Builder clearDataprocParameters() {
      if (dataprocParametersBuilder_ == null) {
        if (jobParametersCase_ == 12) {
          jobParametersCase_ = 0;
          jobParameters_ = null;
          onChanged();
        }
      } else {
        if (jobParametersCase_ == 12) {
          jobParametersCase_ = 0;
          jobParameters_ = null;
        }
        dataprocParametersBuilder_.clear();
      }
      return this;
    }
    /**
     *
     *
     * <pre>
     * Parameters used in Dataproc JobType executions.
     * </pre>
     *
     * <code>
     * .google.cloud.notebooks.v1.ExecutionTemplate.DataprocParameters dataproc_parameters = 12;
     * </code>
     */
    public com.google.cloud.notebooks.v1.ExecutionTemplate.DataprocParameters.Builder
        getDataprocParametersBuilder() {
      return getDataprocParametersFieldBuilder().getBuilder();
    }
    /**
     *
     *
     * <pre>
     * Parameters used in Dataproc JobType executions.
     * </pre>
     *
     * <code>
     * .google.cloud.notebooks.v1.ExecutionTemplate.DataprocParameters dataproc_parameters = 12;
     * </code>
     */
    @java.lang.Override
    public com.google.cloud.notebooks.v1.ExecutionTemplate.DataprocParametersOrBuilder
        getDataprocParametersOrBuilder() {
      if ((jobParametersCase_ == 12) && (dataprocParametersBuilder_ != null)) {
        return dataprocParametersBuilder_.getMessageOrBuilder();
      } else {
        if (jobParametersCase_ == 12) {
          return (com.google.cloud.notebooks.v1.ExecutionTemplate.DataprocParameters)
              jobParameters_;
        }
        return com.google.cloud.notebooks.v1.ExecutionTemplate.DataprocParameters
            .getDefaultInstance();
      }
    }
    /**
     *
     *
     * <pre>
     * Parameters used in Dataproc JobType executions.
     * </pre>
     *
     * <code>
     * .google.cloud.notebooks.v1.ExecutionTemplate.DataprocParameters dataproc_parameters = 12;
     * </code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
            com.google.cloud.notebooks.v1.ExecutionTemplate.DataprocParameters,
            com.google.cloud.notebooks.v1.ExecutionTemplate.DataprocParameters.Builder,
            com.google.cloud.notebooks.v1.ExecutionTemplate.DataprocParametersOrBuilder>
        getDataprocParametersFieldBuilder() {
      if (dataprocParametersBuilder_ == null) {
        if (!(jobParametersCase_ == 12)) {
          jobParameters_ =
              com.google.cloud.notebooks.v1.ExecutionTemplate.DataprocParameters
                  .getDefaultInstance();
        }
        dataprocParametersBuilder_ =
            new com.google.protobuf.SingleFieldBuilderV3<
                com.google.cloud.notebooks.v1.ExecutionTemplate.DataprocParameters,
                com.google.cloud.notebooks.v1.ExecutionTemplate.DataprocParameters.Builder,
                com.google.cloud.notebooks.v1.ExecutionTemplate.DataprocParametersOrBuilder>(
                (com.google.cloud.notebooks.v1.ExecutionTemplate.DataprocParameters) jobParameters_,
                getParentForChildren(),
                isClean());
        jobParameters_ = null;
      }
      jobParametersCase_ = 12;
      onChanged();
      return dataprocParametersBuilder_;
    }

    private com.google.protobuf.SingleFieldBuilderV3<
            com.google.cloud.notebooks.v1.ExecutionTemplate.VertexAIParameters,
            com.google.cloud.notebooks.v1.ExecutionTemplate.VertexAIParameters.Builder,
            com.google.cloud.notebooks.v1.ExecutionTemplate.VertexAIParametersOrBuilder>
        vertexAiParametersBuilder_;
    /**
     *
     *
     * <pre>
     * Parameters used in Vertex AI JobType executions.
     * </pre>
     *
     * <code>
     * .google.cloud.notebooks.v1.ExecutionTemplate.VertexAIParameters vertex_ai_parameters = 13;
     * </code>
     *
     * @return Whether the vertexAiParameters field is set.
     */
    @java.lang.Override
    public boolean hasVertexAiParameters() {
      return jobParametersCase_ == 13;
    }
    /**
     *
     *
     * <pre>
     * Parameters used in Vertex AI JobType executions.
     * </pre>
     *
     * <code>
     * .google.cloud.notebooks.v1.ExecutionTemplate.VertexAIParameters vertex_ai_parameters = 13;
     * </code>
     *
     * @return The vertexAiParameters.
     */
    @java.lang.Override
    public com.google.cloud.notebooks.v1.ExecutionTemplate.VertexAIParameters
        getVertexAiParameters() {
      if (vertexAiParametersBuilder_ == null) {
        if (jobParametersCase_ == 13) {
          return (com.google.cloud.notebooks.v1.ExecutionTemplate.VertexAIParameters)
              jobParameters_;
        }
        return com.google.cloud.notebooks.v1.ExecutionTemplate.VertexAIParameters
            .getDefaultInstance();
      } else {
        if (jobParametersCase_ == 13) {
          return vertexAiParametersBuilder_.getMessage();
        }
        return com.google.cloud.notebooks.v1.ExecutionTemplate.VertexAIParameters
            .getDefaultInstance();
      }
    }
    /**
     *
     *
     * <pre>
     * Parameters used in Vertex AI JobType executions.
     * </pre>
     *
     * <code>
     * .google.cloud.notebooks.v1.ExecutionTemplate.VertexAIParameters vertex_ai_parameters = 13;
     * </code>
     */
    public Builder setVertexAiParameters(
        com.google.cloud.notebooks.v1.ExecutionTemplate.VertexAIParameters value) {
      if (vertexAiParametersBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        jobParameters_ = value;
        onChanged();
      } else {
        vertexAiParametersBuilder_.setMessage(value);
      }
      jobParametersCase_ = 13;
      return this;
    }
    /**
     *
     *
     * <pre>
     * Parameters used in Vertex AI JobType executions.
     * </pre>
     *
     * <code>
     * .google.cloud.notebooks.v1.ExecutionTemplate.VertexAIParameters vertex_ai_parameters = 13;
     * </code>
     */
    public Builder setVertexAiParameters(
        com.google.cloud.notebooks.v1.ExecutionTemplate.VertexAIParameters.Builder
            builderForValue) {
      if (vertexAiParametersBuilder_ == null) {
        jobParameters_ = builderForValue.build();
        onChanged();
      } else {
        vertexAiParametersBuilder_.setMessage(builderForValue.build());
      }
      jobParametersCase_ = 13;
      return this;
    }
    /**
     *
     *
     * <pre>
     * Parameters used in Vertex AI JobType executions.
     * </pre>
     *
     * <code>
     * .google.cloud.notebooks.v1.ExecutionTemplate.VertexAIParameters vertex_ai_parameters = 13;
     * </code>
     */
    public Builder mergeVertexAiParameters(
        com.google.cloud.notebooks.v1.ExecutionTemplate.VertexAIParameters value) {
      if (vertexAiParametersBuilder_ == null) {
        if (jobParametersCase_ == 13
            && jobParameters_
                != com.google.cloud.notebooks.v1.ExecutionTemplate.VertexAIParameters
                    .getDefaultInstance()) {
          jobParameters_ =
              com.google.cloud.notebooks.v1.ExecutionTemplate.VertexAIParameters.newBuilder(
                      (com.google.cloud.notebooks.v1.ExecutionTemplate.VertexAIParameters)
                          jobParameters_)
                  .mergeFrom(value)
                  .buildPartial();
        } else {
          jobParameters_ = value;
        }
        onChanged();
      } else {
        if (jobParametersCase_ == 13) {
          vertexAiParametersBuilder_.mergeFrom(value);
        } else {
          vertexAiParametersBuilder_.setMessage(value);
        }
      }
      jobParametersCase_ = 13;
      return this;
    }
    /**
     *
     *
     * <pre>
     * Parameters used in Vertex AI JobType executions.
     * </pre>
     *
     * <code>
     * .google.cloud.notebooks.v1.ExecutionTemplate.VertexAIParameters vertex_ai_parameters = 13;
     * </code>
     */
    public Builder clearVertexAiParameters() {
      if (vertexAiParametersBuilder_ == null) {
        if (jobParametersCase_ == 13) {
          jobParametersCase_ = 0;
          jobParameters_ = null;
          onChanged();
        }
      } else {
        if (jobParametersCase_ == 13) {
          jobParametersCase_ = 0;
          jobParameters_ = null;
        }
        vertexAiParametersBuilder_.clear();
      }
      return this;
    }
    /**
     *
     *
     * <pre>
     * Parameters used in Vertex AI JobType executions.
     * </pre>
     *
     * <code>
     * .google.cloud.notebooks.v1.ExecutionTemplate.VertexAIParameters vertex_ai_parameters = 13;
     * </code>
     */
    public com.google.cloud.notebooks.v1.ExecutionTemplate.VertexAIParameters.Builder
        getVertexAiParametersBuilder() {
      return getVertexAiParametersFieldBuilder().getBuilder();
    }
    /**
     *
     *
     * <pre>
     * Parameters used in Vertex AI JobType executions.
     * </pre>
     *
     * <code>
     * .google.cloud.notebooks.v1.ExecutionTemplate.VertexAIParameters vertex_ai_parameters = 13;
     * </code>
     */
    @java.lang.Override
    public com.google.cloud.notebooks.v1.ExecutionTemplate.VertexAIParametersOrBuilder
        getVertexAiParametersOrBuilder() {
      if ((jobParametersCase_ == 13) && (vertexAiParametersBuilder_ != null)) {
        return vertexAiParametersBuilder_.getMessageOrBuilder();
      } else {
        if (jobParametersCase_ == 13) {
          return (com.google.cloud.notebooks.v1.ExecutionTemplate.VertexAIParameters)
              jobParameters_;
        }
        return com.google.cloud.notebooks.v1.ExecutionTemplate.VertexAIParameters
            .getDefaultInstance();
      }
    }
    /**
     *
     *
     * <pre>
     * Parameters used in Vertex AI JobType executions.
     * </pre>
     *
     * <code>
     * .google.cloud.notebooks.v1.ExecutionTemplate.VertexAIParameters vertex_ai_parameters = 13;
     * </code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
            com.google.cloud.notebooks.v1.ExecutionTemplate.VertexAIParameters,
            com.google.cloud.notebooks.v1.ExecutionTemplate.VertexAIParameters.Builder,
            com.google.cloud.notebooks.v1.ExecutionTemplate.VertexAIParametersOrBuilder>
        getVertexAiParametersFieldBuilder() {
      if (vertexAiParametersBuilder_ == null) {
        if (!(jobParametersCase_ == 13)) {
          jobParameters_ =
              com.google.cloud.notebooks.v1.ExecutionTemplate.VertexAIParameters
                  .getDefaultInstance();
        }
        vertexAiParametersBuilder_ =
            new com.google.protobuf.SingleFieldBuilderV3<
                com.google.cloud.notebooks.v1.ExecutionTemplate.VertexAIParameters,
                com.google.cloud.notebooks.v1.ExecutionTemplate.VertexAIParameters.Builder,
                com.google.cloud.notebooks.v1.ExecutionTemplate.VertexAIParametersOrBuilder>(
                (com.google.cloud.notebooks.v1.ExecutionTemplate.VertexAIParameters) jobParameters_,
                getParentForChildren(),
                isClean());
        jobParameters_ = null;
      }
      jobParametersCase_ = 13;
      onChanged();
      return vertexAiParametersBuilder_;
    }

    private java.lang.Object kernelSpec_ = "";
    /**
     *
     *
     * <pre>
     * Name of the kernel spec to use. This must be specified if the
     * kernel spec name on the execution target does not match the name in the
     * input notebook file.
     * </pre>
     *
     * <code>string kernel_spec = 14;</code>
     *
     * @return The kernelSpec.
     */
    public java.lang.String getKernelSpec() {
      java.lang.Object ref = kernelSpec_;
      if (!(ref instanceof java.lang.String)) {
        com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        kernelSpec_ = s;
        return s;
      } else {
        return (java.lang.String) ref;
      }
    }
    /**
     *
     *
     * <pre>
     * Name of the kernel spec to use. This must be specified if the
     * kernel spec name on the execution target does not match the name in the
     * input notebook file.
     * </pre>
     *
     * <code>string kernel_spec = 14;</code>
     *
     * @return The bytes for kernelSpec.
     */
    public com.google.protobuf.ByteString getKernelSpecBytes() {
      java.lang.Object ref = kernelSpec_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
        kernelSpec_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    /**
     *
     *
     * <pre>
     * Name of the kernel spec to use. This must be specified if the
     * kernel spec name on the execution target does not match the name in the
     * input notebook file.
     * </pre>
     *
     * <code>string kernel_spec = 14;</code>
     *
     * @param value The kernelSpec to set.
     * @return This builder for chaining.
     */
    public Builder setKernelSpec(java.lang.String value) {
      if (value == null) {
        throw new NullPointerException();
      }
      kernelSpec_ = value;
      bitField0_ |= 0x00002000;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Name of the kernel spec to use. This must be specified if the
     * kernel spec name on the execution target does not match the name in the
     * input notebook file.
     * </pre>
     *
     * <code>string kernel_spec = 14;</code>
     *
     * @return This builder for chaining.
     */
    public Builder clearKernelSpec() {
      kernelSpec_ = getDefaultInstance().getKernelSpec();
      bitField0_ = (bitField0_ & ~0x00002000);
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Name of the kernel spec to use. This must be specified if the
     * kernel spec name on the execution target does not match the name in the
     * input notebook file.
     * </pre>
     *
     * <code>string kernel_spec = 14;</code>
     *
     * @param value The bytes for kernelSpec to set.
     * @return This builder for chaining.
     */
    public Builder setKernelSpecBytes(com.google.protobuf.ByteString value) {
      if (value == null) {
        throw new NullPointerException();
      }
      checkByteStringIsUtf8(value);
      kernelSpec_ = value;
      bitField0_ |= 0x00002000;
      onChanged();
      return this;
    }

    private java.lang.Object tensorboard_ = "";
    /**
     *
     *
     * <pre>
     * The name of a Vertex AI [Tensorboard] resource to which this execution
     * will upload Tensorboard logs.
     * Format:
     * `projects/{project}/locations/{location}/tensorboards/{tensorboard}`
     * </pre>
     *
     * <code>string tensorboard = 15 [(.google.api.resource_reference) = { ... }</code>
     *
     * @return The tensorboard.
     */
    public java.lang.String getTensorboard() {
      java.lang.Object ref = tensorboard_;
      if (!(ref instanceof java.lang.String)) {
        com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        tensorboard_ = s;
        return s;
      } else {
        return (java.lang.String) ref;
      }
    }
    /**
     *
     *
     * <pre>
     * The name of a Vertex AI [Tensorboard] resource to which this execution
     * will upload Tensorboard logs.
     * Format:
     * `projects/{project}/locations/{location}/tensorboards/{tensorboard}`
     * </pre>
     *
     * <code>string tensorboard = 15 [(.google.api.resource_reference) = { ... }</code>
     *
     * @return The bytes for tensorboard.
     */
    public com.google.protobuf.ByteString getTensorboardBytes() {
      java.lang.Object ref = tensorboard_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
        tensorboard_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    /**
     *
     *
     * <pre>
     * The name of a Vertex AI [Tensorboard] resource to which this execution
     * will upload Tensorboard logs.
     * Format:
     * `projects/{project}/locations/{location}/tensorboards/{tensorboard}`
     * </pre>
     *
     * <code>string tensorboard = 15 [(.google.api.resource_reference) = { ... }</code>
     *
     * @param value The tensorboard to set.
     * @return This builder for chaining.
     */
    public Builder setTensorboard(java.lang.String value) {
      if (value == null) {
        throw new NullPointerException();
      }
      tensorboard_ = value;
      bitField0_ |= 0x00004000;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * The name of a Vertex AI [Tensorboard] resource to which this execution
     * will upload Tensorboard logs.
     * Format:
     * `projects/{project}/locations/{location}/tensorboards/{tensorboard}`
     * </pre>
     *
     * <code>string tensorboard = 15 [(.google.api.resource_reference) = { ... }</code>
     *
     * @return This builder for chaining.
     */
    public Builder clearTensorboard() {
      tensorboard_ = getDefaultInstance().getTensorboard();
      bitField0_ = (bitField0_ & ~0x00004000);
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * The name of a Vertex AI [Tensorboard] resource to which this execution
     * will upload Tensorboard logs.
     * Format:
     * `projects/{project}/locations/{location}/tensorboards/{tensorboard}`
     * </pre>
     *
     * <code>string tensorboard = 15 [(.google.api.resource_reference) = { ... }</code>
     *
     * @param value The bytes for tensorboard to set.
     * @return This builder for chaining.
     */
    public Builder setTensorboardBytes(com.google.protobuf.ByteString value) {
      if (value == null) {
        throw new NullPointerException();
      }
      checkByteStringIsUtf8(value);
      tensorboard_ = value;
      bitField0_ |= 0x00004000;
      onChanged();
      return this;
    }

    @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.cloud.notebooks.v1.ExecutionTemplate)
  }

  // @@protoc_insertion_point(class_scope:google.cloud.notebooks.v1.ExecutionTemplate)
  private static final com.google.cloud.notebooks.v1.ExecutionTemplate DEFAULT_INSTANCE;

  static {
    DEFAULT_INSTANCE = new com.google.cloud.notebooks.v1.ExecutionTemplate();
  }

  public static com.google.cloud.notebooks.v1.ExecutionTemplate getDefaultInstance() {
    return DEFAULT_INSTANCE;
  }

  private static final com.google.protobuf.Parser<ExecutionTemplate> PARSER =
      new com.google.protobuf.AbstractParser<ExecutionTemplate>() {
        @java.lang.Override
        public ExecutionTemplate parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          Builder builder = newBuilder();
          try {
            builder.mergeFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            throw e.setUnfinishedMessage(builder.buildPartial());
          } catch (com.google.protobuf.UninitializedMessageException e) {
            throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
          } catch (java.io.IOException e) {
            throw new com.google.protobuf.InvalidProtocolBufferException(e)
                .setUnfinishedMessage(builder.buildPartial());
          }
          return builder.buildPartial();
        }
      };

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

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

  @java.lang.Override
  public com.google.cloud.notebooks.v1.ExecutionTemplate getDefaultInstanceForType() {
    return DEFAULT_INSTANCE;
  }
}
