/*
 * 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/appengine/v1/version.proto

package com.google.appengine.v1;

/**
 *
 *
 * <pre>
 * Automatic scaling is based on request rate, response latencies, and other
 * application metrics.
 * </pre>
 *
 * Protobuf type {@code google.appengine.v1.AutomaticScaling}
 */
public final class AutomaticScaling extends com.google.protobuf.GeneratedMessageV3
    implements
    // @@protoc_insertion_point(message_implements:google.appengine.v1.AutomaticScaling)
    AutomaticScalingOrBuilder {
  private static final long serialVersionUID = 0L;
  // Use AutomaticScaling.newBuilder() to construct.
  private AutomaticScaling(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
    super(builder);
  }

  private AutomaticScaling() {}

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

  @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.appengine.v1.VersionProto
        .internal_static_google_appengine_v1_AutomaticScaling_descriptor;
  }

  @java.lang.Override
  protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internalGetFieldAccessorTable() {
    return com.google.appengine.v1.VersionProto
        .internal_static_google_appengine_v1_AutomaticScaling_fieldAccessorTable
        .ensureFieldAccessorsInitialized(
            com.google.appengine.v1.AutomaticScaling.class,
            com.google.appengine.v1.AutomaticScaling.Builder.class);
  }

  public static final int COOL_DOWN_PERIOD_FIELD_NUMBER = 1;
  private com.google.protobuf.Duration coolDownPeriod_;
  /**
   *
   *
   * <pre>
   * The time period that the
   * [Autoscaler](https://cloud.google.com/compute/docs/autoscaler/)
   * should wait before it starts collecting information from a new instance.
   * This prevents the autoscaler from collecting information when the instance
   * is initializing, during which the collected usage would not be reliable.
   * Only applicable in the App Engine flexible environment.
   * </pre>
   *
   * <code>.google.protobuf.Duration cool_down_period = 1;</code>
   *
   * @return Whether the coolDownPeriod field is set.
   */
  @java.lang.Override
  public boolean hasCoolDownPeriod() {
    return coolDownPeriod_ != null;
  }
  /**
   *
   *
   * <pre>
   * The time period that the
   * [Autoscaler](https://cloud.google.com/compute/docs/autoscaler/)
   * should wait before it starts collecting information from a new instance.
   * This prevents the autoscaler from collecting information when the instance
   * is initializing, during which the collected usage would not be reliable.
   * Only applicable in the App Engine flexible environment.
   * </pre>
   *
   * <code>.google.protobuf.Duration cool_down_period = 1;</code>
   *
   * @return The coolDownPeriod.
   */
  @java.lang.Override
  public com.google.protobuf.Duration getCoolDownPeriod() {
    return coolDownPeriod_ == null
        ? com.google.protobuf.Duration.getDefaultInstance()
        : coolDownPeriod_;
  }
  /**
   *
   *
   * <pre>
   * The time period that the
   * [Autoscaler](https://cloud.google.com/compute/docs/autoscaler/)
   * should wait before it starts collecting information from a new instance.
   * This prevents the autoscaler from collecting information when the instance
   * is initializing, during which the collected usage would not be reliable.
   * Only applicable in the App Engine flexible environment.
   * </pre>
   *
   * <code>.google.protobuf.Duration cool_down_period = 1;</code>
   */
  @java.lang.Override
  public com.google.protobuf.DurationOrBuilder getCoolDownPeriodOrBuilder() {
    return coolDownPeriod_ == null
        ? com.google.protobuf.Duration.getDefaultInstance()
        : coolDownPeriod_;
  }

  public static final int CPU_UTILIZATION_FIELD_NUMBER = 2;
  private com.google.appengine.v1.CpuUtilization cpuUtilization_;
  /**
   *
   *
   * <pre>
   * Target scaling by CPU usage.
   * </pre>
   *
   * <code>.google.appengine.v1.CpuUtilization cpu_utilization = 2;</code>
   *
   * @return Whether the cpuUtilization field is set.
   */
  @java.lang.Override
  public boolean hasCpuUtilization() {
    return cpuUtilization_ != null;
  }
  /**
   *
   *
   * <pre>
   * Target scaling by CPU usage.
   * </pre>
   *
   * <code>.google.appengine.v1.CpuUtilization cpu_utilization = 2;</code>
   *
   * @return The cpuUtilization.
   */
  @java.lang.Override
  public com.google.appengine.v1.CpuUtilization getCpuUtilization() {
    return cpuUtilization_ == null
        ? com.google.appengine.v1.CpuUtilization.getDefaultInstance()
        : cpuUtilization_;
  }
  /**
   *
   *
   * <pre>
   * Target scaling by CPU usage.
   * </pre>
   *
   * <code>.google.appengine.v1.CpuUtilization cpu_utilization = 2;</code>
   */
  @java.lang.Override
  public com.google.appengine.v1.CpuUtilizationOrBuilder getCpuUtilizationOrBuilder() {
    return cpuUtilization_ == null
        ? com.google.appengine.v1.CpuUtilization.getDefaultInstance()
        : cpuUtilization_;
  }

  public static final int MAX_CONCURRENT_REQUESTS_FIELD_NUMBER = 3;
  private int maxConcurrentRequests_ = 0;
  /**
   *
   *
   * <pre>
   * Number of concurrent requests an automatic scaling instance can accept
   * before the scheduler spawns a new instance.
   * Defaults to a runtime-specific value.
   * </pre>
   *
   * <code>int32 max_concurrent_requests = 3;</code>
   *
   * @return The maxConcurrentRequests.
   */
  @java.lang.Override
  public int getMaxConcurrentRequests() {
    return maxConcurrentRequests_;
  }

  public static final int MAX_IDLE_INSTANCES_FIELD_NUMBER = 4;
  private int maxIdleInstances_ = 0;
  /**
   *
   *
   * <pre>
   * Maximum number of idle instances that should be maintained for this
   * version.
   * </pre>
   *
   * <code>int32 max_idle_instances = 4;</code>
   *
   * @return The maxIdleInstances.
   */
  @java.lang.Override
  public int getMaxIdleInstances() {
    return maxIdleInstances_;
  }

  public static final int MAX_TOTAL_INSTANCES_FIELD_NUMBER = 5;
  private int maxTotalInstances_ = 0;
  /**
   *
   *
   * <pre>
   * Maximum number of instances that should be started to handle requests for
   * this version.
   * </pre>
   *
   * <code>int32 max_total_instances = 5;</code>
   *
   * @return The maxTotalInstances.
   */
  @java.lang.Override
  public int getMaxTotalInstances() {
    return maxTotalInstances_;
  }

  public static final int MAX_PENDING_LATENCY_FIELD_NUMBER = 6;
  private com.google.protobuf.Duration maxPendingLatency_;
  /**
   *
   *
   * <pre>
   * Maximum amount of time that a request should wait in the pending queue
   * before starting a new instance to handle it.
   * </pre>
   *
   * <code>.google.protobuf.Duration max_pending_latency = 6;</code>
   *
   * @return Whether the maxPendingLatency field is set.
   */
  @java.lang.Override
  public boolean hasMaxPendingLatency() {
    return maxPendingLatency_ != null;
  }
  /**
   *
   *
   * <pre>
   * Maximum amount of time that a request should wait in the pending queue
   * before starting a new instance to handle it.
   * </pre>
   *
   * <code>.google.protobuf.Duration max_pending_latency = 6;</code>
   *
   * @return The maxPendingLatency.
   */
  @java.lang.Override
  public com.google.protobuf.Duration getMaxPendingLatency() {
    return maxPendingLatency_ == null
        ? com.google.protobuf.Duration.getDefaultInstance()
        : maxPendingLatency_;
  }
  /**
   *
   *
   * <pre>
   * Maximum amount of time that a request should wait in the pending queue
   * before starting a new instance to handle it.
   * </pre>
   *
   * <code>.google.protobuf.Duration max_pending_latency = 6;</code>
   */
  @java.lang.Override
  public com.google.protobuf.DurationOrBuilder getMaxPendingLatencyOrBuilder() {
    return maxPendingLatency_ == null
        ? com.google.protobuf.Duration.getDefaultInstance()
        : maxPendingLatency_;
  }

  public static final int MIN_IDLE_INSTANCES_FIELD_NUMBER = 7;
  private int minIdleInstances_ = 0;
  /**
   *
   *
   * <pre>
   * Minimum number of idle instances that should be maintained for
   * this version. Only applicable for the default version of a service.
   * </pre>
   *
   * <code>int32 min_idle_instances = 7;</code>
   *
   * @return The minIdleInstances.
   */
  @java.lang.Override
  public int getMinIdleInstances() {
    return minIdleInstances_;
  }

  public static final int MIN_TOTAL_INSTANCES_FIELD_NUMBER = 8;
  private int minTotalInstances_ = 0;
  /**
   *
   *
   * <pre>
   * Minimum number of running instances that should be maintained for this
   * version.
   * </pre>
   *
   * <code>int32 min_total_instances = 8;</code>
   *
   * @return The minTotalInstances.
   */
  @java.lang.Override
  public int getMinTotalInstances() {
    return minTotalInstances_;
  }

  public static final int MIN_PENDING_LATENCY_FIELD_NUMBER = 9;
  private com.google.protobuf.Duration minPendingLatency_;
  /**
   *
   *
   * <pre>
   * Minimum amount of time a request should wait in the pending queue before
   * starting a new instance to handle it.
   * </pre>
   *
   * <code>.google.protobuf.Duration min_pending_latency = 9;</code>
   *
   * @return Whether the minPendingLatency field is set.
   */
  @java.lang.Override
  public boolean hasMinPendingLatency() {
    return minPendingLatency_ != null;
  }
  /**
   *
   *
   * <pre>
   * Minimum amount of time a request should wait in the pending queue before
   * starting a new instance to handle it.
   * </pre>
   *
   * <code>.google.protobuf.Duration min_pending_latency = 9;</code>
   *
   * @return The minPendingLatency.
   */
  @java.lang.Override
  public com.google.protobuf.Duration getMinPendingLatency() {
    return minPendingLatency_ == null
        ? com.google.protobuf.Duration.getDefaultInstance()
        : minPendingLatency_;
  }
  /**
   *
   *
   * <pre>
   * Minimum amount of time a request should wait in the pending queue before
   * starting a new instance to handle it.
   * </pre>
   *
   * <code>.google.protobuf.Duration min_pending_latency = 9;</code>
   */
  @java.lang.Override
  public com.google.protobuf.DurationOrBuilder getMinPendingLatencyOrBuilder() {
    return minPendingLatency_ == null
        ? com.google.protobuf.Duration.getDefaultInstance()
        : minPendingLatency_;
  }

  public static final int REQUEST_UTILIZATION_FIELD_NUMBER = 10;
  private com.google.appengine.v1.RequestUtilization requestUtilization_;
  /**
   *
   *
   * <pre>
   * Target scaling by request utilization.
   * </pre>
   *
   * <code>.google.appengine.v1.RequestUtilization request_utilization = 10;</code>
   *
   * @return Whether the requestUtilization field is set.
   */
  @java.lang.Override
  public boolean hasRequestUtilization() {
    return requestUtilization_ != null;
  }
  /**
   *
   *
   * <pre>
   * Target scaling by request utilization.
   * </pre>
   *
   * <code>.google.appengine.v1.RequestUtilization request_utilization = 10;</code>
   *
   * @return The requestUtilization.
   */
  @java.lang.Override
  public com.google.appengine.v1.RequestUtilization getRequestUtilization() {
    return requestUtilization_ == null
        ? com.google.appengine.v1.RequestUtilization.getDefaultInstance()
        : requestUtilization_;
  }
  /**
   *
   *
   * <pre>
   * Target scaling by request utilization.
   * </pre>
   *
   * <code>.google.appengine.v1.RequestUtilization request_utilization = 10;</code>
   */
  @java.lang.Override
  public com.google.appengine.v1.RequestUtilizationOrBuilder getRequestUtilizationOrBuilder() {
    return requestUtilization_ == null
        ? com.google.appengine.v1.RequestUtilization.getDefaultInstance()
        : requestUtilization_;
  }

  public static final int DISK_UTILIZATION_FIELD_NUMBER = 11;
  private com.google.appengine.v1.DiskUtilization diskUtilization_;
  /**
   *
   *
   * <pre>
   * Target scaling by disk usage.
   * </pre>
   *
   * <code>.google.appengine.v1.DiskUtilization disk_utilization = 11;</code>
   *
   * @return Whether the diskUtilization field is set.
   */
  @java.lang.Override
  public boolean hasDiskUtilization() {
    return diskUtilization_ != null;
  }
  /**
   *
   *
   * <pre>
   * Target scaling by disk usage.
   * </pre>
   *
   * <code>.google.appengine.v1.DiskUtilization disk_utilization = 11;</code>
   *
   * @return The diskUtilization.
   */
  @java.lang.Override
  public com.google.appengine.v1.DiskUtilization getDiskUtilization() {
    return diskUtilization_ == null
        ? com.google.appengine.v1.DiskUtilization.getDefaultInstance()
        : diskUtilization_;
  }
  /**
   *
   *
   * <pre>
   * Target scaling by disk usage.
   * </pre>
   *
   * <code>.google.appengine.v1.DiskUtilization disk_utilization = 11;</code>
   */
  @java.lang.Override
  public com.google.appengine.v1.DiskUtilizationOrBuilder getDiskUtilizationOrBuilder() {
    return diskUtilization_ == null
        ? com.google.appengine.v1.DiskUtilization.getDefaultInstance()
        : diskUtilization_;
  }

  public static final int NETWORK_UTILIZATION_FIELD_NUMBER = 12;
  private com.google.appengine.v1.NetworkUtilization networkUtilization_;
  /**
   *
   *
   * <pre>
   * Target scaling by network usage.
   * </pre>
   *
   * <code>.google.appengine.v1.NetworkUtilization network_utilization = 12;</code>
   *
   * @return Whether the networkUtilization field is set.
   */
  @java.lang.Override
  public boolean hasNetworkUtilization() {
    return networkUtilization_ != null;
  }
  /**
   *
   *
   * <pre>
   * Target scaling by network usage.
   * </pre>
   *
   * <code>.google.appengine.v1.NetworkUtilization network_utilization = 12;</code>
   *
   * @return The networkUtilization.
   */
  @java.lang.Override
  public com.google.appengine.v1.NetworkUtilization getNetworkUtilization() {
    return networkUtilization_ == null
        ? com.google.appengine.v1.NetworkUtilization.getDefaultInstance()
        : networkUtilization_;
  }
  /**
   *
   *
   * <pre>
   * Target scaling by network usage.
   * </pre>
   *
   * <code>.google.appengine.v1.NetworkUtilization network_utilization = 12;</code>
   */
  @java.lang.Override
  public com.google.appengine.v1.NetworkUtilizationOrBuilder getNetworkUtilizationOrBuilder() {
    return networkUtilization_ == null
        ? com.google.appengine.v1.NetworkUtilization.getDefaultInstance()
        : networkUtilization_;
  }

  public static final int STANDARD_SCHEDULER_SETTINGS_FIELD_NUMBER = 20;
  private com.google.appengine.v1.StandardSchedulerSettings standardSchedulerSettings_;
  /**
   *
   *
   * <pre>
   * Scheduler settings for standard environment.
   * </pre>
   *
   * <code>.google.appengine.v1.StandardSchedulerSettings standard_scheduler_settings = 20;</code>
   *
   * @return Whether the standardSchedulerSettings field is set.
   */
  @java.lang.Override
  public boolean hasStandardSchedulerSettings() {
    return standardSchedulerSettings_ != null;
  }
  /**
   *
   *
   * <pre>
   * Scheduler settings for standard environment.
   * </pre>
   *
   * <code>.google.appengine.v1.StandardSchedulerSettings standard_scheduler_settings = 20;</code>
   *
   * @return The standardSchedulerSettings.
   */
  @java.lang.Override
  public com.google.appengine.v1.StandardSchedulerSettings getStandardSchedulerSettings() {
    return standardSchedulerSettings_ == null
        ? com.google.appengine.v1.StandardSchedulerSettings.getDefaultInstance()
        : standardSchedulerSettings_;
  }
  /**
   *
   *
   * <pre>
   * Scheduler settings for standard environment.
   * </pre>
   *
   * <code>.google.appengine.v1.StandardSchedulerSettings standard_scheduler_settings = 20;</code>
   */
  @java.lang.Override
  public com.google.appengine.v1.StandardSchedulerSettingsOrBuilder
      getStandardSchedulerSettingsOrBuilder() {
    return standardSchedulerSettings_ == null
        ? com.google.appengine.v1.StandardSchedulerSettings.getDefaultInstance()
        : standardSchedulerSettings_;
  }

  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 (coolDownPeriod_ != null) {
      output.writeMessage(1, getCoolDownPeriod());
    }
    if (cpuUtilization_ != null) {
      output.writeMessage(2, getCpuUtilization());
    }
    if (maxConcurrentRequests_ != 0) {
      output.writeInt32(3, maxConcurrentRequests_);
    }
    if (maxIdleInstances_ != 0) {
      output.writeInt32(4, maxIdleInstances_);
    }
    if (maxTotalInstances_ != 0) {
      output.writeInt32(5, maxTotalInstances_);
    }
    if (maxPendingLatency_ != null) {
      output.writeMessage(6, getMaxPendingLatency());
    }
    if (minIdleInstances_ != 0) {
      output.writeInt32(7, minIdleInstances_);
    }
    if (minTotalInstances_ != 0) {
      output.writeInt32(8, minTotalInstances_);
    }
    if (minPendingLatency_ != null) {
      output.writeMessage(9, getMinPendingLatency());
    }
    if (requestUtilization_ != null) {
      output.writeMessage(10, getRequestUtilization());
    }
    if (diskUtilization_ != null) {
      output.writeMessage(11, getDiskUtilization());
    }
    if (networkUtilization_ != null) {
      output.writeMessage(12, getNetworkUtilization());
    }
    if (standardSchedulerSettings_ != null) {
      output.writeMessage(20, getStandardSchedulerSettings());
    }
    getUnknownFields().writeTo(output);
  }

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

    size = 0;
    if (coolDownPeriod_ != null) {
      size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getCoolDownPeriod());
    }
    if (cpuUtilization_ != null) {
      size += com.google.protobuf.CodedOutputStream.computeMessageSize(2, getCpuUtilization());
    }
    if (maxConcurrentRequests_ != 0) {
      size += com.google.protobuf.CodedOutputStream.computeInt32Size(3, maxConcurrentRequests_);
    }
    if (maxIdleInstances_ != 0) {
      size += com.google.protobuf.CodedOutputStream.computeInt32Size(4, maxIdleInstances_);
    }
    if (maxTotalInstances_ != 0) {
      size += com.google.protobuf.CodedOutputStream.computeInt32Size(5, maxTotalInstances_);
    }
    if (maxPendingLatency_ != null) {
      size += com.google.protobuf.CodedOutputStream.computeMessageSize(6, getMaxPendingLatency());
    }
    if (minIdleInstances_ != 0) {
      size += com.google.protobuf.CodedOutputStream.computeInt32Size(7, minIdleInstances_);
    }
    if (minTotalInstances_ != 0) {
      size += com.google.protobuf.CodedOutputStream.computeInt32Size(8, minTotalInstances_);
    }
    if (minPendingLatency_ != null) {
      size += com.google.protobuf.CodedOutputStream.computeMessageSize(9, getMinPendingLatency());
    }
    if (requestUtilization_ != null) {
      size += com.google.protobuf.CodedOutputStream.computeMessageSize(10, getRequestUtilization());
    }
    if (diskUtilization_ != null) {
      size += com.google.protobuf.CodedOutputStream.computeMessageSize(11, getDiskUtilization());
    }
    if (networkUtilization_ != null) {
      size += com.google.protobuf.CodedOutputStream.computeMessageSize(12, getNetworkUtilization());
    }
    if (standardSchedulerSettings_ != null) {
      size +=
          com.google.protobuf.CodedOutputStream.computeMessageSize(
              20, getStandardSchedulerSettings());
    }
    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.appengine.v1.AutomaticScaling)) {
      return super.equals(obj);
    }
    com.google.appengine.v1.AutomaticScaling other = (com.google.appengine.v1.AutomaticScaling) obj;

    if (hasCoolDownPeriod() != other.hasCoolDownPeriod()) return false;
    if (hasCoolDownPeriod()) {
      if (!getCoolDownPeriod().equals(other.getCoolDownPeriod())) return false;
    }
    if (hasCpuUtilization() != other.hasCpuUtilization()) return false;
    if (hasCpuUtilization()) {
      if (!getCpuUtilization().equals(other.getCpuUtilization())) return false;
    }
    if (getMaxConcurrentRequests() != other.getMaxConcurrentRequests()) return false;
    if (getMaxIdleInstances() != other.getMaxIdleInstances()) return false;
    if (getMaxTotalInstances() != other.getMaxTotalInstances()) return false;
    if (hasMaxPendingLatency() != other.hasMaxPendingLatency()) return false;
    if (hasMaxPendingLatency()) {
      if (!getMaxPendingLatency().equals(other.getMaxPendingLatency())) return false;
    }
    if (getMinIdleInstances() != other.getMinIdleInstances()) return false;
    if (getMinTotalInstances() != other.getMinTotalInstances()) return false;
    if (hasMinPendingLatency() != other.hasMinPendingLatency()) return false;
    if (hasMinPendingLatency()) {
      if (!getMinPendingLatency().equals(other.getMinPendingLatency())) return false;
    }
    if (hasRequestUtilization() != other.hasRequestUtilization()) return false;
    if (hasRequestUtilization()) {
      if (!getRequestUtilization().equals(other.getRequestUtilization())) return false;
    }
    if (hasDiskUtilization() != other.hasDiskUtilization()) return false;
    if (hasDiskUtilization()) {
      if (!getDiskUtilization().equals(other.getDiskUtilization())) return false;
    }
    if (hasNetworkUtilization() != other.hasNetworkUtilization()) return false;
    if (hasNetworkUtilization()) {
      if (!getNetworkUtilization().equals(other.getNetworkUtilization())) return false;
    }
    if (hasStandardSchedulerSettings() != other.hasStandardSchedulerSettings()) return false;
    if (hasStandardSchedulerSettings()) {
      if (!getStandardSchedulerSettings().equals(other.getStandardSchedulerSettings()))
        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();
    if (hasCoolDownPeriod()) {
      hash = (37 * hash) + COOL_DOWN_PERIOD_FIELD_NUMBER;
      hash = (53 * hash) + getCoolDownPeriod().hashCode();
    }
    if (hasCpuUtilization()) {
      hash = (37 * hash) + CPU_UTILIZATION_FIELD_NUMBER;
      hash = (53 * hash) + getCpuUtilization().hashCode();
    }
    hash = (37 * hash) + MAX_CONCURRENT_REQUESTS_FIELD_NUMBER;
    hash = (53 * hash) + getMaxConcurrentRequests();
    hash = (37 * hash) + MAX_IDLE_INSTANCES_FIELD_NUMBER;
    hash = (53 * hash) + getMaxIdleInstances();
    hash = (37 * hash) + MAX_TOTAL_INSTANCES_FIELD_NUMBER;
    hash = (53 * hash) + getMaxTotalInstances();
    if (hasMaxPendingLatency()) {
      hash = (37 * hash) + MAX_PENDING_LATENCY_FIELD_NUMBER;
      hash = (53 * hash) + getMaxPendingLatency().hashCode();
    }
    hash = (37 * hash) + MIN_IDLE_INSTANCES_FIELD_NUMBER;
    hash = (53 * hash) + getMinIdleInstances();
    hash = (37 * hash) + MIN_TOTAL_INSTANCES_FIELD_NUMBER;
    hash = (53 * hash) + getMinTotalInstances();
    if (hasMinPendingLatency()) {
      hash = (37 * hash) + MIN_PENDING_LATENCY_FIELD_NUMBER;
      hash = (53 * hash) + getMinPendingLatency().hashCode();
    }
    if (hasRequestUtilization()) {
      hash = (37 * hash) + REQUEST_UTILIZATION_FIELD_NUMBER;
      hash = (53 * hash) + getRequestUtilization().hashCode();
    }
    if (hasDiskUtilization()) {
      hash = (37 * hash) + DISK_UTILIZATION_FIELD_NUMBER;
      hash = (53 * hash) + getDiskUtilization().hashCode();
    }
    if (hasNetworkUtilization()) {
      hash = (37 * hash) + NETWORK_UTILIZATION_FIELD_NUMBER;
      hash = (53 * hash) + getNetworkUtilization().hashCode();
    }
    if (hasStandardSchedulerSettings()) {
      hash = (37 * hash) + STANDARD_SCHEDULER_SETTINGS_FIELD_NUMBER;
      hash = (53 * hash) + getStandardSchedulerSettings().hashCode();
    }
    hash = (29 * hash) + getUnknownFields().hashCode();
    memoizedHashCode = hash;
    return hash;
  }

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

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

  public static com.google.appengine.v1.AutomaticScaling parseFrom(
      com.google.protobuf.ByteString data)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data);
  }

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

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

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

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

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

  public static com.google.appengine.v1.AutomaticScaling 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.appengine.v1.AutomaticScaling 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>
   * Automatic scaling is based on request rate, response latencies, and other
   * application metrics.
   * </pre>
   *
   * Protobuf type {@code google.appengine.v1.AutomaticScaling}
   */
  public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder>
      implements
      // @@protoc_insertion_point(builder_implements:google.appengine.v1.AutomaticScaling)
      com.google.appengine.v1.AutomaticScalingOrBuilder {
    public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
      return com.google.appengine.v1.VersionProto
          .internal_static_google_appengine_v1_AutomaticScaling_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.appengine.v1.VersionProto
          .internal_static_google_appengine_v1_AutomaticScaling_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.appengine.v1.AutomaticScaling.class,
              com.google.appengine.v1.AutomaticScaling.Builder.class);
    }

    // Construct using com.google.appengine.v1.AutomaticScaling.newBuilder()
    private Builder() {}

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

    @java.lang.Override
    public Builder clear() {
      super.clear();
      bitField0_ = 0;
      coolDownPeriod_ = null;
      if (coolDownPeriodBuilder_ != null) {
        coolDownPeriodBuilder_.dispose();
        coolDownPeriodBuilder_ = null;
      }
      cpuUtilization_ = null;
      if (cpuUtilizationBuilder_ != null) {
        cpuUtilizationBuilder_.dispose();
        cpuUtilizationBuilder_ = null;
      }
      maxConcurrentRequests_ = 0;
      maxIdleInstances_ = 0;
      maxTotalInstances_ = 0;
      maxPendingLatency_ = null;
      if (maxPendingLatencyBuilder_ != null) {
        maxPendingLatencyBuilder_.dispose();
        maxPendingLatencyBuilder_ = null;
      }
      minIdleInstances_ = 0;
      minTotalInstances_ = 0;
      minPendingLatency_ = null;
      if (minPendingLatencyBuilder_ != null) {
        minPendingLatencyBuilder_.dispose();
        minPendingLatencyBuilder_ = null;
      }
      requestUtilization_ = null;
      if (requestUtilizationBuilder_ != null) {
        requestUtilizationBuilder_.dispose();
        requestUtilizationBuilder_ = null;
      }
      diskUtilization_ = null;
      if (diskUtilizationBuilder_ != null) {
        diskUtilizationBuilder_.dispose();
        diskUtilizationBuilder_ = null;
      }
      networkUtilization_ = null;
      if (networkUtilizationBuilder_ != null) {
        networkUtilizationBuilder_.dispose();
        networkUtilizationBuilder_ = null;
      }
      standardSchedulerSettings_ = null;
      if (standardSchedulerSettingsBuilder_ != null) {
        standardSchedulerSettingsBuilder_.dispose();
        standardSchedulerSettingsBuilder_ = null;
      }
      return this;
    }

    @java.lang.Override
    public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
      return com.google.appengine.v1.VersionProto
          .internal_static_google_appengine_v1_AutomaticScaling_descriptor;
    }

    @java.lang.Override
    public com.google.appengine.v1.AutomaticScaling getDefaultInstanceForType() {
      return com.google.appengine.v1.AutomaticScaling.getDefaultInstance();
    }

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

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

    private void buildPartial0(com.google.appengine.v1.AutomaticScaling result) {
      int from_bitField0_ = bitField0_;
      if (((from_bitField0_ & 0x00000001) != 0)) {
        result.coolDownPeriod_ =
            coolDownPeriodBuilder_ == null ? coolDownPeriod_ : coolDownPeriodBuilder_.build();
      }
      if (((from_bitField0_ & 0x00000002) != 0)) {
        result.cpuUtilization_ =
            cpuUtilizationBuilder_ == null ? cpuUtilization_ : cpuUtilizationBuilder_.build();
      }
      if (((from_bitField0_ & 0x00000004) != 0)) {
        result.maxConcurrentRequests_ = maxConcurrentRequests_;
      }
      if (((from_bitField0_ & 0x00000008) != 0)) {
        result.maxIdleInstances_ = maxIdleInstances_;
      }
      if (((from_bitField0_ & 0x00000010) != 0)) {
        result.maxTotalInstances_ = maxTotalInstances_;
      }
      if (((from_bitField0_ & 0x00000020) != 0)) {
        result.maxPendingLatency_ =
            maxPendingLatencyBuilder_ == null
                ? maxPendingLatency_
                : maxPendingLatencyBuilder_.build();
      }
      if (((from_bitField0_ & 0x00000040) != 0)) {
        result.minIdleInstances_ = minIdleInstances_;
      }
      if (((from_bitField0_ & 0x00000080) != 0)) {
        result.minTotalInstances_ = minTotalInstances_;
      }
      if (((from_bitField0_ & 0x00000100) != 0)) {
        result.minPendingLatency_ =
            minPendingLatencyBuilder_ == null
                ? minPendingLatency_
                : minPendingLatencyBuilder_.build();
      }
      if (((from_bitField0_ & 0x00000200) != 0)) {
        result.requestUtilization_ =
            requestUtilizationBuilder_ == null
                ? requestUtilization_
                : requestUtilizationBuilder_.build();
      }
      if (((from_bitField0_ & 0x00000400) != 0)) {
        result.diskUtilization_ =
            diskUtilizationBuilder_ == null ? diskUtilization_ : diskUtilizationBuilder_.build();
      }
      if (((from_bitField0_ & 0x00000800) != 0)) {
        result.networkUtilization_ =
            networkUtilizationBuilder_ == null
                ? networkUtilization_
                : networkUtilizationBuilder_.build();
      }
      if (((from_bitField0_ & 0x00001000) != 0)) {
        result.standardSchedulerSettings_ =
            standardSchedulerSettingsBuilder_ == null
                ? standardSchedulerSettings_
                : standardSchedulerSettingsBuilder_.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.appengine.v1.AutomaticScaling) {
        return mergeFrom((com.google.appengine.v1.AutomaticScaling) other);
      } else {
        super.mergeFrom(other);
        return this;
      }
    }

    public Builder mergeFrom(com.google.appengine.v1.AutomaticScaling other) {
      if (other == com.google.appengine.v1.AutomaticScaling.getDefaultInstance()) return this;
      if (other.hasCoolDownPeriod()) {
        mergeCoolDownPeriod(other.getCoolDownPeriod());
      }
      if (other.hasCpuUtilization()) {
        mergeCpuUtilization(other.getCpuUtilization());
      }
      if (other.getMaxConcurrentRequests() != 0) {
        setMaxConcurrentRequests(other.getMaxConcurrentRequests());
      }
      if (other.getMaxIdleInstances() != 0) {
        setMaxIdleInstances(other.getMaxIdleInstances());
      }
      if (other.getMaxTotalInstances() != 0) {
        setMaxTotalInstances(other.getMaxTotalInstances());
      }
      if (other.hasMaxPendingLatency()) {
        mergeMaxPendingLatency(other.getMaxPendingLatency());
      }
      if (other.getMinIdleInstances() != 0) {
        setMinIdleInstances(other.getMinIdleInstances());
      }
      if (other.getMinTotalInstances() != 0) {
        setMinTotalInstances(other.getMinTotalInstances());
      }
      if (other.hasMinPendingLatency()) {
        mergeMinPendingLatency(other.getMinPendingLatency());
      }
      if (other.hasRequestUtilization()) {
        mergeRequestUtilization(other.getRequestUtilization());
      }
      if (other.hasDiskUtilization()) {
        mergeDiskUtilization(other.getDiskUtilization());
      }
      if (other.hasNetworkUtilization()) {
        mergeNetworkUtilization(other.getNetworkUtilization());
      }
      if (other.hasStandardSchedulerSettings()) {
        mergeStandardSchedulerSettings(other.getStandardSchedulerSettings());
      }
      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:
              {
                input.readMessage(getCoolDownPeriodFieldBuilder().getBuilder(), extensionRegistry);
                bitField0_ |= 0x00000001;
                break;
              } // case 10
            case 18:
              {
                input.readMessage(getCpuUtilizationFieldBuilder().getBuilder(), extensionRegistry);
                bitField0_ |= 0x00000002;
                break;
              } // case 18
            case 24:
              {
                maxConcurrentRequests_ = input.readInt32();
                bitField0_ |= 0x00000004;
                break;
              } // case 24
            case 32:
              {
                maxIdleInstances_ = input.readInt32();
                bitField0_ |= 0x00000008;
                break;
              } // case 32
            case 40:
              {
                maxTotalInstances_ = input.readInt32();
                bitField0_ |= 0x00000010;
                break;
              } // case 40
            case 50:
              {
                input.readMessage(
                    getMaxPendingLatencyFieldBuilder().getBuilder(), extensionRegistry);
                bitField0_ |= 0x00000020;
                break;
              } // case 50
            case 56:
              {
                minIdleInstances_ = input.readInt32();
                bitField0_ |= 0x00000040;
                break;
              } // case 56
            case 64:
              {
                minTotalInstances_ = input.readInt32();
                bitField0_ |= 0x00000080;
                break;
              } // case 64
            case 74:
              {
                input.readMessage(
                    getMinPendingLatencyFieldBuilder().getBuilder(), extensionRegistry);
                bitField0_ |= 0x00000100;
                break;
              } // case 74
            case 82:
              {
                input.readMessage(
                    getRequestUtilizationFieldBuilder().getBuilder(), extensionRegistry);
                bitField0_ |= 0x00000200;
                break;
              } // case 82
            case 90:
              {
                input.readMessage(getDiskUtilizationFieldBuilder().getBuilder(), extensionRegistry);
                bitField0_ |= 0x00000400;
                break;
              } // case 90
            case 98:
              {
                input.readMessage(
                    getNetworkUtilizationFieldBuilder().getBuilder(), extensionRegistry);
                bitField0_ |= 0x00000800;
                break;
              } // case 98
            case 162:
              {
                input.readMessage(
                    getStandardSchedulerSettingsFieldBuilder().getBuilder(), extensionRegistry);
                bitField0_ |= 0x00001000;
                break;
              } // case 162
            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 com.google.protobuf.Duration coolDownPeriod_;
    private com.google.protobuf.SingleFieldBuilderV3<
            com.google.protobuf.Duration,
            com.google.protobuf.Duration.Builder,
            com.google.protobuf.DurationOrBuilder>
        coolDownPeriodBuilder_;
    /**
     *
     *
     * <pre>
     * The time period that the
     * [Autoscaler](https://cloud.google.com/compute/docs/autoscaler/)
     * should wait before it starts collecting information from a new instance.
     * This prevents the autoscaler from collecting information when the instance
     * is initializing, during which the collected usage would not be reliable.
     * Only applicable in the App Engine flexible environment.
     * </pre>
     *
     * <code>.google.protobuf.Duration cool_down_period = 1;</code>
     *
     * @return Whether the coolDownPeriod field is set.
     */
    public boolean hasCoolDownPeriod() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     *
     *
     * <pre>
     * The time period that the
     * [Autoscaler](https://cloud.google.com/compute/docs/autoscaler/)
     * should wait before it starts collecting information from a new instance.
     * This prevents the autoscaler from collecting information when the instance
     * is initializing, during which the collected usage would not be reliable.
     * Only applicable in the App Engine flexible environment.
     * </pre>
     *
     * <code>.google.protobuf.Duration cool_down_period = 1;</code>
     *
     * @return The coolDownPeriod.
     */
    public com.google.protobuf.Duration getCoolDownPeriod() {
      if (coolDownPeriodBuilder_ == null) {
        return coolDownPeriod_ == null
            ? com.google.protobuf.Duration.getDefaultInstance()
            : coolDownPeriod_;
      } else {
        return coolDownPeriodBuilder_.getMessage();
      }
    }
    /**
     *
     *
     * <pre>
     * The time period that the
     * [Autoscaler](https://cloud.google.com/compute/docs/autoscaler/)
     * should wait before it starts collecting information from a new instance.
     * This prevents the autoscaler from collecting information when the instance
     * is initializing, during which the collected usage would not be reliable.
     * Only applicable in the App Engine flexible environment.
     * </pre>
     *
     * <code>.google.protobuf.Duration cool_down_period = 1;</code>
     */
    public Builder setCoolDownPeriod(com.google.protobuf.Duration value) {
      if (coolDownPeriodBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        coolDownPeriod_ = value;
      } else {
        coolDownPeriodBuilder_.setMessage(value);
      }
      bitField0_ |= 0x00000001;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * The time period that the
     * [Autoscaler](https://cloud.google.com/compute/docs/autoscaler/)
     * should wait before it starts collecting information from a new instance.
     * This prevents the autoscaler from collecting information when the instance
     * is initializing, during which the collected usage would not be reliable.
     * Only applicable in the App Engine flexible environment.
     * </pre>
     *
     * <code>.google.protobuf.Duration cool_down_period = 1;</code>
     */
    public Builder setCoolDownPeriod(com.google.protobuf.Duration.Builder builderForValue) {
      if (coolDownPeriodBuilder_ == null) {
        coolDownPeriod_ = builderForValue.build();
      } else {
        coolDownPeriodBuilder_.setMessage(builderForValue.build());
      }
      bitField0_ |= 0x00000001;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * The time period that the
     * [Autoscaler](https://cloud.google.com/compute/docs/autoscaler/)
     * should wait before it starts collecting information from a new instance.
     * This prevents the autoscaler from collecting information when the instance
     * is initializing, during which the collected usage would not be reliable.
     * Only applicable in the App Engine flexible environment.
     * </pre>
     *
     * <code>.google.protobuf.Duration cool_down_period = 1;</code>
     */
    public Builder mergeCoolDownPeriod(com.google.protobuf.Duration value) {
      if (coolDownPeriodBuilder_ == null) {
        if (((bitField0_ & 0x00000001) != 0)
            && coolDownPeriod_ != null
            && coolDownPeriod_ != com.google.protobuf.Duration.getDefaultInstance()) {
          getCoolDownPeriodBuilder().mergeFrom(value);
        } else {
          coolDownPeriod_ = value;
        }
      } else {
        coolDownPeriodBuilder_.mergeFrom(value);
      }
      bitField0_ |= 0x00000001;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * The time period that the
     * [Autoscaler](https://cloud.google.com/compute/docs/autoscaler/)
     * should wait before it starts collecting information from a new instance.
     * This prevents the autoscaler from collecting information when the instance
     * is initializing, during which the collected usage would not be reliable.
     * Only applicable in the App Engine flexible environment.
     * </pre>
     *
     * <code>.google.protobuf.Duration cool_down_period = 1;</code>
     */
    public Builder clearCoolDownPeriod() {
      bitField0_ = (bitField0_ & ~0x00000001);
      coolDownPeriod_ = null;
      if (coolDownPeriodBuilder_ != null) {
        coolDownPeriodBuilder_.dispose();
        coolDownPeriodBuilder_ = null;
      }
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * The time period that the
     * [Autoscaler](https://cloud.google.com/compute/docs/autoscaler/)
     * should wait before it starts collecting information from a new instance.
     * This prevents the autoscaler from collecting information when the instance
     * is initializing, during which the collected usage would not be reliable.
     * Only applicable in the App Engine flexible environment.
     * </pre>
     *
     * <code>.google.protobuf.Duration cool_down_period = 1;</code>
     */
    public com.google.protobuf.Duration.Builder getCoolDownPeriodBuilder() {
      bitField0_ |= 0x00000001;
      onChanged();
      return getCoolDownPeriodFieldBuilder().getBuilder();
    }
    /**
     *
     *
     * <pre>
     * The time period that the
     * [Autoscaler](https://cloud.google.com/compute/docs/autoscaler/)
     * should wait before it starts collecting information from a new instance.
     * This prevents the autoscaler from collecting information when the instance
     * is initializing, during which the collected usage would not be reliable.
     * Only applicable in the App Engine flexible environment.
     * </pre>
     *
     * <code>.google.protobuf.Duration cool_down_period = 1;</code>
     */
    public com.google.protobuf.DurationOrBuilder getCoolDownPeriodOrBuilder() {
      if (coolDownPeriodBuilder_ != null) {
        return coolDownPeriodBuilder_.getMessageOrBuilder();
      } else {
        return coolDownPeriod_ == null
            ? com.google.protobuf.Duration.getDefaultInstance()
            : coolDownPeriod_;
      }
    }
    /**
     *
     *
     * <pre>
     * The time period that the
     * [Autoscaler](https://cloud.google.com/compute/docs/autoscaler/)
     * should wait before it starts collecting information from a new instance.
     * This prevents the autoscaler from collecting information when the instance
     * is initializing, during which the collected usage would not be reliable.
     * Only applicable in the App Engine flexible environment.
     * </pre>
     *
     * <code>.google.protobuf.Duration cool_down_period = 1;</code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
            com.google.protobuf.Duration,
            com.google.protobuf.Duration.Builder,
            com.google.protobuf.DurationOrBuilder>
        getCoolDownPeriodFieldBuilder() {
      if (coolDownPeriodBuilder_ == null) {
        coolDownPeriodBuilder_ =
            new com.google.protobuf.SingleFieldBuilderV3<
                com.google.protobuf.Duration,
                com.google.protobuf.Duration.Builder,
                com.google.protobuf.DurationOrBuilder>(
                getCoolDownPeriod(), getParentForChildren(), isClean());
        coolDownPeriod_ = null;
      }
      return coolDownPeriodBuilder_;
    }

    private com.google.appengine.v1.CpuUtilization cpuUtilization_;
    private com.google.protobuf.SingleFieldBuilderV3<
            com.google.appengine.v1.CpuUtilization,
            com.google.appengine.v1.CpuUtilization.Builder,
            com.google.appengine.v1.CpuUtilizationOrBuilder>
        cpuUtilizationBuilder_;
    /**
     *
     *
     * <pre>
     * Target scaling by CPU usage.
     * </pre>
     *
     * <code>.google.appengine.v1.CpuUtilization cpu_utilization = 2;</code>
     *
     * @return Whether the cpuUtilization field is set.
     */
    public boolean hasCpuUtilization() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     *
     *
     * <pre>
     * Target scaling by CPU usage.
     * </pre>
     *
     * <code>.google.appengine.v1.CpuUtilization cpu_utilization = 2;</code>
     *
     * @return The cpuUtilization.
     */
    public com.google.appengine.v1.CpuUtilization getCpuUtilization() {
      if (cpuUtilizationBuilder_ == null) {
        return cpuUtilization_ == null
            ? com.google.appengine.v1.CpuUtilization.getDefaultInstance()
            : cpuUtilization_;
      } else {
        return cpuUtilizationBuilder_.getMessage();
      }
    }
    /**
     *
     *
     * <pre>
     * Target scaling by CPU usage.
     * </pre>
     *
     * <code>.google.appengine.v1.CpuUtilization cpu_utilization = 2;</code>
     */
    public Builder setCpuUtilization(com.google.appengine.v1.CpuUtilization value) {
      if (cpuUtilizationBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        cpuUtilization_ = value;
      } else {
        cpuUtilizationBuilder_.setMessage(value);
      }
      bitField0_ |= 0x00000002;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Target scaling by CPU usage.
     * </pre>
     *
     * <code>.google.appengine.v1.CpuUtilization cpu_utilization = 2;</code>
     */
    public Builder setCpuUtilization(
        com.google.appengine.v1.CpuUtilization.Builder builderForValue) {
      if (cpuUtilizationBuilder_ == null) {
        cpuUtilization_ = builderForValue.build();
      } else {
        cpuUtilizationBuilder_.setMessage(builderForValue.build());
      }
      bitField0_ |= 0x00000002;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Target scaling by CPU usage.
     * </pre>
     *
     * <code>.google.appengine.v1.CpuUtilization cpu_utilization = 2;</code>
     */
    public Builder mergeCpuUtilization(com.google.appengine.v1.CpuUtilization value) {
      if (cpuUtilizationBuilder_ == null) {
        if (((bitField0_ & 0x00000002) != 0)
            && cpuUtilization_ != null
            && cpuUtilization_ != com.google.appengine.v1.CpuUtilization.getDefaultInstance()) {
          getCpuUtilizationBuilder().mergeFrom(value);
        } else {
          cpuUtilization_ = value;
        }
      } else {
        cpuUtilizationBuilder_.mergeFrom(value);
      }
      bitField0_ |= 0x00000002;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Target scaling by CPU usage.
     * </pre>
     *
     * <code>.google.appengine.v1.CpuUtilization cpu_utilization = 2;</code>
     */
    public Builder clearCpuUtilization() {
      bitField0_ = (bitField0_ & ~0x00000002);
      cpuUtilization_ = null;
      if (cpuUtilizationBuilder_ != null) {
        cpuUtilizationBuilder_.dispose();
        cpuUtilizationBuilder_ = null;
      }
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Target scaling by CPU usage.
     * </pre>
     *
     * <code>.google.appengine.v1.CpuUtilization cpu_utilization = 2;</code>
     */
    public com.google.appengine.v1.CpuUtilization.Builder getCpuUtilizationBuilder() {
      bitField0_ |= 0x00000002;
      onChanged();
      return getCpuUtilizationFieldBuilder().getBuilder();
    }
    /**
     *
     *
     * <pre>
     * Target scaling by CPU usage.
     * </pre>
     *
     * <code>.google.appengine.v1.CpuUtilization cpu_utilization = 2;</code>
     */
    public com.google.appengine.v1.CpuUtilizationOrBuilder getCpuUtilizationOrBuilder() {
      if (cpuUtilizationBuilder_ != null) {
        return cpuUtilizationBuilder_.getMessageOrBuilder();
      } else {
        return cpuUtilization_ == null
            ? com.google.appengine.v1.CpuUtilization.getDefaultInstance()
            : cpuUtilization_;
      }
    }
    /**
     *
     *
     * <pre>
     * Target scaling by CPU usage.
     * </pre>
     *
     * <code>.google.appengine.v1.CpuUtilization cpu_utilization = 2;</code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
            com.google.appengine.v1.CpuUtilization,
            com.google.appengine.v1.CpuUtilization.Builder,
            com.google.appengine.v1.CpuUtilizationOrBuilder>
        getCpuUtilizationFieldBuilder() {
      if (cpuUtilizationBuilder_ == null) {
        cpuUtilizationBuilder_ =
            new com.google.protobuf.SingleFieldBuilderV3<
                com.google.appengine.v1.CpuUtilization,
                com.google.appengine.v1.CpuUtilization.Builder,
                com.google.appengine.v1.CpuUtilizationOrBuilder>(
                getCpuUtilization(), getParentForChildren(), isClean());
        cpuUtilization_ = null;
      }
      return cpuUtilizationBuilder_;
    }

    private int maxConcurrentRequests_;
    /**
     *
     *
     * <pre>
     * Number of concurrent requests an automatic scaling instance can accept
     * before the scheduler spawns a new instance.
     * Defaults to a runtime-specific value.
     * </pre>
     *
     * <code>int32 max_concurrent_requests = 3;</code>
     *
     * @return The maxConcurrentRequests.
     */
    @java.lang.Override
    public int getMaxConcurrentRequests() {
      return maxConcurrentRequests_;
    }
    /**
     *
     *
     * <pre>
     * Number of concurrent requests an automatic scaling instance can accept
     * before the scheduler spawns a new instance.
     * Defaults to a runtime-specific value.
     * </pre>
     *
     * <code>int32 max_concurrent_requests = 3;</code>
     *
     * @param value The maxConcurrentRequests to set.
     * @return This builder for chaining.
     */
    public Builder setMaxConcurrentRequests(int value) {

      maxConcurrentRequests_ = value;
      bitField0_ |= 0x00000004;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Number of concurrent requests an automatic scaling instance can accept
     * before the scheduler spawns a new instance.
     * Defaults to a runtime-specific value.
     * </pre>
     *
     * <code>int32 max_concurrent_requests = 3;</code>
     *
     * @return This builder for chaining.
     */
    public Builder clearMaxConcurrentRequests() {
      bitField0_ = (bitField0_ & ~0x00000004);
      maxConcurrentRequests_ = 0;
      onChanged();
      return this;
    }

    private int maxIdleInstances_;
    /**
     *
     *
     * <pre>
     * Maximum number of idle instances that should be maintained for this
     * version.
     * </pre>
     *
     * <code>int32 max_idle_instances = 4;</code>
     *
     * @return The maxIdleInstances.
     */
    @java.lang.Override
    public int getMaxIdleInstances() {
      return maxIdleInstances_;
    }
    /**
     *
     *
     * <pre>
     * Maximum number of idle instances that should be maintained for this
     * version.
     * </pre>
     *
     * <code>int32 max_idle_instances = 4;</code>
     *
     * @param value The maxIdleInstances to set.
     * @return This builder for chaining.
     */
    public Builder setMaxIdleInstances(int value) {

      maxIdleInstances_ = value;
      bitField0_ |= 0x00000008;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Maximum number of idle instances that should be maintained for this
     * version.
     * </pre>
     *
     * <code>int32 max_idle_instances = 4;</code>
     *
     * @return This builder for chaining.
     */
    public Builder clearMaxIdleInstances() {
      bitField0_ = (bitField0_ & ~0x00000008);
      maxIdleInstances_ = 0;
      onChanged();
      return this;
    }

    private int maxTotalInstances_;
    /**
     *
     *
     * <pre>
     * Maximum number of instances that should be started to handle requests for
     * this version.
     * </pre>
     *
     * <code>int32 max_total_instances = 5;</code>
     *
     * @return The maxTotalInstances.
     */
    @java.lang.Override
    public int getMaxTotalInstances() {
      return maxTotalInstances_;
    }
    /**
     *
     *
     * <pre>
     * Maximum number of instances that should be started to handle requests for
     * this version.
     * </pre>
     *
     * <code>int32 max_total_instances = 5;</code>
     *
     * @param value The maxTotalInstances to set.
     * @return This builder for chaining.
     */
    public Builder setMaxTotalInstances(int value) {

      maxTotalInstances_ = value;
      bitField0_ |= 0x00000010;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Maximum number of instances that should be started to handle requests for
     * this version.
     * </pre>
     *
     * <code>int32 max_total_instances = 5;</code>
     *
     * @return This builder for chaining.
     */
    public Builder clearMaxTotalInstances() {
      bitField0_ = (bitField0_ & ~0x00000010);
      maxTotalInstances_ = 0;
      onChanged();
      return this;
    }

    private com.google.protobuf.Duration maxPendingLatency_;
    private com.google.protobuf.SingleFieldBuilderV3<
            com.google.protobuf.Duration,
            com.google.protobuf.Duration.Builder,
            com.google.protobuf.DurationOrBuilder>
        maxPendingLatencyBuilder_;
    /**
     *
     *
     * <pre>
     * Maximum amount of time that a request should wait in the pending queue
     * before starting a new instance to handle it.
     * </pre>
     *
     * <code>.google.protobuf.Duration max_pending_latency = 6;</code>
     *
     * @return Whether the maxPendingLatency field is set.
     */
    public boolean hasMaxPendingLatency() {
      return ((bitField0_ & 0x00000020) != 0);
    }
    /**
     *
     *
     * <pre>
     * Maximum amount of time that a request should wait in the pending queue
     * before starting a new instance to handle it.
     * </pre>
     *
     * <code>.google.protobuf.Duration max_pending_latency = 6;</code>
     *
     * @return The maxPendingLatency.
     */
    public com.google.protobuf.Duration getMaxPendingLatency() {
      if (maxPendingLatencyBuilder_ == null) {
        return maxPendingLatency_ == null
            ? com.google.protobuf.Duration.getDefaultInstance()
            : maxPendingLatency_;
      } else {
        return maxPendingLatencyBuilder_.getMessage();
      }
    }
    /**
     *
     *
     * <pre>
     * Maximum amount of time that a request should wait in the pending queue
     * before starting a new instance to handle it.
     * </pre>
     *
     * <code>.google.protobuf.Duration max_pending_latency = 6;</code>
     */
    public Builder setMaxPendingLatency(com.google.protobuf.Duration value) {
      if (maxPendingLatencyBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        maxPendingLatency_ = value;
      } else {
        maxPendingLatencyBuilder_.setMessage(value);
      }
      bitField0_ |= 0x00000020;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Maximum amount of time that a request should wait in the pending queue
     * before starting a new instance to handle it.
     * </pre>
     *
     * <code>.google.protobuf.Duration max_pending_latency = 6;</code>
     */
    public Builder setMaxPendingLatency(com.google.protobuf.Duration.Builder builderForValue) {
      if (maxPendingLatencyBuilder_ == null) {
        maxPendingLatency_ = builderForValue.build();
      } else {
        maxPendingLatencyBuilder_.setMessage(builderForValue.build());
      }
      bitField0_ |= 0x00000020;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Maximum amount of time that a request should wait in the pending queue
     * before starting a new instance to handle it.
     * </pre>
     *
     * <code>.google.protobuf.Duration max_pending_latency = 6;</code>
     */
    public Builder mergeMaxPendingLatency(com.google.protobuf.Duration value) {
      if (maxPendingLatencyBuilder_ == null) {
        if (((bitField0_ & 0x00000020) != 0)
            && maxPendingLatency_ != null
            && maxPendingLatency_ != com.google.protobuf.Duration.getDefaultInstance()) {
          getMaxPendingLatencyBuilder().mergeFrom(value);
        } else {
          maxPendingLatency_ = value;
        }
      } else {
        maxPendingLatencyBuilder_.mergeFrom(value);
      }
      bitField0_ |= 0x00000020;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Maximum amount of time that a request should wait in the pending queue
     * before starting a new instance to handle it.
     * </pre>
     *
     * <code>.google.protobuf.Duration max_pending_latency = 6;</code>
     */
    public Builder clearMaxPendingLatency() {
      bitField0_ = (bitField0_ & ~0x00000020);
      maxPendingLatency_ = null;
      if (maxPendingLatencyBuilder_ != null) {
        maxPendingLatencyBuilder_.dispose();
        maxPendingLatencyBuilder_ = null;
      }
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Maximum amount of time that a request should wait in the pending queue
     * before starting a new instance to handle it.
     * </pre>
     *
     * <code>.google.protobuf.Duration max_pending_latency = 6;</code>
     */
    public com.google.protobuf.Duration.Builder getMaxPendingLatencyBuilder() {
      bitField0_ |= 0x00000020;
      onChanged();
      return getMaxPendingLatencyFieldBuilder().getBuilder();
    }
    /**
     *
     *
     * <pre>
     * Maximum amount of time that a request should wait in the pending queue
     * before starting a new instance to handle it.
     * </pre>
     *
     * <code>.google.protobuf.Duration max_pending_latency = 6;</code>
     */
    public com.google.protobuf.DurationOrBuilder getMaxPendingLatencyOrBuilder() {
      if (maxPendingLatencyBuilder_ != null) {
        return maxPendingLatencyBuilder_.getMessageOrBuilder();
      } else {
        return maxPendingLatency_ == null
            ? com.google.protobuf.Duration.getDefaultInstance()
            : maxPendingLatency_;
      }
    }
    /**
     *
     *
     * <pre>
     * Maximum amount of time that a request should wait in the pending queue
     * before starting a new instance to handle it.
     * </pre>
     *
     * <code>.google.protobuf.Duration max_pending_latency = 6;</code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
            com.google.protobuf.Duration,
            com.google.protobuf.Duration.Builder,
            com.google.protobuf.DurationOrBuilder>
        getMaxPendingLatencyFieldBuilder() {
      if (maxPendingLatencyBuilder_ == null) {
        maxPendingLatencyBuilder_ =
            new com.google.protobuf.SingleFieldBuilderV3<
                com.google.protobuf.Duration,
                com.google.protobuf.Duration.Builder,
                com.google.protobuf.DurationOrBuilder>(
                getMaxPendingLatency(), getParentForChildren(), isClean());
        maxPendingLatency_ = null;
      }
      return maxPendingLatencyBuilder_;
    }

    private int minIdleInstances_;
    /**
     *
     *
     * <pre>
     * Minimum number of idle instances that should be maintained for
     * this version. Only applicable for the default version of a service.
     * </pre>
     *
     * <code>int32 min_idle_instances = 7;</code>
     *
     * @return The minIdleInstances.
     */
    @java.lang.Override
    public int getMinIdleInstances() {
      return minIdleInstances_;
    }
    /**
     *
     *
     * <pre>
     * Minimum number of idle instances that should be maintained for
     * this version. Only applicable for the default version of a service.
     * </pre>
     *
     * <code>int32 min_idle_instances = 7;</code>
     *
     * @param value The minIdleInstances to set.
     * @return This builder for chaining.
     */
    public Builder setMinIdleInstances(int value) {

      minIdleInstances_ = value;
      bitField0_ |= 0x00000040;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Minimum number of idle instances that should be maintained for
     * this version. Only applicable for the default version of a service.
     * </pre>
     *
     * <code>int32 min_idle_instances = 7;</code>
     *
     * @return This builder for chaining.
     */
    public Builder clearMinIdleInstances() {
      bitField0_ = (bitField0_ & ~0x00000040);
      minIdleInstances_ = 0;
      onChanged();
      return this;
    }

    private int minTotalInstances_;
    /**
     *
     *
     * <pre>
     * Minimum number of running instances that should be maintained for this
     * version.
     * </pre>
     *
     * <code>int32 min_total_instances = 8;</code>
     *
     * @return The minTotalInstances.
     */
    @java.lang.Override
    public int getMinTotalInstances() {
      return minTotalInstances_;
    }
    /**
     *
     *
     * <pre>
     * Minimum number of running instances that should be maintained for this
     * version.
     * </pre>
     *
     * <code>int32 min_total_instances = 8;</code>
     *
     * @param value The minTotalInstances to set.
     * @return This builder for chaining.
     */
    public Builder setMinTotalInstances(int value) {

      minTotalInstances_ = value;
      bitField0_ |= 0x00000080;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Minimum number of running instances that should be maintained for this
     * version.
     * </pre>
     *
     * <code>int32 min_total_instances = 8;</code>
     *
     * @return This builder for chaining.
     */
    public Builder clearMinTotalInstances() {
      bitField0_ = (bitField0_ & ~0x00000080);
      minTotalInstances_ = 0;
      onChanged();
      return this;
    }

    private com.google.protobuf.Duration minPendingLatency_;
    private com.google.protobuf.SingleFieldBuilderV3<
            com.google.protobuf.Duration,
            com.google.protobuf.Duration.Builder,
            com.google.protobuf.DurationOrBuilder>
        minPendingLatencyBuilder_;
    /**
     *
     *
     * <pre>
     * Minimum amount of time a request should wait in the pending queue before
     * starting a new instance to handle it.
     * </pre>
     *
     * <code>.google.protobuf.Duration min_pending_latency = 9;</code>
     *
     * @return Whether the minPendingLatency field is set.
     */
    public boolean hasMinPendingLatency() {
      return ((bitField0_ & 0x00000100) != 0);
    }
    /**
     *
     *
     * <pre>
     * Minimum amount of time a request should wait in the pending queue before
     * starting a new instance to handle it.
     * </pre>
     *
     * <code>.google.protobuf.Duration min_pending_latency = 9;</code>
     *
     * @return The minPendingLatency.
     */
    public com.google.protobuf.Duration getMinPendingLatency() {
      if (minPendingLatencyBuilder_ == null) {
        return minPendingLatency_ == null
            ? com.google.protobuf.Duration.getDefaultInstance()
            : minPendingLatency_;
      } else {
        return minPendingLatencyBuilder_.getMessage();
      }
    }
    /**
     *
     *
     * <pre>
     * Minimum amount of time a request should wait in the pending queue before
     * starting a new instance to handle it.
     * </pre>
     *
     * <code>.google.protobuf.Duration min_pending_latency = 9;</code>
     */
    public Builder setMinPendingLatency(com.google.protobuf.Duration value) {
      if (minPendingLatencyBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        minPendingLatency_ = value;
      } else {
        minPendingLatencyBuilder_.setMessage(value);
      }
      bitField0_ |= 0x00000100;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Minimum amount of time a request should wait in the pending queue before
     * starting a new instance to handle it.
     * </pre>
     *
     * <code>.google.protobuf.Duration min_pending_latency = 9;</code>
     */
    public Builder setMinPendingLatency(com.google.protobuf.Duration.Builder builderForValue) {
      if (minPendingLatencyBuilder_ == null) {
        minPendingLatency_ = builderForValue.build();
      } else {
        minPendingLatencyBuilder_.setMessage(builderForValue.build());
      }
      bitField0_ |= 0x00000100;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Minimum amount of time a request should wait in the pending queue before
     * starting a new instance to handle it.
     * </pre>
     *
     * <code>.google.protobuf.Duration min_pending_latency = 9;</code>
     */
    public Builder mergeMinPendingLatency(com.google.protobuf.Duration value) {
      if (minPendingLatencyBuilder_ == null) {
        if (((bitField0_ & 0x00000100) != 0)
            && minPendingLatency_ != null
            && minPendingLatency_ != com.google.protobuf.Duration.getDefaultInstance()) {
          getMinPendingLatencyBuilder().mergeFrom(value);
        } else {
          minPendingLatency_ = value;
        }
      } else {
        minPendingLatencyBuilder_.mergeFrom(value);
      }
      bitField0_ |= 0x00000100;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Minimum amount of time a request should wait in the pending queue before
     * starting a new instance to handle it.
     * </pre>
     *
     * <code>.google.protobuf.Duration min_pending_latency = 9;</code>
     */
    public Builder clearMinPendingLatency() {
      bitField0_ = (bitField0_ & ~0x00000100);
      minPendingLatency_ = null;
      if (minPendingLatencyBuilder_ != null) {
        minPendingLatencyBuilder_.dispose();
        minPendingLatencyBuilder_ = null;
      }
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Minimum amount of time a request should wait in the pending queue before
     * starting a new instance to handle it.
     * </pre>
     *
     * <code>.google.protobuf.Duration min_pending_latency = 9;</code>
     */
    public com.google.protobuf.Duration.Builder getMinPendingLatencyBuilder() {
      bitField0_ |= 0x00000100;
      onChanged();
      return getMinPendingLatencyFieldBuilder().getBuilder();
    }
    /**
     *
     *
     * <pre>
     * Minimum amount of time a request should wait in the pending queue before
     * starting a new instance to handle it.
     * </pre>
     *
     * <code>.google.protobuf.Duration min_pending_latency = 9;</code>
     */
    public com.google.protobuf.DurationOrBuilder getMinPendingLatencyOrBuilder() {
      if (minPendingLatencyBuilder_ != null) {
        return minPendingLatencyBuilder_.getMessageOrBuilder();
      } else {
        return minPendingLatency_ == null
            ? com.google.protobuf.Duration.getDefaultInstance()
            : minPendingLatency_;
      }
    }
    /**
     *
     *
     * <pre>
     * Minimum amount of time a request should wait in the pending queue before
     * starting a new instance to handle it.
     * </pre>
     *
     * <code>.google.protobuf.Duration min_pending_latency = 9;</code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
            com.google.protobuf.Duration,
            com.google.protobuf.Duration.Builder,
            com.google.protobuf.DurationOrBuilder>
        getMinPendingLatencyFieldBuilder() {
      if (minPendingLatencyBuilder_ == null) {
        minPendingLatencyBuilder_ =
            new com.google.protobuf.SingleFieldBuilderV3<
                com.google.protobuf.Duration,
                com.google.protobuf.Duration.Builder,
                com.google.protobuf.DurationOrBuilder>(
                getMinPendingLatency(), getParentForChildren(), isClean());
        minPendingLatency_ = null;
      }
      return minPendingLatencyBuilder_;
    }

    private com.google.appengine.v1.RequestUtilization requestUtilization_;
    private com.google.protobuf.SingleFieldBuilderV3<
            com.google.appengine.v1.RequestUtilization,
            com.google.appengine.v1.RequestUtilization.Builder,
            com.google.appengine.v1.RequestUtilizationOrBuilder>
        requestUtilizationBuilder_;
    /**
     *
     *
     * <pre>
     * Target scaling by request utilization.
     * </pre>
     *
     * <code>.google.appengine.v1.RequestUtilization request_utilization = 10;</code>
     *
     * @return Whether the requestUtilization field is set.
     */
    public boolean hasRequestUtilization() {
      return ((bitField0_ & 0x00000200) != 0);
    }
    /**
     *
     *
     * <pre>
     * Target scaling by request utilization.
     * </pre>
     *
     * <code>.google.appengine.v1.RequestUtilization request_utilization = 10;</code>
     *
     * @return The requestUtilization.
     */
    public com.google.appengine.v1.RequestUtilization getRequestUtilization() {
      if (requestUtilizationBuilder_ == null) {
        return requestUtilization_ == null
            ? com.google.appengine.v1.RequestUtilization.getDefaultInstance()
            : requestUtilization_;
      } else {
        return requestUtilizationBuilder_.getMessage();
      }
    }
    /**
     *
     *
     * <pre>
     * Target scaling by request utilization.
     * </pre>
     *
     * <code>.google.appengine.v1.RequestUtilization request_utilization = 10;</code>
     */
    public Builder setRequestUtilization(com.google.appengine.v1.RequestUtilization value) {
      if (requestUtilizationBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        requestUtilization_ = value;
      } else {
        requestUtilizationBuilder_.setMessage(value);
      }
      bitField0_ |= 0x00000200;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Target scaling by request utilization.
     * </pre>
     *
     * <code>.google.appengine.v1.RequestUtilization request_utilization = 10;</code>
     */
    public Builder setRequestUtilization(
        com.google.appengine.v1.RequestUtilization.Builder builderForValue) {
      if (requestUtilizationBuilder_ == null) {
        requestUtilization_ = builderForValue.build();
      } else {
        requestUtilizationBuilder_.setMessage(builderForValue.build());
      }
      bitField0_ |= 0x00000200;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Target scaling by request utilization.
     * </pre>
     *
     * <code>.google.appengine.v1.RequestUtilization request_utilization = 10;</code>
     */
    public Builder mergeRequestUtilization(com.google.appengine.v1.RequestUtilization value) {
      if (requestUtilizationBuilder_ == null) {
        if (((bitField0_ & 0x00000200) != 0)
            && requestUtilization_ != null
            && requestUtilization_
                != com.google.appengine.v1.RequestUtilization.getDefaultInstance()) {
          getRequestUtilizationBuilder().mergeFrom(value);
        } else {
          requestUtilization_ = value;
        }
      } else {
        requestUtilizationBuilder_.mergeFrom(value);
      }
      bitField0_ |= 0x00000200;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Target scaling by request utilization.
     * </pre>
     *
     * <code>.google.appengine.v1.RequestUtilization request_utilization = 10;</code>
     */
    public Builder clearRequestUtilization() {
      bitField0_ = (bitField0_ & ~0x00000200);
      requestUtilization_ = null;
      if (requestUtilizationBuilder_ != null) {
        requestUtilizationBuilder_.dispose();
        requestUtilizationBuilder_ = null;
      }
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Target scaling by request utilization.
     * </pre>
     *
     * <code>.google.appengine.v1.RequestUtilization request_utilization = 10;</code>
     */
    public com.google.appengine.v1.RequestUtilization.Builder getRequestUtilizationBuilder() {
      bitField0_ |= 0x00000200;
      onChanged();
      return getRequestUtilizationFieldBuilder().getBuilder();
    }
    /**
     *
     *
     * <pre>
     * Target scaling by request utilization.
     * </pre>
     *
     * <code>.google.appengine.v1.RequestUtilization request_utilization = 10;</code>
     */
    public com.google.appengine.v1.RequestUtilizationOrBuilder getRequestUtilizationOrBuilder() {
      if (requestUtilizationBuilder_ != null) {
        return requestUtilizationBuilder_.getMessageOrBuilder();
      } else {
        return requestUtilization_ == null
            ? com.google.appengine.v1.RequestUtilization.getDefaultInstance()
            : requestUtilization_;
      }
    }
    /**
     *
     *
     * <pre>
     * Target scaling by request utilization.
     * </pre>
     *
     * <code>.google.appengine.v1.RequestUtilization request_utilization = 10;</code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
            com.google.appengine.v1.RequestUtilization,
            com.google.appengine.v1.RequestUtilization.Builder,
            com.google.appengine.v1.RequestUtilizationOrBuilder>
        getRequestUtilizationFieldBuilder() {
      if (requestUtilizationBuilder_ == null) {
        requestUtilizationBuilder_ =
            new com.google.protobuf.SingleFieldBuilderV3<
                com.google.appengine.v1.RequestUtilization,
                com.google.appengine.v1.RequestUtilization.Builder,
                com.google.appengine.v1.RequestUtilizationOrBuilder>(
                getRequestUtilization(), getParentForChildren(), isClean());
        requestUtilization_ = null;
      }
      return requestUtilizationBuilder_;
    }

    private com.google.appengine.v1.DiskUtilization diskUtilization_;
    private com.google.protobuf.SingleFieldBuilderV3<
            com.google.appengine.v1.DiskUtilization,
            com.google.appengine.v1.DiskUtilization.Builder,
            com.google.appengine.v1.DiskUtilizationOrBuilder>
        diskUtilizationBuilder_;
    /**
     *
     *
     * <pre>
     * Target scaling by disk usage.
     * </pre>
     *
     * <code>.google.appengine.v1.DiskUtilization disk_utilization = 11;</code>
     *
     * @return Whether the diskUtilization field is set.
     */
    public boolean hasDiskUtilization() {
      return ((bitField0_ & 0x00000400) != 0);
    }
    /**
     *
     *
     * <pre>
     * Target scaling by disk usage.
     * </pre>
     *
     * <code>.google.appengine.v1.DiskUtilization disk_utilization = 11;</code>
     *
     * @return The diskUtilization.
     */
    public com.google.appengine.v1.DiskUtilization getDiskUtilization() {
      if (diskUtilizationBuilder_ == null) {
        return diskUtilization_ == null
            ? com.google.appengine.v1.DiskUtilization.getDefaultInstance()
            : diskUtilization_;
      } else {
        return diskUtilizationBuilder_.getMessage();
      }
    }
    /**
     *
     *
     * <pre>
     * Target scaling by disk usage.
     * </pre>
     *
     * <code>.google.appengine.v1.DiskUtilization disk_utilization = 11;</code>
     */
    public Builder setDiskUtilization(com.google.appengine.v1.DiskUtilization value) {
      if (diskUtilizationBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        diskUtilization_ = value;
      } else {
        diskUtilizationBuilder_.setMessage(value);
      }
      bitField0_ |= 0x00000400;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Target scaling by disk usage.
     * </pre>
     *
     * <code>.google.appengine.v1.DiskUtilization disk_utilization = 11;</code>
     */
    public Builder setDiskUtilization(
        com.google.appengine.v1.DiskUtilization.Builder builderForValue) {
      if (diskUtilizationBuilder_ == null) {
        diskUtilization_ = builderForValue.build();
      } else {
        diskUtilizationBuilder_.setMessage(builderForValue.build());
      }
      bitField0_ |= 0x00000400;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Target scaling by disk usage.
     * </pre>
     *
     * <code>.google.appengine.v1.DiskUtilization disk_utilization = 11;</code>
     */
    public Builder mergeDiskUtilization(com.google.appengine.v1.DiskUtilization value) {
      if (diskUtilizationBuilder_ == null) {
        if (((bitField0_ & 0x00000400) != 0)
            && diskUtilization_ != null
            && diskUtilization_ != com.google.appengine.v1.DiskUtilization.getDefaultInstance()) {
          getDiskUtilizationBuilder().mergeFrom(value);
        } else {
          diskUtilization_ = value;
        }
      } else {
        diskUtilizationBuilder_.mergeFrom(value);
      }
      bitField0_ |= 0x00000400;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Target scaling by disk usage.
     * </pre>
     *
     * <code>.google.appengine.v1.DiskUtilization disk_utilization = 11;</code>
     */
    public Builder clearDiskUtilization() {
      bitField0_ = (bitField0_ & ~0x00000400);
      diskUtilization_ = null;
      if (diskUtilizationBuilder_ != null) {
        diskUtilizationBuilder_.dispose();
        diskUtilizationBuilder_ = null;
      }
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Target scaling by disk usage.
     * </pre>
     *
     * <code>.google.appengine.v1.DiskUtilization disk_utilization = 11;</code>
     */
    public com.google.appengine.v1.DiskUtilization.Builder getDiskUtilizationBuilder() {
      bitField0_ |= 0x00000400;
      onChanged();
      return getDiskUtilizationFieldBuilder().getBuilder();
    }
    /**
     *
     *
     * <pre>
     * Target scaling by disk usage.
     * </pre>
     *
     * <code>.google.appengine.v1.DiskUtilization disk_utilization = 11;</code>
     */
    public com.google.appengine.v1.DiskUtilizationOrBuilder getDiskUtilizationOrBuilder() {
      if (diskUtilizationBuilder_ != null) {
        return diskUtilizationBuilder_.getMessageOrBuilder();
      } else {
        return diskUtilization_ == null
            ? com.google.appengine.v1.DiskUtilization.getDefaultInstance()
            : diskUtilization_;
      }
    }
    /**
     *
     *
     * <pre>
     * Target scaling by disk usage.
     * </pre>
     *
     * <code>.google.appengine.v1.DiskUtilization disk_utilization = 11;</code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
            com.google.appengine.v1.DiskUtilization,
            com.google.appengine.v1.DiskUtilization.Builder,
            com.google.appengine.v1.DiskUtilizationOrBuilder>
        getDiskUtilizationFieldBuilder() {
      if (diskUtilizationBuilder_ == null) {
        diskUtilizationBuilder_ =
            new com.google.protobuf.SingleFieldBuilderV3<
                com.google.appengine.v1.DiskUtilization,
                com.google.appengine.v1.DiskUtilization.Builder,
                com.google.appengine.v1.DiskUtilizationOrBuilder>(
                getDiskUtilization(), getParentForChildren(), isClean());
        diskUtilization_ = null;
      }
      return diskUtilizationBuilder_;
    }

    private com.google.appengine.v1.NetworkUtilization networkUtilization_;
    private com.google.protobuf.SingleFieldBuilderV3<
            com.google.appengine.v1.NetworkUtilization,
            com.google.appengine.v1.NetworkUtilization.Builder,
            com.google.appengine.v1.NetworkUtilizationOrBuilder>
        networkUtilizationBuilder_;
    /**
     *
     *
     * <pre>
     * Target scaling by network usage.
     * </pre>
     *
     * <code>.google.appengine.v1.NetworkUtilization network_utilization = 12;</code>
     *
     * @return Whether the networkUtilization field is set.
     */
    public boolean hasNetworkUtilization() {
      return ((bitField0_ & 0x00000800) != 0);
    }
    /**
     *
     *
     * <pre>
     * Target scaling by network usage.
     * </pre>
     *
     * <code>.google.appengine.v1.NetworkUtilization network_utilization = 12;</code>
     *
     * @return The networkUtilization.
     */
    public com.google.appengine.v1.NetworkUtilization getNetworkUtilization() {
      if (networkUtilizationBuilder_ == null) {
        return networkUtilization_ == null
            ? com.google.appengine.v1.NetworkUtilization.getDefaultInstance()
            : networkUtilization_;
      } else {
        return networkUtilizationBuilder_.getMessage();
      }
    }
    /**
     *
     *
     * <pre>
     * Target scaling by network usage.
     * </pre>
     *
     * <code>.google.appengine.v1.NetworkUtilization network_utilization = 12;</code>
     */
    public Builder setNetworkUtilization(com.google.appengine.v1.NetworkUtilization value) {
      if (networkUtilizationBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        networkUtilization_ = value;
      } else {
        networkUtilizationBuilder_.setMessage(value);
      }
      bitField0_ |= 0x00000800;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Target scaling by network usage.
     * </pre>
     *
     * <code>.google.appengine.v1.NetworkUtilization network_utilization = 12;</code>
     */
    public Builder setNetworkUtilization(
        com.google.appengine.v1.NetworkUtilization.Builder builderForValue) {
      if (networkUtilizationBuilder_ == null) {
        networkUtilization_ = builderForValue.build();
      } else {
        networkUtilizationBuilder_.setMessage(builderForValue.build());
      }
      bitField0_ |= 0x00000800;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Target scaling by network usage.
     * </pre>
     *
     * <code>.google.appengine.v1.NetworkUtilization network_utilization = 12;</code>
     */
    public Builder mergeNetworkUtilization(com.google.appengine.v1.NetworkUtilization value) {
      if (networkUtilizationBuilder_ == null) {
        if (((bitField0_ & 0x00000800) != 0)
            && networkUtilization_ != null
            && networkUtilization_
                != com.google.appengine.v1.NetworkUtilization.getDefaultInstance()) {
          getNetworkUtilizationBuilder().mergeFrom(value);
        } else {
          networkUtilization_ = value;
        }
      } else {
        networkUtilizationBuilder_.mergeFrom(value);
      }
      bitField0_ |= 0x00000800;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Target scaling by network usage.
     * </pre>
     *
     * <code>.google.appengine.v1.NetworkUtilization network_utilization = 12;</code>
     */
    public Builder clearNetworkUtilization() {
      bitField0_ = (bitField0_ & ~0x00000800);
      networkUtilization_ = null;
      if (networkUtilizationBuilder_ != null) {
        networkUtilizationBuilder_.dispose();
        networkUtilizationBuilder_ = null;
      }
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Target scaling by network usage.
     * </pre>
     *
     * <code>.google.appengine.v1.NetworkUtilization network_utilization = 12;</code>
     */
    public com.google.appengine.v1.NetworkUtilization.Builder getNetworkUtilizationBuilder() {
      bitField0_ |= 0x00000800;
      onChanged();
      return getNetworkUtilizationFieldBuilder().getBuilder();
    }
    /**
     *
     *
     * <pre>
     * Target scaling by network usage.
     * </pre>
     *
     * <code>.google.appengine.v1.NetworkUtilization network_utilization = 12;</code>
     */
    public com.google.appengine.v1.NetworkUtilizationOrBuilder getNetworkUtilizationOrBuilder() {
      if (networkUtilizationBuilder_ != null) {
        return networkUtilizationBuilder_.getMessageOrBuilder();
      } else {
        return networkUtilization_ == null
            ? com.google.appengine.v1.NetworkUtilization.getDefaultInstance()
            : networkUtilization_;
      }
    }
    /**
     *
     *
     * <pre>
     * Target scaling by network usage.
     * </pre>
     *
     * <code>.google.appengine.v1.NetworkUtilization network_utilization = 12;</code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
            com.google.appengine.v1.NetworkUtilization,
            com.google.appengine.v1.NetworkUtilization.Builder,
            com.google.appengine.v1.NetworkUtilizationOrBuilder>
        getNetworkUtilizationFieldBuilder() {
      if (networkUtilizationBuilder_ == null) {
        networkUtilizationBuilder_ =
            new com.google.protobuf.SingleFieldBuilderV3<
                com.google.appengine.v1.NetworkUtilization,
                com.google.appengine.v1.NetworkUtilization.Builder,
                com.google.appengine.v1.NetworkUtilizationOrBuilder>(
                getNetworkUtilization(), getParentForChildren(), isClean());
        networkUtilization_ = null;
      }
      return networkUtilizationBuilder_;
    }

    private com.google.appengine.v1.StandardSchedulerSettings standardSchedulerSettings_;
    private com.google.protobuf.SingleFieldBuilderV3<
            com.google.appengine.v1.StandardSchedulerSettings,
            com.google.appengine.v1.StandardSchedulerSettings.Builder,
            com.google.appengine.v1.StandardSchedulerSettingsOrBuilder>
        standardSchedulerSettingsBuilder_;
    /**
     *
     *
     * <pre>
     * Scheduler settings for standard environment.
     * </pre>
     *
     * <code>.google.appengine.v1.StandardSchedulerSettings standard_scheduler_settings = 20;</code>
     *
     * @return Whether the standardSchedulerSettings field is set.
     */
    public boolean hasStandardSchedulerSettings() {
      return ((bitField0_ & 0x00001000) != 0);
    }
    /**
     *
     *
     * <pre>
     * Scheduler settings for standard environment.
     * </pre>
     *
     * <code>.google.appengine.v1.StandardSchedulerSettings standard_scheduler_settings = 20;</code>
     *
     * @return The standardSchedulerSettings.
     */
    public com.google.appengine.v1.StandardSchedulerSettings getStandardSchedulerSettings() {
      if (standardSchedulerSettingsBuilder_ == null) {
        return standardSchedulerSettings_ == null
            ? com.google.appengine.v1.StandardSchedulerSettings.getDefaultInstance()
            : standardSchedulerSettings_;
      } else {
        return standardSchedulerSettingsBuilder_.getMessage();
      }
    }
    /**
     *
     *
     * <pre>
     * Scheduler settings for standard environment.
     * </pre>
     *
     * <code>.google.appengine.v1.StandardSchedulerSettings standard_scheduler_settings = 20;</code>
     */
    public Builder setStandardSchedulerSettings(
        com.google.appengine.v1.StandardSchedulerSettings value) {
      if (standardSchedulerSettingsBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        standardSchedulerSettings_ = value;
      } else {
        standardSchedulerSettingsBuilder_.setMessage(value);
      }
      bitField0_ |= 0x00001000;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Scheduler settings for standard environment.
     * </pre>
     *
     * <code>.google.appengine.v1.StandardSchedulerSettings standard_scheduler_settings = 20;</code>
     */
    public Builder setStandardSchedulerSettings(
        com.google.appengine.v1.StandardSchedulerSettings.Builder builderForValue) {
      if (standardSchedulerSettingsBuilder_ == null) {
        standardSchedulerSettings_ = builderForValue.build();
      } else {
        standardSchedulerSettingsBuilder_.setMessage(builderForValue.build());
      }
      bitField0_ |= 0x00001000;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Scheduler settings for standard environment.
     * </pre>
     *
     * <code>.google.appengine.v1.StandardSchedulerSettings standard_scheduler_settings = 20;</code>
     */
    public Builder mergeStandardSchedulerSettings(
        com.google.appengine.v1.StandardSchedulerSettings value) {
      if (standardSchedulerSettingsBuilder_ == null) {
        if (((bitField0_ & 0x00001000) != 0)
            && standardSchedulerSettings_ != null
            && standardSchedulerSettings_
                != com.google.appengine.v1.StandardSchedulerSettings.getDefaultInstance()) {
          getStandardSchedulerSettingsBuilder().mergeFrom(value);
        } else {
          standardSchedulerSettings_ = value;
        }
      } else {
        standardSchedulerSettingsBuilder_.mergeFrom(value);
      }
      bitField0_ |= 0x00001000;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Scheduler settings for standard environment.
     * </pre>
     *
     * <code>.google.appengine.v1.StandardSchedulerSettings standard_scheduler_settings = 20;</code>
     */
    public Builder clearStandardSchedulerSettings() {
      bitField0_ = (bitField0_ & ~0x00001000);
      standardSchedulerSettings_ = null;
      if (standardSchedulerSettingsBuilder_ != null) {
        standardSchedulerSettingsBuilder_.dispose();
        standardSchedulerSettingsBuilder_ = null;
      }
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Scheduler settings for standard environment.
     * </pre>
     *
     * <code>.google.appengine.v1.StandardSchedulerSettings standard_scheduler_settings = 20;</code>
     */
    public com.google.appengine.v1.StandardSchedulerSettings.Builder
        getStandardSchedulerSettingsBuilder() {
      bitField0_ |= 0x00001000;
      onChanged();
      return getStandardSchedulerSettingsFieldBuilder().getBuilder();
    }
    /**
     *
     *
     * <pre>
     * Scheduler settings for standard environment.
     * </pre>
     *
     * <code>.google.appengine.v1.StandardSchedulerSettings standard_scheduler_settings = 20;</code>
     */
    public com.google.appengine.v1.StandardSchedulerSettingsOrBuilder
        getStandardSchedulerSettingsOrBuilder() {
      if (standardSchedulerSettingsBuilder_ != null) {
        return standardSchedulerSettingsBuilder_.getMessageOrBuilder();
      } else {
        return standardSchedulerSettings_ == null
            ? com.google.appengine.v1.StandardSchedulerSettings.getDefaultInstance()
            : standardSchedulerSettings_;
      }
    }
    /**
     *
     *
     * <pre>
     * Scheduler settings for standard environment.
     * </pre>
     *
     * <code>.google.appengine.v1.StandardSchedulerSettings standard_scheduler_settings = 20;</code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
            com.google.appengine.v1.StandardSchedulerSettings,
            com.google.appengine.v1.StandardSchedulerSettings.Builder,
            com.google.appengine.v1.StandardSchedulerSettingsOrBuilder>
        getStandardSchedulerSettingsFieldBuilder() {
      if (standardSchedulerSettingsBuilder_ == null) {
        standardSchedulerSettingsBuilder_ =
            new com.google.protobuf.SingleFieldBuilderV3<
                com.google.appengine.v1.StandardSchedulerSettings,
                com.google.appengine.v1.StandardSchedulerSettings.Builder,
                com.google.appengine.v1.StandardSchedulerSettingsOrBuilder>(
                getStandardSchedulerSettings(), getParentForChildren(), isClean());
        standardSchedulerSettings_ = null;
      }
      return standardSchedulerSettingsBuilder_;
    }

    @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.appengine.v1.AutomaticScaling)
  }

  // @@protoc_insertion_point(class_scope:google.appengine.v1.AutomaticScaling)
  private static final com.google.appengine.v1.AutomaticScaling DEFAULT_INSTANCE;

  static {
    DEFAULT_INSTANCE = new com.google.appengine.v1.AutomaticScaling();
  }

  public static com.google.appengine.v1.AutomaticScaling getDefaultInstance() {
    return DEFAULT_INSTANCE;
  }

  private static final com.google.protobuf.Parser<AutomaticScaling> PARSER =
      new com.google.protobuf.AbstractParser<AutomaticScaling>() {
        @java.lang.Override
        public AutomaticScaling 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<AutomaticScaling> parser() {
    return PARSER;
  }

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

  @java.lang.Override
  public com.google.appengine.v1.AutomaticScaling getDefaultInstanceForType() {
    return DEFAULT_INSTANCE;
  }
}
