/*
 * 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/container/v1/cluster_service.proto

package com.google.container.v1;

/**
 *
 *
 * <pre>
 * Configuration for the addons that can be automatically spun up in the
 * cluster, enabling additional functionality.
 * </pre>
 *
 * Protobuf type {@code google.container.v1.AddonsConfig}
 */
public final class AddonsConfig extends com.google.protobuf.GeneratedMessageV3
    implements
    // @@protoc_insertion_point(message_implements:google.container.v1.AddonsConfig)
    AddonsConfigOrBuilder {
  private static final long serialVersionUID = 0L;
  // Use AddonsConfig.newBuilder() to construct.
  private AddonsConfig(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
    super(builder);
  }

  private AddonsConfig() {}

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

  @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.container.v1.ClusterServiceProto
        .internal_static_google_container_v1_AddonsConfig_descriptor;
  }

  @java.lang.Override
  protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internalGetFieldAccessorTable() {
    return com.google.container.v1.ClusterServiceProto
        .internal_static_google_container_v1_AddonsConfig_fieldAccessorTable
        .ensureFieldAccessorsInitialized(
            com.google.container.v1.AddonsConfig.class,
            com.google.container.v1.AddonsConfig.Builder.class);
  }

  public static final int HTTP_LOAD_BALANCING_FIELD_NUMBER = 1;
  private com.google.container.v1.HttpLoadBalancing httpLoadBalancing_;
  /**
   *
   *
   * <pre>
   * Configuration for the HTTP (L7) load balancing controller addon, which
   * makes it easy to set up HTTP load balancers for services in a cluster.
   * </pre>
   *
   * <code>.google.container.v1.HttpLoadBalancing http_load_balancing = 1;</code>
   *
   * @return Whether the httpLoadBalancing field is set.
   */
  @java.lang.Override
  public boolean hasHttpLoadBalancing() {
    return httpLoadBalancing_ != null;
  }
  /**
   *
   *
   * <pre>
   * Configuration for the HTTP (L7) load balancing controller addon, which
   * makes it easy to set up HTTP load balancers for services in a cluster.
   * </pre>
   *
   * <code>.google.container.v1.HttpLoadBalancing http_load_balancing = 1;</code>
   *
   * @return The httpLoadBalancing.
   */
  @java.lang.Override
  public com.google.container.v1.HttpLoadBalancing getHttpLoadBalancing() {
    return httpLoadBalancing_ == null
        ? com.google.container.v1.HttpLoadBalancing.getDefaultInstance()
        : httpLoadBalancing_;
  }
  /**
   *
   *
   * <pre>
   * Configuration for the HTTP (L7) load balancing controller addon, which
   * makes it easy to set up HTTP load balancers for services in a cluster.
   * </pre>
   *
   * <code>.google.container.v1.HttpLoadBalancing http_load_balancing = 1;</code>
   */
  @java.lang.Override
  public com.google.container.v1.HttpLoadBalancingOrBuilder getHttpLoadBalancingOrBuilder() {
    return httpLoadBalancing_ == null
        ? com.google.container.v1.HttpLoadBalancing.getDefaultInstance()
        : httpLoadBalancing_;
  }

  public static final int HORIZONTAL_POD_AUTOSCALING_FIELD_NUMBER = 2;
  private com.google.container.v1.HorizontalPodAutoscaling horizontalPodAutoscaling_;
  /**
   *
   *
   * <pre>
   * Configuration for the horizontal pod autoscaling feature, which
   * increases or decreases the number of replica pods a replication controller
   * has based on the resource usage of the existing pods.
   * </pre>
   *
   * <code>.google.container.v1.HorizontalPodAutoscaling horizontal_pod_autoscaling = 2;</code>
   *
   * @return Whether the horizontalPodAutoscaling field is set.
   */
  @java.lang.Override
  public boolean hasHorizontalPodAutoscaling() {
    return horizontalPodAutoscaling_ != null;
  }
  /**
   *
   *
   * <pre>
   * Configuration for the horizontal pod autoscaling feature, which
   * increases or decreases the number of replica pods a replication controller
   * has based on the resource usage of the existing pods.
   * </pre>
   *
   * <code>.google.container.v1.HorizontalPodAutoscaling horizontal_pod_autoscaling = 2;</code>
   *
   * @return The horizontalPodAutoscaling.
   */
  @java.lang.Override
  public com.google.container.v1.HorizontalPodAutoscaling getHorizontalPodAutoscaling() {
    return horizontalPodAutoscaling_ == null
        ? com.google.container.v1.HorizontalPodAutoscaling.getDefaultInstance()
        : horizontalPodAutoscaling_;
  }
  /**
   *
   *
   * <pre>
   * Configuration for the horizontal pod autoscaling feature, which
   * increases or decreases the number of replica pods a replication controller
   * has based on the resource usage of the existing pods.
   * </pre>
   *
   * <code>.google.container.v1.HorizontalPodAutoscaling horizontal_pod_autoscaling = 2;</code>
   */
  @java.lang.Override
  public com.google.container.v1.HorizontalPodAutoscalingOrBuilder
      getHorizontalPodAutoscalingOrBuilder() {
    return horizontalPodAutoscaling_ == null
        ? com.google.container.v1.HorizontalPodAutoscaling.getDefaultInstance()
        : horizontalPodAutoscaling_;
  }

  public static final int KUBERNETES_DASHBOARD_FIELD_NUMBER = 3;
  private com.google.container.v1.KubernetesDashboard kubernetesDashboard_;
  /**
   *
   *
   * <pre>
   * Configuration for the Kubernetes Dashboard.
   * This addon is deprecated, and will be disabled in 1.15. It is recommended
   * to use the Cloud Console to manage and monitor your Kubernetes clusters,
   * workloads and applications. For more information, see:
   * https://cloud.google.com/kubernetes-engine/docs/concepts/dashboards
   * </pre>
   *
   * <code>.google.container.v1.KubernetesDashboard kubernetes_dashboard = 3 [deprecated = true];
   * </code>
   *
   * @deprecated google.container.v1.AddonsConfig.kubernetes_dashboard is deprecated. See
   *     google/container/v1/cluster_service.proto;l=1108
   * @return Whether the kubernetesDashboard field is set.
   */
  @java.lang.Override
  @java.lang.Deprecated
  public boolean hasKubernetesDashboard() {
    return kubernetesDashboard_ != null;
  }
  /**
   *
   *
   * <pre>
   * Configuration for the Kubernetes Dashboard.
   * This addon is deprecated, and will be disabled in 1.15. It is recommended
   * to use the Cloud Console to manage and monitor your Kubernetes clusters,
   * workloads and applications. For more information, see:
   * https://cloud.google.com/kubernetes-engine/docs/concepts/dashboards
   * </pre>
   *
   * <code>.google.container.v1.KubernetesDashboard kubernetes_dashboard = 3 [deprecated = true];
   * </code>
   *
   * @deprecated google.container.v1.AddonsConfig.kubernetes_dashboard is deprecated. See
   *     google/container/v1/cluster_service.proto;l=1108
   * @return The kubernetesDashboard.
   */
  @java.lang.Override
  @java.lang.Deprecated
  public com.google.container.v1.KubernetesDashboard getKubernetesDashboard() {
    return kubernetesDashboard_ == null
        ? com.google.container.v1.KubernetesDashboard.getDefaultInstance()
        : kubernetesDashboard_;
  }
  /**
   *
   *
   * <pre>
   * Configuration for the Kubernetes Dashboard.
   * This addon is deprecated, and will be disabled in 1.15. It is recommended
   * to use the Cloud Console to manage and monitor your Kubernetes clusters,
   * workloads and applications. For more information, see:
   * https://cloud.google.com/kubernetes-engine/docs/concepts/dashboards
   * </pre>
   *
   * <code>.google.container.v1.KubernetesDashboard kubernetes_dashboard = 3 [deprecated = true];
   * </code>
   */
  @java.lang.Override
  @java.lang.Deprecated
  public com.google.container.v1.KubernetesDashboardOrBuilder getKubernetesDashboardOrBuilder() {
    return kubernetesDashboard_ == null
        ? com.google.container.v1.KubernetesDashboard.getDefaultInstance()
        : kubernetesDashboard_;
  }

  public static final int NETWORK_POLICY_CONFIG_FIELD_NUMBER = 4;
  private com.google.container.v1.NetworkPolicyConfig networkPolicyConfig_;
  /**
   *
   *
   * <pre>
   * Configuration for NetworkPolicy. This only tracks whether the addon
   * is enabled or not on the Master, it does not track whether network policy
   * is enabled for the nodes.
   * </pre>
   *
   * <code>.google.container.v1.NetworkPolicyConfig network_policy_config = 4;</code>
   *
   * @return Whether the networkPolicyConfig field is set.
   */
  @java.lang.Override
  public boolean hasNetworkPolicyConfig() {
    return networkPolicyConfig_ != null;
  }
  /**
   *
   *
   * <pre>
   * Configuration for NetworkPolicy. This only tracks whether the addon
   * is enabled or not on the Master, it does not track whether network policy
   * is enabled for the nodes.
   * </pre>
   *
   * <code>.google.container.v1.NetworkPolicyConfig network_policy_config = 4;</code>
   *
   * @return The networkPolicyConfig.
   */
  @java.lang.Override
  public com.google.container.v1.NetworkPolicyConfig getNetworkPolicyConfig() {
    return networkPolicyConfig_ == null
        ? com.google.container.v1.NetworkPolicyConfig.getDefaultInstance()
        : networkPolicyConfig_;
  }
  /**
   *
   *
   * <pre>
   * Configuration for NetworkPolicy. This only tracks whether the addon
   * is enabled or not on the Master, it does not track whether network policy
   * is enabled for the nodes.
   * </pre>
   *
   * <code>.google.container.v1.NetworkPolicyConfig network_policy_config = 4;</code>
   */
  @java.lang.Override
  public com.google.container.v1.NetworkPolicyConfigOrBuilder getNetworkPolicyConfigOrBuilder() {
    return networkPolicyConfig_ == null
        ? com.google.container.v1.NetworkPolicyConfig.getDefaultInstance()
        : networkPolicyConfig_;
  }

  public static final int CLOUD_RUN_CONFIG_FIELD_NUMBER = 7;
  private com.google.container.v1.CloudRunConfig cloudRunConfig_;
  /**
   *
   *
   * <pre>
   * Configuration for the Cloud Run addon, which allows the user to use a
   * managed Knative service.
   * </pre>
   *
   * <code>.google.container.v1.CloudRunConfig cloud_run_config = 7;</code>
   *
   * @return Whether the cloudRunConfig field is set.
   */
  @java.lang.Override
  public boolean hasCloudRunConfig() {
    return cloudRunConfig_ != null;
  }
  /**
   *
   *
   * <pre>
   * Configuration for the Cloud Run addon, which allows the user to use a
   * managed Knative service.
   * </pre>
   *
   * <code>.google.container.v1.CloudRunConfig cloud_run_config = 7;</code>
   *
   * @return The cloudRunConfig.
   */
  @java.lang.Override
  public com.google.container.v1.CloudRunConfig getCloudRunConfig() {
    return cloudRunConfig_ == null
        ? com.google.container.v1.CloudRunConfig.getDefaultInstance()
        : cloudRunConfig_;
  }
  /**
   *
   *
   * <pre>
   * Configuration for the Cloud Run addon, which allows the user to use a
   * managed Knative service.
   * </pre>
   *
   * <code>.google.container.v1.CloudRunConfig cloud_run_config = 7;</code>
   */
  @java.lang.Override
  public com.google.container.v1.CloudRunConfigOrBuilder getCloudRunConfigOrBuilder() {
    return cloudRunConfig_ == null
        ? com.google.container.v1.CloudRunConfig.getDefaultInstance()
        : cloudRunConfig_;
  }

  public static final int DNS_CACHE_CONFIG_FIELD_NUMBER = 8;
  private com.google.container.v1.DnsCacheConfig dnsCacheConfig_;
  /**
   *
   *
   * <pre>
   * Configuration for NodeLocalDNS, a dns cache running on cluster nodes
   * </pre>
   *
   * <code>.google.container.v1.DnsCacheConfig dns_cache_config = 8;</code>
   *
   * @return Whether the dnsCacheConfig field is set.
   */
  @java.lang.Override
  public boolean hasDnsCacheConfig() {
    return dnsCacheConfig_ != null;
  }
  /**
   *
   *
   * <pre>
   * Configuration for NodeLocalDNS, a dns cache running on cluster nodes
   * </pre>
   *
   * <code>.google.container.v1.DnsCacheConfig dns_cache_config = 8;</code>
   *
   * @return The dnsCacheConfig.
   */
  @java.lang.Override
  public com.google.container.v1.DnsCacheConfig getDnsCacheConfig() {
    return dnsCacheConfig_ == null
        ? com.google.container.v1.DnsCacheConfig.getDefaultInstance()
        : dnsCacheConfig_;
  }
  /**
   *
   *
   * <pre>
   * Configuration for NodeLocalDNS, a dns cache running on cluster nodes
   * </pre>
   *
   * <code>.google.container.v1.DnsCacheConfig dns_cache_config = 8;</code>
   */
  @java.lang.Override
  public com.google.container.v1.DnsCacheConfigOrBuilder getDnsCacheConfigOrBuilder() {
    return dnsCacheConfig_ == null
        ? com.google.container.v1.DnsCacheConfig.getDefaultInstance()
        : dnsCacheConfig_;
  }

  public static final int CONFIG_CONNECTOR_CONFIG_FIELD_NUMBER = 10;
  private com.google.container.v1.ConfigConnectorConfig configConnectorConfig_;
  /**
   *
   *
   * <pre>
   * Configuration for the ConfigConnector add-on, a Kubernetes
   * extension to manage hosted GCP services through the Kubernetes API
   * </pre>
   *
   * <code>.google.container.v1.ConfigConnectorConfig config_connector_config = 10;</code>
   *
   * @return Whether the configConnectorConfig field is set.
   */
  @java.lang.Override
  public boolean hasConfigConnectorConfig() {
    return configConnectorConfig_ != null;
  }
  /**
   *
   *
   * <pre>
   * Configuration for the ConfigConnector add-on, a Kubernetes
   * extension to manage hosted GCP services through the Kubernetes API
   * </pre>
   *
   * <code>.google.container.v1.ConfigConnectorConfig config_connector_config = 10;</code>
   *
   * @return The configConnectorConfig.
   */
  @java.lang.Override
  public com.google.container.v1.ConfigConnectorConfig getConfigConnectorConfig() {
    return configConnectorConfig_ == null
        ? com.google.container.v1.ConfigConnectorConfig.getDefaultInstance()
        : configConnectorConfig_;
  }
  /**
   *
   *
   * <pre>
   * Configuration for the ConfigConnector add-on, a Kubernetes
   * extension to manage hosted GCP services through the Kubernetes API
   * </pre>
   *
   * <code>.google.container.v1.ConfigConnectorConfig config_connector_config = 10;</code>
   */
  @java.lang.Override
  public com.google.container.v1.ConfigConnectorConfigOrBuilder
      getConfigConnectorConfigOrBuilder() {
    return configConnectorConfig_ == null
        ? com.google.container.v1.ConfigConnectorConfig.getDefaultInstance()
        : configConnectorConfig_;
  }

  public static final int GCE_PERSISTENT_DISK_CSI_DRIVER_CONFIG_FIELD_NUMBER = 11;
  private com.google.container.v1.GcePersistentDiskCsiDriverConfig
      gcePersistentDiskCsiDriverConfig_;
  /**
   *
   *
   * <pre>
   * Configuration for the Compute Engine Persistent Disk CSI driver.
   * </pre>
   *
   * <code>
   * .google.container.v1.GcePersistentDiskCsiDriverConfig gce_persistent_disk_csi_driver_config = 11;
   * </code>
   *
   * @return Whether the gcePersistentDiskCsiDriverConfig field is set.
   */
  @java.lang.Override
  public boolean hasGcePersistentDiskCsiDriverConfig() {
    return gcePersistentDiskCsiDriverConfig_ != null;
  }
  /**
   *
   *
   * <pre>
   * Configuration for the Compute Engine Persistent Disk CSI driver.
   * </pre>
   *
   * <code>
   * .google.container.v1.GcePersistentDiskCsiDriverConfig gce_persistent_disk_csi_driver_config = 11;
   * </code>
   *
   * @return The gcePersistentDiskCsiDriverConfig.
   */
  @java.lang.Override
  public com.google.container.v1.GcePersistentDiskCsiDriverConfig
      getGcePersistentDiskCsiDriverConfig() {
    return gcePersistentDiskCsiDriverConfig_ == null
        ? com.google.container.v1.GcePersistentDiskCsiDriverConfig.getDefaultInstance()
        : gcePersistentDiskCsiDriverConfig_;
  }
  /**
   *
   *
   * <pre>
   * Configuration for the Compute Engine Persistent Disk CSI driver.
   * </pre>
   *
   * <code>
   * .google.container.v1.GcePersistentDiskCsiDriverConfig gce_persistent_disk_csi_driver_config = 11;
   * </code>
   */
  @java.lang.Override
  public com.google.container.v1.GcePersistentDiskCsiDriverConfigOrBuilder
      getGcePersistentDiskCsiDriverConfigOrBuilder() {
    return gcePersistentDiskCsiDriverConfig_ == null
        ? com.google.container.v1.GcePersistentDiskCsiDriverConfig.getDefaultInstance()
        : gcePersistentDiskCsiDriverConfig_;
  }

  public static final int GCP_FILESTORE_CSI_DRIVER_CONFIG_FIELD_NUMBER = 14;
  private com.google.container.v1.GcpFilestoreCsiDriverConfig gcpFilestoreCsiDriverConfig_;
  /**
   *
   *
   * <pre>
   * Configuration for the GCP Filestore CSI driver.
   * </pre>
   *
   * <code>.google.container.v1.GcpFilestoreCsiDriverConfig gcp_filestore_csi_driver_config = 14;
   * </code>
   *
   * @return Whether the gcpFilestoreCsiDriverConfig field is set.
   */
  @java.lang.Override
  public boolean hasGcpFilestoreCsiDriverConfig() {
    return gcpFilestoreCsiDriverConfig_ != null;
  }
  /**
   *
   *
   * <pre>
   * Configuration for the GCP Filestore CSI driver.
   * </pre>
   *
   * <code>.google.container.v1.GcpFilestoreCsiDriverConfig gcp_filestore_csi_driver_config = 14;
   * </code>
   *
   * @return The gcpFilestoreCsiDriverConfig.
   */
  @java.lang.Override
  public com.google.container.v1.GcpFilestoreCsiDriverConfig getGcpFilestoreCsiDriverConfig() {
    return gcpFilestoreCsiDriverConfig_ == null
        ? com.google.container.v1.GcpFilestoreCsiDriverConfig.getDefaultInstance()
        : gcpFilestoreCsiDriverConfig_;
  }
  /**
   *
   *
   * <pre>
   * Configuration for the GCP Filestore CSI driver.
   * </pre>
   *
   * <code>.google.container.v1.GcpFilestoreCsiDriverConfig gcp_filestore_csi_driver_config = 14;
   * </code>
   */
  @java.lang.Override
  public com.google.container.v1.GcpFilestoreCsiDriverConfigOrBuilder
      getGcpFilestoreCsiDriverConfigOrBuilder() {
    return gcpFilestoreCsiDriverConfig_ == null
        ? com.google.container.v1.GcpFilestoreCsiDriverConfig.getDefaultInstance()
        : gcpFilestoreCsiDriverConfig_;
  }

  public static final int GKE_BACKUP_AGENT_CONFIG_FIELD_NUMBER = 16;
  private com.google.container.v1.GkeBackupAgentConfig gkeBackupAgentConfig_;
  /**
   *
   *
   * <pre>
   * Configuration for the Backup for GKE agent addon.
   * </pre>
   *
   * <code>.google.container.v1.GkeBackupAgentConfig gke_backup_agent_config = 16;</code>
   *
   * @return Whether the gkeBackupAgentConfig field is set.
   */
  @java.lang.Override
  public boolean hasGkeBackupAgentConfig() {
    return gkeBackupAgentConfig_ != null;
  }
  /**
   *
   *
   * <pre>
   * Configuration for the Backup for GKE agent addon.
   * </pre>
   *
   * <code>.google.container.v1.GkeBackupAgentConfig gke_backup_agent_config = 16;</code>
   *
   * @return The gkeBackupAgentConfig.
   */
  @java.lang.Override
  public com.google.container.v1.GkeBackupAgentConfig getGkeBackupAgentConfig() {
    return gkeBackupAgentConfig_ == null
        ? com.google.container.v1.GkeBackupAgentConfig.getDefaultInstance()
        : gkeBackupAgentConfig_;
  }
  /**
   *
   *
   * <pre>
   * Configuration for the Backup for GKE agent addon.
   * </pre>
   *
   * <code>.google.container.v1.GkeBackupAgentConfig gke_backup_agent_config = 16;</code>
   */
  @java.lang.Override
  public com.google.container.v1.GkeBackupAgentConfigOrBuilder getGkeBackupAgentConfigOrBuilder() {
    return gkeBackupAgentConfig_ == null
        ? com.google.container.v1.GkeBackupAgentConfig.getDefaultInstance()
        : gkeBackupAgentConfig_;
  }

  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 (httpLoadBalancing_ != null) {
      output.writeMessage(1, getHttpLoadBalancing());
    }
    if (horizontalPodAutoscaling_ != null) {
      output.writeMessage(2, getHorizontalPodAutoscaling());
    }
    if (kubernetesDashboard_ != null) {
      output.writeMessage(3, getKubernetesDashboard());
    }
    if (networkPolicyConfig_ != null) {
      output.writeMessage(4, getNetworkPolicyConfig());
    }
    if (cloudRunConfig_ != null) {
      output.writeMessage(7, getCloudRunConfig());
    }
    if (dnsCacheConfig_ != null) {
      output.writeMessage(8, getDnsCacheConfig());
    }
    if (configConnectorConfig_ != null) {
      output.writeMessage(10, getConfigConnectorConfig());
    }
    if (gcePersistentDiskCsiDriverConfig_ != null) {
      output.writeMessage(11, getGcePersistentDiskCsiDriverConfig());
    }
    if (gcpFilestoreCsiDriverConfig_ != null) {
      output.writeMessage(14, getGcpFilestoreCsiDriverConfig());
    }
    if (gkeBackupAgentConfig_ != null) {
      output.writeMessage(16, getGkeBackupAgentConfig());
    }
    getUnknownFields().writeTo(output);
  }

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

    size = 0;
    if (httpLoadBalancing_ != null) {
      size += com.google.protobuf.CodedOutputStream.computeMessageSize(1, getHttpLoadBalancing());
    }
    if (horizontalPodAutoscaling_ != null) {
      size +=
          com.google.protobuf.CodedOutputStream.computeMessageSize(
              2, getHorizontalPodAutoscaling());
    }
    if (kubernetesDashboard_ != null) {
      size += com.google.protobuf.CodedOutputStream.computeMessageSize(3, getKubernetesDashboard());
    }
    if (networkPolicyConfig_ != null) {
      size += com.google.protobuf.CodedOutputStream.computeMessageSize(4, getNetworkPolicyConfig());
    }
    if (cloudRunConfig_ != null) {
      size += com.google.protobuf.CodedOutputStream.computeMessageSize(7, getCloudRunConfig());
    }
    if (dnsCacheConfig_ != null) {
      size += com.google.protobuf.CodedOutputStream.computeMessageSize(8, getDnsCacheConfig());
    }
    if (configConnectorConfig_ != null) {
      size +=
          com.google.protobuf.CodedOutputStream.computeMessageSize(10, getConfigConnectorConfig());
    }
    if (gcePersistentDiskCsiDriverConfig_ != null) {
      size +=
          com.google.protobuf.CodedOutputStream.computeMessageSize(
              11, getGcePersistentDiskCsiDriverConfig());
    }
    if (gcpFilestoreCsiDriverConfig_ != null) {
      size +=
          com.google.protobuf.CodedOutputStream.computeMessageSize(
              14, getGcpFilestoreCsiDriverConfig());
    }
    if (gkeBackupAgentConfig_ != null) {
      size +=
          com.google.protobuf.CodedOutputStream.computeMessageSize(16, getGkeBackupAgentConfig());
    }
    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.container.v1.AddonsConfig)) {
      return super.equals(obj);
    }
    com.google.container.v1.AddonsConfig other = (com.google.container.v1.AddonsConfig) obj;

    if (hasHttpLoadBalancing() != other.hasHttpLoadBalancing()) return false;
    if (hasHttpLoadBalancing()) {
      if (!getHttpLoadBalancing().equals(other.getHttpLoadBalancing())) return false;
    }
    if (hasHorizontalPodAutoscaling() != other.hasHorizontalPodAutoscaling()) return false;
    if (hasHorizontalPodAutoscaling()) {
      if (!getHorizontalPodAutoscaling().equals(other.getHorizontalPodAutoscaling())) return false;
    }
    if (hasKubernetesDashboard() != other.hasKubernetesDashboard()) return false;
    if (hasKubernetesDashboard()) {
      if (!getKubernetesDashboard().equals(other.getKubernetesDashboard())) return false;
    }
    if (hasNetworkPolicyConfig() != other.hasNetworkPolicyConfig()) return false;
    if (hasNetworkPolicyConfig()) {
      if (!getNetworkPolicyConfig().equals(other.getNetworkPolicyConfig())) return false;
    }
    if (hasCloudRunConfig() != other.hasCloudRunConfig()) return false;
    if (hasCloudRunConfig()) {
      if (!getCloudRunConfig().equals(other.getCloudRunConfig())) return false;
    }
    if (hasDnsCacheConfig() != other.hasDnsCacheConfig()) return false;
    if (hasDnsCacheConfig()) {
      if (!getDnsCacheConfig().equals(other.getDnsCacheConfig())) return false;
    }
    if (hasConfigConnectorConfig() != other.hasConfigConnectorConfig()) return false;
    if (hasConfigConnectorConfig()) {
      if (!getConfigConnectorConfig().equals(other.getConfigConnectorConfig())) return false;
    }
    if (hasGcePersistentDiskCsiDriverConfig() != other.hasGcePersistentDiskCsiDriverConfig())
      return false;
    if (hasGcePersistentDiskCsiDriverConfig()) {
      if (!getGcePersistentDiskCsiDriverConfig()
          .equals(other.getGcePersistentDiskCsiDriverConfig())) return false;
    }
    if (hasGcpFilestoreCsiDriverConfig() != other.hasGcpFilestoreCsiDriverConfig()) return false;
    if (hasGcpFilestoreCsiDriverConfig()) {
      if (!getGcpFilestoreCsiDriverConfig().equals(other.getGcpFilestoreCsiDriverConfig()))
        return false;
    }
    if (hasGkeBackupAgentConfig() != other.hasGkeBackupAgentConfig()) return false;
    if (hasGkeBackupAgentConfig()) {
      if (!getGkeBackupAgentConfig().equals(other.getGkeBackupAgentConfig())) 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 (hasHttpLoadBalancing()) {
      hash = (37 * hash) + HTTP_LOAD_BALANCING_FIELD_NUMBER;
      hash = (53 * hash) + getHttpLoadBalancing().hashCode();
    }
    if (hasHorizontalPodAutoscaling()) {
      hash = (37 * hash) + HORIZONTAL_POD_AUTOSCALING_FIELD_NUMBER;
      hash = (53 * hash) + getHorizontalPodAutoscaling().hashCode();
    }
    if (hasKubernetesDashboard()) {
      hash = (37 * hash) + KUBERNETES_DASHBOARD_FIELD_NUMBER;
      hash = (53 * hash) + getKubernetesDashboard().hashCode();
    }
    if (hasNetworkPolicyConfig()) {
      hash = (37 * hash) + NETWORK_POLICY_CONFIG_FIELD_NUMBER;
      hash = (53 * hash) + getNetworkPolicyConfig().hashCode();
    }
    if (hasCloudRunConfig()) {
      hash = (37 * hash) + CLOUD_RUN_CONFIG_FIELD_NUMBER;
      hash = (53 * hash) + getCloudRunConfig().hashCode();
    }
    if (hasDnsCacheConfig()) {
      hash = (37 * hash) + DNS_CACHE_CONFIG_FIELD_NUMBER;
      hash = (53 * hash) + getDnsCacheConfig().hashCode();
    }
    if (hasConfigConnectorConfig()) {
      hash = (37 * hash) + CONFIG_CONNECTOR_CONFIG_FIELD_NUMBER;
      hash = (53 * hash) + getConfigConnectorConfig().hashCode();
    }
    if (hasGcePersistentDiskCsiDriverConfig()) {
      hash = (37 * hash) + GCE_PERSISTENT_DISK_CSI_DRIVER_CONFIG_FIELD_NUMBER;
      hash = (53 * hash) + getGcePersistentDiskCsiDriverConfig().hashCode();
    }
    if (hasGcpFilestoreCsiDriverConfig()) {
      hash = (37 * hash) + GCP_FILESTORE_CSI_DRIVER_CONFIG_FIELD_NUMBER;
      hash = (53 * hash) + getGcpFilestoreCsiDriverConfig().hashCode();
    }
    if (hasGkeBackupAgentConfig()) {
      hash = (37 * hash) + GKE_BACKUP_AGENT_CONFIG_FIELD_NUMBER;
      hash = (53 * hash) + getGkeBackupAgentConfig().hashCode();
    }
    hash = (29 * hash) + getUnknownFields().hashCode();
    memoizedHashCode = hash;
    return hash;
  }

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

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

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

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

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

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

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

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

  public static com.google.container.v1.AddonsConfig 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.container.v1.AddonsConfig 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>
   * Configuration for the addons that can be automatically spun up in the
   * cluster, enabling additional functionality.
   * </pre>
   *
   * Protobuf type {@code google.container.v1.AddonsConfig}
   */
  public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder<Builder>
      implements
      // @@protoc_insertion_point(builder_implements:google.container.v1.AddonsConfig)
      com.google.container.v1.AddonsConfigOrBuilder {
    public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
      return com.google.container.v1.ClusterServiceProto
          .internal_static_google_container_v1_AddonsConfig_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.container.v1.ClusterServiceProto
          .internal_static_google_container_v1_AddonsConfig_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.container.v1.AddonsConfig.class,
              com.google.container.v1.AddonsConfig.Builder.class);
    }

    // Construct using com.google.container.v1.AddonsConfig.newBuilder()
    private Builder() {}

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

    @java.lang.Override
    public Builder clear() {
      super.clear();
      bitField0_ = 0;
      httpLoadBalancing_ = null;
      if (httpLoadBalancingBuilder_ != null) {
        httpLoadBalancingBuilder_.dispose();
        httpLoadBalancingBuilder_ = null;
      }
      horizontalPodAutoscaling_ = null;
      if (horizontalPodAutoscalingBuilder_ != null) {
        horizontalPodAutoscalingBuilder_.dispose();
        horizontalPodAutoscalingBuilder_ = null;
      }
      kubernetesDashboard_ = null;
      if (kubernetesDashboardBuilder_ != null) {
        kubernetesDashboardBuilder_.dispose();
        kubernetesDashboardBuilder_ = null;
      }
      networkPolicyConfig_ = null;
      if (networkPolicyConfigBuilder_ != null) {
        networkPolicyConfigBuilder_.dispose();
        networkPolicyConfigBuilder_ = null;
      }
      cloudRunConfig_ = null;
      if (cloudRunConfigBuilder_ != null) {
        cloudRunConfigBuilder_.dispose();
        cloudRunConfigBuilder_ = null;
      }
      dnsCacheConfig_ = null;
      if (dnsCacheConfigBuilder_ != null) {
        dnsCacheConfigBuilder_.dispose();
        dnsCacheConfigBuilder_ = null;
      }
      configConnectorConfig_ = null;
      if (configConnectorConfigBuilder_ != null) {
        configConnectorConfigBuilder_.dispose();
        configConnectorConfigBuilder_ = null;
      }
      gcePersistentDiskCsiDriverConfig_ = null;
      if (gcePersistentDiskCsiDriverConfigBuilder_ != null) {
        gcePersistentDiskCsiDriverConfigBuilder_.dispose();
        gcePersistentDiskCsiDriverConfigBuilder_ = null;
      }
      gcpFilestoreCsiDriverConfig_ = null;
      if (gcpFilestoreCsiDriverConfigBuilder_ != null) {
        gcpFilestoreCsiDriverConfigBuilder_.dispose();
        gcpFilestoreCsiDriverConfigBuilder_ = null;
      }
      gkeBackupAgentConfig_ = null;
      if (gkeBackupAgentConfigBuilder_ != null) {
        gkeBackupAgentConfigBuilder_.dispose();
        gkeBackupAgentConfigBuilder_ = null;
      }
      return this;
    }

    @java.lang.Override
    public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
      return com.google.container.v1.ClusterServiceProto
          .internal_static_google_container_v1_AddonsConfig_descriptor;
    }

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

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

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

    private void buildPartial0(com.google.container.v1.AddonsConfig result) {
      int from_bitField0_ = bitField0_;
      if (((from_bitField0_ & 0x00000001) != 0)) {
        result.httpLoadBalancing_ =
            httpLoadBalancingBuilder_ == null
                ? httpLoadBalancing_
                : httpLoadBalancingBuilder_.build();
      }
      if (((from_bitField0_ & 0x00000002) != 0)) {
        result.horizontalPodAutoscaling_ =
            horizontalPodAutoscalingBuilder_ == null
                ? horizontalPodAutoscaling_
                : horizontalPodAutoscalingBuilder_.build();
      }
      if (((from_bitField0_ & 0x00000004) != 0)) {
        result.kubernetesDashboard_ =
            kubernetesDashboardBuilder_ == null
                ? kubernetesDashboard_
                : kubernetesDashboardBuilder_.build();
      }
      if (((from_bitField0_ & 0x00000008) != 0)) {
        result.networkPolicyConfig_ =
            networkPolicyConfigBuilder_ == null
                ? networkPolicyConfig_
                : networkPolicyConfigBuilder_.build();
      }
      if (((from_bitField0_ & 0x00000010) != 0)) {
        result.cloudRunConfig_ =
            cloudRunConfigBuilder_ == null ? cloudRunConfig_ : cloudRunConfigBuilder_.build();
      }
      if (((from_bitField0_ & 0x00000020) != 0)) {
        result.dnsCacheConfig_ =
            dnsCacheConfigBuilder_ == null ? dnsCacheConfig_ : dnsCacheConfigBuilder_.build();
      }
      if (((from_bitField0_ & 0x00000040) != 0)) {
        result.configConnectorConfig_ =
            configConnectorConfigBuilder_ == null
                ? configConnectorConfig_
                : configConnectorConfigBuilder_.build();
      }
      if (((from_bitField0_ & 0x00000080) != 0)) {
        result.gcePersistentDiskCsiDriverConfig_ =
            gcePersistentDiskCsiDriverConfigBuilder_ == null
                ? gcePersistentDiskCsiDriverConfig_
                : gcePersistentDiskCsiDriverConfigBuilder_.build();
      }
      if (((from_bitField0_ & 0x00000100) != 0)) {
        result.gcpFilestoreCsiDriverConfig_ =
            gcpFilestoreCsiDriverConfigBuilder_ == null
                ? gcpFilestoreCsiDriverConfig_
                : gcpFilestoreCsiDriverConfigBuilder_.build();
      }
      if (((from_bitField0_ & 0x00000200) != 0)) {
        result.gkeBackupAgentConfig_ =
            gkeBackupAgentConfigBuilder_ == null
                ? gkeBackupAgentConfig_
                : gkeBackupAgentConfigBuilder_.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.container.v1.AddonsConfig) {
        return mergeFrom((com.google.container.v1.AddonsConfig) other);
      } else {
        super.mergeFrom(other);
        return this;
      }
    }

    public Builder mergeFrom(com.google.container.v1.AddonsConfig other) {
      if (other == com.google.container.v1.AddonsConfig.getDefaultInstance()) return this;
      if (other.hasHttpLoadBalancing()) {
        mergeHttpLoadBalancing(other.getHttpLoadBalancing());
      }
      if (other.hasHorizontalPodAutoscaling()) {
        mergeHorizontalPodAutoscaling(other.getHorizontalPodAutoscaling());
      }
      if (other.hasKubernetesDashboard()) {
        mergeKubernetesDashboard(other.getKubernetesDashboard());
      }
      if (other.hasNetworkPolicyConfig()) {
        mergeNetworkPolicyConfig(other.getNetworkPolicyConfig());
      }
      if (other.hasCloudRunConfig()) {
        mergeCloudRunConfig(other.getCloudRunConfig());
      }
      if (other.hasDnsCacheConfig()) {
        mergeDnsCacheConfig(other.getDnsCacheConfig());
      }
      if (other.hasConfigConnectorConfig()) {
        mergeConfigConnectorConfig(other.getConfigConnectorConfig());
      }
      if (other.hasGcePersistentDiskCsiDriverConfig()) {
        mergeGcePersistentDiskCsiDriverConfig(other.getGcePersistentDiskCsiDriverConfig());
      }
      if (other.hasGcpFilestoreCsiDriverConfig()) {
        mergeGcpFilestoreCsiDriverConfig(other.getGcpFilestoreCsiDriverConfig());
      }
      if (other.hasGkeBackupAgentConfig()) {
        mergeGkeBackupAgentConfig(other.getGkeBackupAgentConfig());
      }
      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(
                    getHttpLoadBalancingFieldBuilder().getBuilder(), extensionRegistry);
                bitField0_ |= 0x00000001;
                break;
              } // case 10
            case 18:
              {
                input.readMessage(
                    getHorizontalPodAutoscalingFieldBuilder().getBuilder(), extensionRegistry);
                bitField0_ |= 0x00000002;
                break;
              } // case 18
            case 26:
              {
                input.readMessage(
                    getKubernetesDashboardFieldBuilder().getBuilder(), extensionRegistry);
                bitField0_ |= 0x00000004;
                break;
              } // case 26
            case 34:
              {
                input.readMessage(
                    getNetworkPolicyConfigFieldBuilder().getBuilder(), extensionRegistry);
                bitField0_ |= 0x00000008;
                break;
              } // case 34
            case 58:
              {
                input.readMessage(getCloudRunConfigFieldBuilder().getBuilder(), extensionRegistry);
                bitField0_ |= 0x00000010;
                break;
              } // case 58
            case 66:
              {
                input.readMessage(getDnsCacheConfigFieldBuilder().getBuilder(), extensionRegistry);
                bitField0_ |= 0x00000020;
                break;
              } // case 66
            case 82:
              {
                input.readMessage(
                    getConfigConnectorConfigFieldBuilder().getBuilder(), extensionRegistry);
                bitField0_ |= 0x00000040;
                break;
              } // case 82
            case 90:
              {
                input.readMessage(
                    getGcePersistentDiskCsiDriverConfigFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000080;
                break;
              } // case 90
            case 114:
              {
                input.readMessage(
                    getGcpFilestoreCsiDriverConfigFieldBuilder().getBuilder(), extensionRegistry);
                bitField0_ |= 0x00000100;
                break;
              } // case 114
            case 130:
              {
                input.readMessage(
                    getGkeBackupAgentConfigFieldBuilder().getBuilder(), extensionRegistry);
                bitField0_ |= 0x00000200;
                break;
              } // case 130
            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.container.v1.HttpLoadBalancing httpLoadBalancing_;
    private com.google.protobuf.SingleFieldBuilderV3<
            com.google.container.v1.HttpLoadBalancing,
            com.google.container.v1.HttpLoadBalancing.Builder,
            com.google.container.v1.HttpLoadBalancingOrBuilder>
        httpLoadBalancingBuilder_;
    /**
     *
     *
     * <pre>
     * Configuration for the HTTP (L7) load balancing controller addon, which
     * makes it easy to set up HTTP load balancers for services in a cluster.
     * </pre>
     *
     * <code>.google.container.v1.HttpLoadBalancing http_load_balancing = 1;</code>
     *
     * @return Whether the httpLoadBalancing field is set.
     */
    public boolean hasHttpLoadBalancing() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     *
     *
     * <pre>
     * Configuration for the HTTP (L7) load balancing controller addon, which
     * makes it easy to set up HTTP load balancers for services in a cluster.
     * </pre>
     *
     * <code>.google.container.v1.HttpLoadBalancing http_load_balancing = 1;</code>
     *
     * @return The httpLoadBalancing.
     */
    public com.google.container.v1.HttpLoadBalancing getHttpLoadBalancing() {
      if (httpLoadBalancingBuilder_ == null) {
        return httpLoadBalancing_ == null
            ? com.google.container.v1.HttpLoadBalancing.getDefaultInstance()
            : httpLoadBalancing_;
      } else {
        return httpLoadBalancingBuilder_.getMessage();
      }
    }
    /**
     *
     *
     * <pre>
     * Configuration for the HTTP (L7) load balancing controller addon, which
     * makes it easy to set up HTTP load balancers for services in a cluster.
     * </pre>
     *
     * <code>.google.container.v1.HttpLoadBalancing http_load_balancing = 1;</code>
     */
    public Builder setHttpLoadBalancing(com.google.container.v1.HttpLoadBalancing value) {
      if (httpLoadBalancingBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        httpLoadBalancing_ = value;
      } else {
        httpLoadBalancingBuilder_.setMessage(value);
      }
      bitField0_ |= 0x00000001;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Configuration for the HTTP (L7) load balancing controller addon, which
     * makes it easy to set up HTTP load balancers for services in a cluster.
     * </pre>
     *
     * <code>.google.container.v1.HttpLoadBalancing http_load_balancing = 1;</code>
     */
    public Builder setHttpLoadBalancing(
        com.google.container.v1.HttpLoadBalancing.Builder builderForValue) {
      if (httpLoadBalancingBuilder_ == null) {
        httpLoadBalancing_ = builderForValue.build();
      } else {
        httpLoadBalancingBuilder_.setMessage(builderForValue.build());
      }
      bitField0_ |= 0x00000001;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Configuration for the HTTP (L7) load balancing controller addon, which
     * makes it easy to set up HTTP load balancers for services in a cluster.
     * </pre>
     *
     * <code>.google.container.v1.HttpLoadBalancing http_load_balancing = 1;</code>
     */
    public Builder mergeHttpLoadBalancing(com.google.container.v1.HttpLoadBalancing value) {
      if (httpLoadBalancingBuilder_ == null) {
        if (((bitField0_ & 0x00000001) != 0)
            && httpLoadBalancing_ != null
            && httpLoadBalancing_
                != com.google.container.v1.HttpLoadBalancing.getDefaultInstance()) {
          getHttpLoadBalancingBuilder().mergeFrom(value);
        } else {
          httpLoadBalancing_ = value;
        }
      } else {
        httpLoadBalancingBuilder_.mergeFrom(value);
      }
      bitField0_ |= 0x00000001;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Configuration for the HTTP (L7) load balancing controller addon, which
     * makes it easy to set up HTTP load balancers for services in a cluster.
     * </pre>
     *
     * <code>.google.container.v1.HttpLoadBalancing http_load_balancing = 1;</code>
     */
    public Builder clearHttpLoadBalancing() {
      bitField0_ = (bitField0_ & ~0x00000001);
      httpLoadBalancing_ = null;
      if (httpLoadBalancingBuilder_ != null) {
        httpLoadBalancingBuilder_.dispose();
        httpLoadBalancingBuilder_ = null;
      }
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Configuration for the HTTP (L7) load balancing controller addon, which
     * makes it easy to set up HTTP load balancers for services in a cluster.
     * </pre>
     *
     * <code>.google.container.v1.HttpLoadBalancing http_load_balancing = 1;</code>
     */
    public com.google.container.v1.HttpLoadBalancing.Builder getHttpLoadBalancingBuilder() {
      bitField0_ |= 0x00000001;
      onChanged();
      return getHttpLoadBalancingFieldBuilder().getBuilder();
    }
    /**
     *
     *
     * <pre>
     * Configuration for the HTTP (L7) load balancing controller addon, which
     * makes it easy to set up HTTP load balancers for services in a cluster.
     * </pre>
     *
     * <code>.google.container.v1.HttpLoadBalancing http_load_balancing = 1;</code>
     */
    public com.google.container.v1.HttpLoadBalancingOrBuilder getHttpLoadBalancingOrBuilder() {
      if (httpLoadBalancingBuilder_ != null) {
        return httpLoadBalancingBuilder_.getMessageOrBuilder();
      } else {
        return httpLoadBalancing_ == null
            ? com.google.container.v1.HttpLoadBalancing.getDefaultInstance()
            : httpLoadBalancing_;
      }
    }
    /**
     *
     *
     * <pre>
     * Configuration for the HTTP (L7) load balancing controller addon, which
     * makes it easy to set up HTTP load balancers for services in a cluster.
     * </pre>
     *
     * <code>.google.container.v1.HttpLoadBalancing http_load_balancing = 1;</code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
            com.google.container.v1.HttpLoadBalancing,
            com.google.container.v1.HttpLoadBalancing.Builder,
            com.google.container.v1.HttpLoadBalancingOrBuilder>
        getHttpLoadBalancingFieldBuilder() {
      if (httpLoadBalancingBuilder_ == null) {
        httpLoadBalancingBuilder_ =
            new com.google.protobuf.SingleFieldBuilderV3<
                com.google.container.v1.HttpLoadBalancing,
                com.google.container.v1.HttpLoadBalancing.Builder,
                com.google.container.v1.HttpLoadBalancingOrBuilder>(
                getHttpLoadBalancing(), getParentForChildren(), isClean());
        httpLoadBalancing_ = null;
      }
      return httpLoadBalancingBuilder_;
    }

    private com.google.container.v1.HorizontalPodAutoscaling horizontalPodAutoscaling_;
    private com.google.protobuf.SingleFieldBuilderV3<
            com.google.container.v1.HorizontalPodAutoscaling,
            com.google.container.v1.HorizontalPodAutoscaling.Builder,
            com.google.container.v1.HorizontalPodAutoscalingOrBuilder>
        horizontalPodAutoscalingBuilder_;
    /**
     *
     *
     * <pre>
     * Configuration for the horizontal pod autoscaling feature, which
     * increases or decreases the number of replica pods a replication controller
     * has based on the resource usage of the existing pods.
     * </pre>
     *
     * <code>.google.container.v1.HorizontalPodAutoscaling horizontal_pod_autoscaling = 2;</code>
     *
     * @return Whether the horizontalPodAutoscaling field is set.
     */
    public boolean hasHorizontalPodAutoscaling() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     *
     *
     * <pre>
     * Configuration for the horizontal pod autoscaling feature, which
     * increases or decreases the number of replica pods a replication controller
     * has based on the resource usage of the existing pods.
     * </pre>
     *
     * <code>.google.container.v1.HorizontalPodAutoscaling horizontal_pod_autoscaling = 2;</code>
     *
     * @return The horizontalPodAutoscaling.
     */
    public com.google.container.v1.HorizontalPodAutoscaling getHorizontalPodAutoscaling() {
      if (horizontalPodAutoscalingBuilder_ == null) {
        return horizontalPodAutoscaling_ == null
            ? com.google.container.v1.HorizontalPodAutoscaling.getDefaultInstance()
            : horizontalPodAutoscaling_;
      } else {
        return horizontalPodAutoscalingBuilder_.getMessage();
      }
    }
    /**
     *
     *
     * <pre>
     * Configuration for the horizontal pod autoscaling feature, which
     * increases or decreases the number of replica pods a replication controller
     * has based on the resource usage of the existing pods.
     * </pre>
     *
     * <code>.google.container.v1.HorizontalPodAutoscaling horizontal_pod_autoscaling = 2;</code>
     */
    public Builder setHorizontalPodAutoscaling(
        com.google.container.v1.HorizontalPodAutoscaling value) {
      if (horizontalPodAutoscalingBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        horizontalPodAutoscaling_ = value;
      } else {
        horizontalPodAutoscalingBuilder_.setMessage(value);
      }
      bitField0_ |= 0x00000002;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Configuration for the horizontal pod autoscaling feature, which
     * increases or decreases the number of replica pods a replication controller
     * has based on the resource usage of the existing pods.
     * </pre>
     *
     * <code>.google.container.v1.HorizontalPodAutoscaling horizontal_pod_autoscaling = 2;</code>
     */
    public Builder setHorizontalPodAutoscaling(
        com.google.container.v1.HorizontalPodAutoscaling.Builder builderForValue) {
      if (horizontalPodAutoscalingBuilder_ == null) {
        horizontalPodAutoscaling_ = builderForValue.build();
      } else {
        horizontalPodAutoscalingBuilder_.setMessage(builderForValue.build());
      }
      bitField0_ |= 0x00000002;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Configuration for the horizontal pod autoscaling feature, which
     * increases or decreases the number of replica pods a replication controller
     * has based on the resource usage of the existing pods.
     * </pre>
     *
     * <code>.google.container.v1.HorizontalPodAutoscaling horizontal_pod_autoscaling = 2;</code>
     */
    public Builder mergeHorizontalPodAutoscaling(
        com.google.container.v1.HorizontalPodAutoscaling value) {
      if (horizontalPodAutoscalingBuilder_ == null) {
        if (((bitField0_ & 0x00000002) != 0)
            && horizontalPodAutoscaling_ != null
            && horizontalPodAutoscaling_
                != com.google.container.v1.HorizontalPodAutoscaling.getDefaultInstance()) {
          getHorizontalPodAutoscalingBuilder().mergeFrom(value);
        } else {
          horizontalPodAutoscaling_ = value;
        }
      } else {
        horizontalPodAutoscalingBuilder_.mergeFrom(value);
      }
      bitField0_ |= 0x00000002;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Configuration for the horizontal pod autoscaling feature, which
     * increases or decreases the number of replica pods a replication controller
     * has based on the resource usage of the existing pods.
     * </pre>
     *
     * <code>.google.container.v1.HorizontalPodAutoscaling horizontal_pod_autoscaling = 2;</code>
     */
    public Builder clearHorizontalPodAutoscaling() {
      bitField0_ = (bitField0_ & ~0x00000002);
      horizontalPodAutoscaling_ = null;
      if (horizontalPodAutoscalingBuilder_ != null) {
        horizontalPodAutoscalingBuilder_.dispose();
        horizontalPodAutoscalingBuilder_ = null;
      }
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Configuration for the horizontal pod autoscaling feature, which
     * increases or decreases the number of replica pods a replication controller
     * has based on the resource usage of the existing pods.
     * </pre>
     *
     * <code>.google.container.v1.HorizontalPodAutoscaling horizontal_pod_autoscaling = 2;</code>
     */
    public com.google.container.v1.HorizontalPodAutoscaling.Builder
        getHorizontalPodAutoscalingBuilder() {
      bitField0_ |= 0x00000002;
      onChanged();
      return getHorizontalPodAutoscalingFieldBuilder().getBuilder();
    }
    /**
     *
     *
     * <pre>
     * Configuration for the horizontal pod autoscaling feature, which
     * increases or decreases the number of replica pods a replication controller
     * has based on the resource usage of the existing pods.
     * </pre>
     *
     * <code>.google.container.v1.HorizontalPodAutoscaling horizontal_pod_autoscaling = 2;</code>
     */
    public com.google.container.v1.HorizontalPodAutoscalingOrBuilder
        getHorizontalPodAutoscalingOrBuilder() {
      if (horizontalPodAutoscalingBuilder_ != null) {
        return horizontalPodAutoscalingBuilder_.getMessageOrBuilder();
      } else {
        return horizontalPodAutoscaling_ == null
            ? com.google.container.v1.HorizontalPodAutoscaling.getDefaultInstance()
            : horizontalPodAutoscaling_;
      }
    }
    /**
     *
     *
     * <pre>
     * Configuration for the horizontal pod autoscaling feature, which
     * increases or decreases the number of replica pods a replication controller
     * has based on the resource usage of the existing pods.
     * </pre>
     *
     * <code>.google.container.v1.HorizontalPodAutoscaling horizontal_pod_autoscaling = 2;</code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
            com.google.container.v1.HorizontalPodAutoscaling,
            com.google.container.v1.HorizontalPodAutoscaling.Builder,
            com.google.container.v1.HorizontalPodAutoscalingOrBuilder>
        getHorizontalPodAutoscalingFieldBuilder() {
      if (horizontalPodAutoscalingBuilder_ == null) {
        horizontalPodAutoscalingBuilder_ =
            new com.google.protobuf.SingleFieldBuilderV3<
                com.google.container.v1.HorizontalPodAutoscaling,
                com.google.container.v1.HorizontalPodAutoscaling.Builder,
                com.google.container.v1.HorizontalPodAutoscalingOrBuilder>(
                getHorizontalPodAutoscaling(), getParentForChildren(), isClean());
        horizontalPodAutoscaling_ = null;
      }
      return horizontalPodAutoscalingBuilder_;
    }

    private com.google.container.v1.KubernetesDashboard kubernetesDashboard_;
    private com.google.protobuf.SingleFieldBuilderV3<
            com.google.container.v1.KubernetesDashboard,
            com.google.container.v1.KubernetesDashboard.Builder,
            com.google.container.v1.KubernetesDashboardOrBuilder>
        kubernetesDashboardBuilder_;
    /**
     *
     *
     * <pre>
     * Configuration for the Kubernetes Dashboard.
     * This addon is deprecated, and will be disabled in 1.15. It is recommended
     * to use the Cloud Console to manage and monitor your Kubernetes clusters,
     * workloads and applications. For more information, see:
     * https://cloud.google.com/kubernetes-engine/docs/concepts/dashboards
     * </pre>
     *
     * <code>.google.container.v1.KubernetesDashboard kubernetes_dashboard = 3 [deprecated = true];
     * </code>
     *
     * @deprecated google.container.v1.AddonsConfig.kubernetes_dashboard is deprecated. See
     *     google/container/v1/cluster_service.proto;l=1108
     * @return Whether the kubernetesDashboard field is set.
     */
    @java.lang.Deprecated
    public boolean hasKubernetesDashboard() {
      return ((bitField0_ & 0x00000004) != 0);
    }
    /**
     *
     *
     * <pre>
     * Configuration for the Kubernetes Dashboard.
     * This addon is deprecated, and will be disabled in 1.15. It is recommended
     * to use the Cloud Console to manage and monitor your Kubernetes clusters,
     * workloads and applications. For more information, see:
     * https://cloud.google.com/kubernetes-engine/docs/concepts/dashboards
     * </pre>
     *
     * <code>.google.container.v1.KubernetesDashboard kubernetes_dashboard = 3 [deprecated = true];
     * </code>
     *
     * @deprecated google.container.v1.AddonsConfig.kubernetes_dashboard is deprecated. See
     *     google/container/v1/cluster_service.proto;l=1108
     * @return The kubernetesDashboard.
     */
    @java.lang.Deprecated
    public com.google.container.v1.KubernetesDashboard getKubernetesDashboard() {
      if (kubernetesDashboardBuilder_ == null) {
        return kubernetesDashboard_ == null
            ? com.google.container.v1.KubernetesDashboard.getDefaultInstance()
            : kubernetesDashboard_;
      } else {
        return kubernetesDashboardBuilder_.getMessage();
      }
    }
    /**
     *
     *
     * <pre>
     * Configuration for the Kubernetes Dashboard.
     * This addon is deprecated, and will be disabled in 1.15. It is recommended
     * to use the Cloud Console to manage and monitor your Kubernetes clusters,
     * workloads and applications. For more information, see:
     * https://cloud.google.com/kubernetes-engine/docs/concepts/dashboards
     * </pre>
     *
     * <code>.google.container.v1.KubernetesDashboard kubernetes_dashboard = 3 [deprecated = true];
     * </code>
     */
    @java.lang.Deprecated
    public Builder setKubernetesDashboard(com.google.container.v1.KubernetesDashboard value) {
      if (kubernetesDashboardBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        kubernetesDashboard_ = value;
      } else {
        kubernetesDashboardBuilder_.setMessage(value);
      }
      bitField0_ |= 0x00000004;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Configuration for the Kubernetes Dashboard.
     * This addon is deprecated, and will be disabled in 1.15. It is recommended
     * to use the Cloud Console to manage and monitor your Kubernetes clusters,
     * workloads and applications. For more information, see:
     * https://cloud.google.com/kubernetes-engine/docs/concepts/dashboards
     * </pre>
     *
     * <code>.google.container.v1.KubernetesDashboard kubernetes_dashboard = 3 [deprecated = true];
     * </code>
     */
    @java.lang.Deprecated
    public Builder setKubernetesDashboard(
        com.google.container.v1.KubernetesDashboard.Builder builderForValue) {
      if (kubernetesDashboardBuilder_ == null) {
        kubernetesDashboard_ = builderForValue.build();
      } else {
        kubernetesDashboardBuilder_.setMessage(builderForValue.build());
      }
      bitField0_ |= 0x00000004;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Configuration for the Kubernetes Dashboard.
     * This addon is deprecated, and will be disabled in 1.15. It is recommended
     * to use the Cloud Console to manage and monitor your Kubernetes clusters,
     * workloads and applications. For more information, see:
     * https://cloud.google.com/kubernetes-engine/docs/concepts/dashboards
     * </pre>
     *
     * <code>.google.container.v1.KubernetesDashboard kubernetes_dashboard = 3 [deprecated = true];
     * </code>
     */
    @java.lang.Deprecated
    public Builder mergeKubernetesDashboard(com.google.container.v1.KubernetesDashboard value) {
      if (kubernetesDashboardBuilder_ == null) {
        if (((bitField0_ & 0x00000004) != 0)
            && kubernetesDashboard_ != null
            && kubernetesDashboard_
                != com.google.container.v1.KubernetesDashboard.getDefaultInstance()) {
          getKubernetesDashboardBuilder().mergeFrom(value);
        } else {
          kubernetesDashboard_ = value;
        }
      } else {
        kubernetesDashboardBuilder_.mergeFrom(value);
      }
      bitField0_ |= 0x00000004;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Configuration for the Kubernetes Dashboard.
     * This addon is deprecated, and will be disabled in 1.15. It is recommended
     * to use the Cloud Console to manage and monitor your Kubernetes clusters,
     * workloads and applications. For more information, see:
     * https://cloud.google.com/kubernetes-engine/docs/concepts/dashboards
     * </pre>
     *
     * <code>.google.container.v1.KubernetesDashboard kubernetes_dashboard = 3 [deprecated = true];
     * </code>
     */
    @java.lang.Deprecated
    public Builder clearKubernetesDashboard() {
      bitField0_ = (bitField0_ & ~0x00000004);
      kubernetesDashboard_ = null;
      if (kubernetesDashboardBuilder_ != null) {
        kubernetesDashboardBuilder_.dispose();
        kubernetesDashboardBuilder_ = null;
      }
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Configuration for the Kubernetes Dashboard.
     * This addon is deprecated, and will be disabled in 1.15. It is recommended
     * to use the Cloud Console to manage and monitor your Kubernetes clusters,
     * workloads and applications. For more information, see:
     * https://cloud.google.com/kubernetes-engine/docs/concepts/dashboards
     * </pre>
     *
     * <code>.google.container.v1.KubernetesDashboard kubernetes_dashboard = 3 [deprecated = true];
     * </code>
     */
    @java.lang.Deprecated
    public com.google.container.v1.KubernetesDashboard.Builder getKubernetesDashboardBuilder() {
      bitField0_ |= 0x00000004;
      onChanged();
      return getKubernetesDashboardFieldBuilder().getBuilder();
    }
    /**
     *
     *
     * <pre>
     * Configuration for the Kubernetes Dashboard.
     * This addon is deprecated, and will be disabled in 1.15. It is recommended
     * to use the Cloud Console to manage and monitor your Kubernetes clusters,
     * workloads and applications. For more information, see:
     * https://cloud.google.com/kubernetes-engine/docs/concepts/dashboards
     * </pre>
     *
     * <code>.google.container.v1.KubernetesDashboard kubernetes_dashboard = 3 [deprecated = true];
     * </code>
     */
    @java.lang.Deprecated
    public com.google.container.v1.KubernetesDashboardOrBuilder getKubernetesDashboardOrBuilder() {
      if (kubernetesDashboardBuilder_ != null) {
        return kubernetesDashboardBuilder_.getMessageOrBuilder();
      } else {
        return kubernetesDashboard_ == null
            ? com.google.container.v1.KubernetesDashboard.getDefaultInstance()
            : kubernetesDashboard_;
      }
    }
    /**
     *
     *
     * <pre>
     * Configuration for the Kubernetes Dashboard.
     * This addon is deprecated, and will be disabled in 1.15. It is recommended
     * to use the Cloud Console to manage and monitor your Kubernetes clusters,
     * workloads and applications. For more information, see:
     * https://cloud.google.com/kubernetes-engine/docs/concepts/dashboards
     * </pre>
     *
     * <code>.google.container.v1.KubernetesDashboard kubernetes_dashboard = 3 [deprecated = true];
     * </code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
            com.google.container.v1.KubernetesDashboard,
            com.google.container.v1.KubernetesDashboard.Builder,
            com.google.container.v1.KubernetesDashboardOrBuilder>
        getKubernetesDashboardFieldBuilder() {
      if (kubernetesDashboardBuilder_ == null) {
        kubernetesDashboardBuilder_ =
            new com.google.protobuf.SingleFieldBuilderV3<
                com.google.container.v1.KubernetesDashboard,
                com.google.container.v1.KubernetesDashboard.Builder,
                com.google.container.v1.KubernetesDashboardOrBuilder>(
                getKubernetesDashboard(), getParentForChildren(), isClean());
        kubernetesDashboard_ = null;
      }
      return kubernetesDashboardBuilder_;
    }

    private com.google.container.v1.NetworkPolicyConfig networkPolicyConfig_;
    private com.google.protobuf.SingleFieldBuilderV3<
            com.google.container.v1.NetworkPolicyConfig,
            com.google.container.v1.NetworkPolicyConfig.Builder,
            com.google.container.v1.NetworkPolicyConfigOrBuilder>
        networkPolicyConfigBuilder_;
    /**
     *
     *
     * <pre>
     * Configuration for NetworkPolicy. This only tracks whether the addon
     * is enabled or not on the Master, it does not track whether network policy
     * is enabled for the nodes.
     * </pre>
     *
     * <code>.google.container.v1.NetworkPolicyConfig network_policy_config = 4;</code>
     *
     * @return Whether the networkPolicyConfig field is set.
     */
    public boolean hasNetworkPolicyConfig() {
      return ((bitField0_ & 0x00000008) != 0);
    }
    /**
     *
     *
     * <pre>
     * Configuration for NetworkPolicy. This only tracks whether the addon
     * is enabled or not on the Master, it does not track whether network policy
     * is enabled for the nodes.
     * </pre>
     *
     * <code>.google.container.v1.NetworkPolicyConfig network_policy_config = 4;</code>
     *
     * @return The networkPolicyConfig.
     */
    public com.google.container.v1.NetworkPolicyConfig getNetworkPolicyConfig() {
      if (networkPolicyConfigBuilder_ == null) {
        return networkPolicyConfig_ == null
            ? com.google.container.v1.NetworkPolicyConfig.getDefaultInstance()
            : networkPolicyConfig_;
      } else {
        return networkPolicyConfigBuilder_.getMessage();
      }
    }
    /**
     *
     *
     * <pre>
     * Configuration for NetworkPolicy. This only tracks whether the addon
     * is enabled or not on the Master, it does not track whether network policy
     * is enabled for the nodes.
     * </pre>
     *
     * <code>.google.container.v1.NetworkPolicyConfig network_policy_config = 4;</code>
     */
    public Builder setNetworkPolicyConfig(com.google.container.v1.NetworkPolicyConfig value) {
      if (networkPolicyConfigBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        networkPolicyConfig_ = value;
      } else {
        networkPolicyConfigBuilder_.setMessage(value);
      }
      bitField0_ |= 0x00000008;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Configuration for NetworkPolicy. This only tracks whether the addon
     * is enabled or not on the Master, it does not track whether network policy
     * is enabled for the nodes.
     * </pre>
     *
     * <code>.google.container.v1.NetworkPolicyConfig network_policy_config = 4;</code>
     */
    public Builder setNetworkPolicyConfig(
        com.google.container.v1.NetworkPolicyConfig.Builder builderForValue) {
      if (networkPolicyConfigBuilder_ == null) {
        networkPolicyConfig_ = builderForValue.build();
      } else {
        networkPolicyConfigBuilder_.setMessage(builderForValue.build());
      }
      bitField0_ |= 0x00000008;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Configuration for NetworkPolicy. This only tracks whether the addon
     * is enabled or not on the Master, it does not track whether network policy
     * is enabled for the nodes.
     * </pre>
     *
     * <code>.google.container.v1.NetworkPolicyConfig network_policy_config = 4;</code>
     */
    public Builder mergeNetworkPolicyConfig(com.google.container.v1.NetworkPolicyConfig value) {
      if (networkPolicyConfigBuilder_ == null) {
        if (((bitField0_ & 0x00000008) != 0)
            && networkPolicyConfig_ != null
            && networkPolicyConfig_
                != com.google.container.v1.NetworkPolicyConfig.getDefaultInstance()) {
          getNetworkPolicyConfigBuilder().mergeFrom(value);
        } else {
          networkPolicyConfig_ = value;
        }
      } else {
        networkPolicyConfigBuilder_.mergeFrom(value);
      }
      bitField0_ |= 0x00000008;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Configuration for NetworkPolicy. This only tracks whether the addon
     * is enabled or not on the Master, it does not track whether network policy
     * is enabled for the nodes.
     * </pre>
     *
     * <code>.google.container.v1.NetworkPolicyConfig network_policy_config = 4;</code>
     */
    public Builder clearNetworkPolicyConfig() {
      bitField0_ = (bitField0_ & ~0x00000008);
      networkPolicyConfig_ = null;
      if (networkPolicyConfigBuilder_ != null) {
        networkPolicyConfigBuilder_.dispose();
        networkPolicyConfigBuilder_ = null;
      }
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Configuration for NetworkPolicy. This only tracks whether the addon
     * is enabled or not on the Master, it does not track whether network policy
     * is enabled for the nodes.
     * </pre>
     *
     * <code>.google.container.v1.NetworkPolicyConfig network_policy_config = 4;</code>
     */
    public com.google.container.v1.NetworkPolicyConfig.Builder getNetworkPolicyConfigBuilder() {
      bitField0_ |= 0x00000008;
      onChanged();
      return getNetworkPolicyConfigFieldBuilder().getBuilder();
    }
    /**
     *
     *
     * <pre>
     * Configuration for NetworkPolicy. This only tracks whether the addon
     * is enabled or not on the Master, it does not track whether network policy
     * is enabled for the nodes.
     * </pre>
     *
     * <code>.google.container.v1.NetworkPolicyConfig network_policy_config = 4;</code>
     */
    public com.google.container.v1.NetworkPolicyConfigOrBuilder getNetworkPolicyConfigOrBuilder() {
      if (networkPolicyConfigBuilder_ != null) {
        return networkPolicyConfigBuilder_.getMessageOrBuilder();
      } else {
        return networkPolicyConfig_ == null
            ? com.google.container.v1.NetworkPolicyConfig.getDefaultInstance()
            : networkPolicyConfig_;
      }
    }
    /**
     *
     *
     * <pre>
     * Configuration for NetworkPolicy. This only tracks whether the addon
     * is enabled or not on the Master, it does not track whether network policy
     * is enabled for the nodes.
     * </pre>
     *
     * <code>.google.container.v1.NetworkPolicyConfig network_policy_config = 4;</code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
            com.google.container.v1.NetworkPolicyConfig,
            com.google.container.v1.NetworkPolicyConfig.Builder,
            com.google.container.v1.NetworkPolicyConfigOrBuilder>
        getNetworkPolicyConfigFieldBuilder() {
      if (networkPolicyConfigBuilder_ == null) {
        networkPolicyConfigBuilder_ =
            new com.google.protobuf.SingleFieldBuilderV3<
                com.google.container.v1.NetworkPolicyConfig,
                com.google.container.v1.NetworkPolicyConfig.Builder,
                com.google.container.v1.NetworkPolicyConfigOrBuilder>(
                getNetworkPolicyConfig(), getParentForChildren(), isClean());
        networkPolicyConfig_ = null;
      }
      return networkPolicyConfigBuilder_;
    }

    private com.google.container.v1.CloudRunConfig cloudRunConfig_;
    private com.google.protobuf.SingleFieldBuilderV3<
            com.google.container.v1.CloudRunConfig,
            com.google.container.v1.CloudRunConfig.Builder,
            com.google.container.v1.CloudRunConfigOrBuilder>
        cloudRunConfigBuilder_;
    /**
     *
     *
     * <pre>
     * Configuration for the Cloud Run addon, which allows the user to use a
     * managed Knative service.
     * </pre>
     *
     * <code>.google.container.v1.CloudRunConfig cloud_run_config = 7;</code>
     *
     * @return Whether the cloudRunConfig field is set.
     */
    public boolean hasCloudRunConfig() {
      return ((bitField0_ & 0x00000010) != 0);
    }
    /**
     *
     *
     * <pre>
     * Configuration for the Cloud Run addon, which allows the user to use a
     * managed Knative service.
     * </pre>
     *
     * <code>.google.container.v1.CloudRunConfig cloud_run_config = 7;</code>
     *
     * @return The cloudRunConfig.
     */
    public com.google.container.v1.CloudRunConfig getCloudRunConfig() {
      if (cloudRunConfigBuilder_ == null) {
        return cloudRunConfig_ == null
            ? com.google.container.v1.CloudRunConfig.getDefaultInstance()
            : cloudRunConfig_;
      } else {
        return cloudRunConfigBuilder_.getMessage();
      }
    }
    /**
     *
     *
     * <pre>
     * Configuration for the Cloud Run addon, which allows the user to use a
     * managed Knative service.
     * </pre>
     *
     * <code>.google.container.v1.CloudRunConfig cloud_run_config = 7;</code>
     */
    public Builder setCloudRunConfig(com.google.container.v1.CloudRunConfig value) {
      if (cloudRunConfigBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        cloudRunConfig_ = value;
      } else {
        cloudRunConfigBuilder_.setMessage(value);
      }
      bitField0_ |= 0x00000010;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Configuration for the Cloud Run addon, which allows the user to use a
     * managed Knative service.
     * </pre>
     *
     * <code>.google.container.v1.CloudRunConfig cloud_run_config = 7;</code>
     */
    public Builder setCloudRunConfig(
        com.google.container.v1.CloudRunConfig.Builder builderForValue) {
      if (cloudRunConfigBuilder_ == null) {
        cloudRunConfig_ = builderForValue.build();
      } else {
        cloudRunConfigBuilder_.setMessage(builderForValue.build());
      }
      bitField0_ |= 0x00000010;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Configuration for the Cloud Run addon, which allows the user to use a
     * managed Knative service.
     * </pre>
     *
     * <code>.google.container.v1.CloudRunConfig cloud_run_config = 7;</code>
     */
    public Builder mergeCloudRunConfig(com.google.container.v1.CloudRunConfig value) {
      if (cloudRunConfigBuilder_ == null) {
        if (((bitField0_ & 0x00000010) != 0)
            && cloudRunConfig_ != null
            && cloudRunConfig_ != com.google.container.v1.CloudRunConfig.getDefaultInstance()) {
          getCloudRunConfigBuilder().mergeFrom(value);
        } else {
          cloudRunConfig_ = value;
        }
      } else {
        cloudRunConfigBuilder_.mergeFrom(value);
      }
      bitField0_ |= 0x00000010;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Configuration for the Cloud Run addon, which allows the user to use a
     * managed Knative service.
     * </pre>
     *
     * <code>.google.container.v1.CloudRunConfig cloud_run_config = 7;</code>
     */
    public Builder clearCloudRunConfig() {
      bitField0_ = (bitField0_ & ~0x00000010);
      cloudRunConfig_ = null;
      if (cloudRunConfigBuilder_ != null) {
        cloudRunConfigBuilder_.dispose();
        cloudRunConfigBuilder_ = null;
      }
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Configuration for the Cloud Run addon, which allows the user to use a
     * managed Knative service.
     * </pre>
     *
     * <code>.google.container.v1.CloudRunConfig cloud_run_config = 7;</code>
     */
    public com.google.container.v1.CloudRunConfig.Builder getCloudRunConfigBuilder() {
      bitField0_ |= 0x00000010;
      onChanged();
      return getCloudRunConfigFieldBuilder().getBuilder();
    }
    /**
     *
     *
     * <pre>
     * Configuration for the Cloud Run addon, which allows the user to use a
     * managed Knative service.
     * </pre>
     *
     * <code>.google.container.v1.CloudRunConfig cloud_run_config = 7;</code>
     */
    public com.google.container.v1.CloudRunConfigOrBuilder getCloudRunConfigOrBuilder() {
      if (cloudRunConfigBuilder_ != null) {
        return cloudRunConfigBuilder_.getMessageOrBuilder();
      } else {
        return cloudRunConfig_ == null
            ? com.google.container.v1.CloudRunConfig.getDefaultInstance()
            : cloudRunConfig_;
      }
    }
    /**
     *
     *
     * <pre>
     * Configuration for the Cloud Run addon, which allows the user to use a
     * managed Knative service.
     * </pre>
     *
     * <code>.google.container.v1.CloudRunConfig cloud_run_config = 7;</code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
            com.google.container.v1.CloudRunConfig,
            com.google.container.v1.CloudRunConfig.Builder,
            com.google.container.v1.CloudRunConfigOrBuilder>
        getCloudRunConfigFieldBuilder() {
      if (cloudRunConfigBuilder_ == null) {
        cloudRunConfigBuilder_ =
            new com.google.protobuf.SingleFieldBuilderV3<
                com.google.container.v1.CloudRunConfig,
                com.google.container.v1.CloudRunConfig.Builder,
                com.google.container.v1.CloudRunConfigOrBuilder>(
                getCloudRunConfig(), getParentForChildren(), isClean());
        cloudRunConfig_ = null;
      }
      return cloudRunConfigBuilder_;
    }

    private com.google.container.v1.DnsCacheConfig dnsCacheConfig_;
    private com.google.protobuf.SingleFieldBuilderV3<
            com.google.container.v1.DnsCacheConfig,
            com.google.container.v1.DnsCacheConfig.Builder,
            com.google.container.v1.DnsCacheConfigOrBuilder>
        dnsCacheConfigBuilder_;
    /**
     *
     *
     * <pre>
     * Configuration for NodeLocalDNS, a dns cache running on cluster nodes
     * </pre>
     *
     * <code>.google.container.v1.DnsCacheConfig dns_cache_config = 8;</code>
     *
     * @return Whether the dnsCacheConfig field is set.
     */
    public boolean hasDnsCacheConfig() {
      return ((bitField0_ & 0x00000020) != 0);
    }
    /**
     *
     *
     * <pre>
     * Configuration for NodeLocalDNS, a dns cache running on cluster nodes
     * </pre>
     *
     * <code>.google.container.v1.DnsCacheConfig dns_cache_config = 8;</code>
     *
     * @return The dnsCacheConfig.
     */
    public com.google.container.v1.DnsCacheConfig getDnsCacheConfig() {
      if (dnsCacheConfigBuilder_ == null) {
        return dnsCacheConfig_ == null
            ? com.google.container.v1.DnsCacheConfig.getDefaultInstance()
            : dnsCacheConfig_;
      } else {
        return dnsCacheConfigBuilder_.getMessage();
      }
    }
    /**
     *
     *
     * <pre>
     * Configuration for NodeLocalDNS, a dns cache running on cluster nodes
     * </pre>
     *
     * <code>.google.container.v1.DnsCacheConfig dns_cache_config = 8;</code>
     */
    public Builder setDnsCacheConfig(com.google.container.v1.DnsCacheConfig value) {
      if (dnsCacheConfigBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        dnsCacheConfig_ = value;
      } else {
        dnsCacheConfigBuilder_.setMessage(value);
      }
      bitField0_ |= 0x00000020;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Configuration for NodeLocalDNS, a dns cache running on cluster nodes
     * </pre>
     *
     * <code>.google.container.v1.DnsCacheConfig dns_cache_config = 8;</code>
     */
    public Builder setDnsCacheConfig(
        com.google.container.v1.DnsCacheConfig.Builder builderForValue) {
      if (dnsCacheConfigBuilder_ == null) {
        dnsCacheConfig_ = builderForValue.build();
      } else {
        dnsCacheConfigBuilder_.setMessage(builderForValue.build());
      }
      bitField0_ |= 0x00000020;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Configuration for NodeLocalDNS, a dns cache running on cluster nodes
     * </pre>
     *
     * <code>.google.container.v1.DnsCacheConfig dns_cache_config = 8;</code>
     */
    public Builder mergeDnsCacheConfig(com.google.container.v1.DnsCacheConfig value) {
      if (dnsCacheConfigBuilder_ == null) {
        if (((bitField0_ & 0x00000020) != 0)
            && dnsCacheConfig_ != null
            && dnsCacheConfig_ != com.google.container.v1.DnsCacheConfig.getDefaultInstance()) {
          getDnsCacheConfigBuilder().mergeFrom(value);
        } else {
          dnsCacheConfig_ = value;
        }
      } else {
        dnsCacheConfigBuilder_.mergeFrom(value);
      }
      bitField0_ |= 0x00000020;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Configuration for NodeLocalDNS, a dns cache running on cluster nodes
     * </pre>
     *
     * <code>.google.container.v1.DnsCacheConfig dns_cache_config = 8;</code>
     */
    public Builder clearDnsCacheConfig() {
      bitField0_ = (bitField0_ & ~0x00000020);
      dnsCacheConfig_ = null;
      if (dnsCacheConfigBuilder_ != null) {
        dnsCacheConfigBuilder_.dispose();
        dnsCacheConfigBuilder_ = null;
      }
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Configuration for NodeLocalDNS, a dns cache running on cluster nodes
     * </pre>
     *
     * <code>.google.container.v1.DnsCacheConfig dns_cache_config = 8;</code>
     */
    public com.google.container.v1.DnsCacheConfig.Builder getDnsCacheConfigBuilder() {
      bitField0_ |= 0x00000020;
      onChanged();
      return getDnsCacheConfigFieldBuilder().getBuilder();
    }
    /**
     *
     *
     * <pre>
     * Configuration for NodeLocalDNS, a dns cache running on cluster nodes
     * </pre>
     *
     * <code>.google.container.v1.DnsCacheConfig dns_cache_config = 8;</code>
     */
    public com.google.container.v1.DnsCacheConfigOrBuilder getDnsCacheConfigOrBuilder() {
      if (dnsCacheConfigBuilder_ != null) {
        return dnsCacheConfigBuilder_.getMessageOrBuilder();
      } else {
        return dnsCacheConfig_ == null
            ? com.google.container.v1.DnsCacheConfig.getDefaultInstance()
            : dnsCacheConfig_;
      }
    }
    /**
     *
     *
     * <pre>
     * Configuration for NodeLocalDNS, a dns cache running on cluster nodes
     * </pre>
     *
     * <code>.google.container.v1.DnsCacheConfig dns_cache_config = 8;</code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
            com.google.container.v1.DnsCacheConfig,
            com.google.container.v1.DnsCacheConfig.Builder,
            com.google.container.v1.DnsCacheConfigOrBuilder>
        getDnsCacheConfigFieldBuilder() {
      if (dnsCacheConfigBuilder_ == null) {
        dnsCacheConfigBuilder_ =
            new com.google.protobuf.SingleFieldBuilderV3<
                com.google.container.v1.DnsCacheConfig,
                com.google.container.v1.DnsCacheConfig.Builder,
                com.google.container.v1.DnsCacheConfigOrBuilder>(
                getDnsCacheConfig(), getParentForChildren(), isClean());
        dnsCacheConfig_ = null;
      }
      return dnsCacheConfigBuilder_;
    }

    private com.google.container.v1.ConfigConnectorConfig configConnectorConfig_;
    private com.google.protobuf.SingleFieldBuilderV3<
            com.google.container.v1.ConfigConnectorConfig,
            com.google.container.v1.ConfigConnectorConfig.Builder,
            com.google.container.v1.ConfigConnectorConfigOrBuilder>
        configConnectorConfigBuilder_;
    /**
     *
     *
     * <pre>
     * Configuration for the ConfigConnector add-on, a Kubernetes
     * extension to manage hosted GCP services through the Kubernetes API
     * </pre>
     *
     * <code>.google.container.v1.ConfigConnectorConfig config_connector_config = 10;</code>
     *
     * @return Whether the configConnectorConfig field is set.
     */
    public boolean hasConfigConnectorConfig() {
      return ((bitField0_ & 0x00000040) != 0);
    }
    /**
     *
     *
     * <pre>
     * Configuration for the ConfigConnector add-on, a Kubernetes
     * extension to manage hosted GCP services through the Kubernetes API
     * </pre>
     *
     * <code>.google.container.v1.ConfigConnectorConfig config_connector_config = 10;</code>
     *
     * @return The configConnectorConfig.
     */
    public com.google.container.v1.ConfigConnectorConfig getConfigConnectorConfig() {
      if (configConnectorConfigBuilder_ == null) {
        return configConnectorConfig_ == null
            ? com.google.container.v1.ConfigConnectorConfig.getDefaultInstance()
            : configConnectorConfig_;
      } else {
        return configConnectorConfigBuilder_.getMessage();
      }
    }
    /**
     *
     *
     * <pre>
     * Configuration for the ConfigConnector add-on, a Kubernetes
     * extension to manage hosted GCP services through the Kubernetes API
     * </pre>
     *
     * <code>.google.container.v1.ConfigConnectorConfig config_connector_config = 10;</code>
     */
    public Builder setConfigConnectorConfig(com.google.container.v1.ConfigConnectorConfig value) {
      if (configConnectorConfigBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        configConnectorConfig_ = value;
      } else {
        configConnectorConfigBuilder_.setMessage(value);
      }
      bitField0_ |= 0x00000040;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Configuration for the ConfigConnector add-on, a Kubernetes
     * extension to manage hosted GCP services through the Kubernetes API
     * </pre>
     *
     * <code>.google.container.v1.ConfigConnectorConfig config_connector_config = 10;</code>
     */
    public Builder setConfigConnectorConfig(
        com.google.container.v1.ConfigConnectorConfig.Builder builderForValue) {
      if (configConnectorConfigBuilder_ == null) {
        configConnectorConfig_ = builderForValue.build();
      } else {
        configConnectorConfigBuilder_.setMessage(builderForValue.build());
      }
      bitField0_ |= 0x00000040;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Configuration for the ConfigConnector add-on, a Kubernetes
     * extension to manage hosted GCP services through the Kubernetes API
     * </pre>
     *
     * <code>.google.container.v1.ConfigConnectorConfig config_connector_config = 10;</code>
     */
    public Builder mergeConfigConnectorConfig(com.google.container.v1.ConfigConnectorConfig value) {
      if (configConnectorConfigBuilder_ == null) {
        if (((bitField0_ & 0x00000040) != 0)
            && configConnectorConfig_ != null
            && configConnectorConfig_
                != com.google.container.v1.ConfigConnectorConfig.getDefaultInstance()) {
          getConfigConnectorConfigBuilder().mergeFrom(value);
        } else {
          configConnectorConfig_ = value;
        }
      } else {
        configConnectorConfigBuilder_.mergeFrom(value);
      }
      bitField0_ |= 0x00000040;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Configuration for the ConfigConnector add-on, a Kubernetes
     * extension to manage hosted GCP services through the Kubernetes API
     * </pre>
     *
     * <code>.google.container.v1.ConfigConnectorConfig config_connector_config = 10;</code>
     */
    public Builder clearConfigConnectorConfig() {
      bitField0_ = (bitField0_ & ~0x00000040);
      configConnectorConfig_ = null;
      if (configConnectorConfigBuilder_ != null) {
        configConnectorConfigBuilder_.dispose();
        configConnectorConfigBuilder_ = null;
      }
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Configuration for the ConfigConnector add-on, a Kubernetes
     * extension to manage hosted GCP services through the Kubernetes API
     * </pre>
     *
     * <code>.google.container.v1.ConfigConnectorConfig config_connector_config = 10;</code>
     */
    public com.google.container.v1.ConfigConnectorConfig.Builder getConfigConnectorConfigBuilder() {
      bitField0_ |= 0x00000040;
      onChanged();
      return getConfigConnectorConfigFieldBuilder().getBuilder();
    }
    /**
     *
     *
     * <pre>
     * Configuration for the ConfigConnector add-on, a Kubernetes
     * extension to manage hosted GCP services through the Kubernetes API
     * </pre>
     *
     * <code>.google.container.v1.ConfigConnectorConfig config_connector_config = 10;</code>
     */
    public com.google.container.v1.ConfigConnectorConfigOrBuilder
        getConfigConnectorConfigOrBuilder() {
      if (configConnectorConfigBuilder_ != null) {
        return configConnectorConfigBuilder_.getMessageOrBuilder();
      } else {
        return configConnectorConfig_ == null
            ? com.google.container.v1.ConfigConnectorConfig.getDefaultInstance()
            : configConnectorConfig_;
      }
    }
    /**
     *
     *
     * <pre>
     * Configuration for the ConfigConnector add-on, a Kubernetes
     * extension to manage hosted GCP services through the Kubernetes API
     * </pre>
     *
     * <code>.google.container.v1.ConfigConnectorConfig config_connector_config = 10;</code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
            com.google.container.v1.ConfigConnectorConfig,
            com.google.container.v1.ConfigConnectorConfig.Builder,
            com.google.container.v1.ConfigConnectorConfigOrBuilder>
        getConfigConnectorConfigFieldBuilder() {
      if (configConnectorConfigBuilder_ == null) {
        configConnectorConfigBuilder_ =
            new com.google.protobuf.SingleFieldBuilderV3<
                com.google.container.v1.ConfigConnectorConfig,
                com.google.container.v1.ConfigConnectorConfig.Builder,
                com.google.container.v1.ConfigConnectorConfigOrBuilder>(
                getConfigConnectorConfig(), getParentForChildren(), isClean());
        configConnectorConfig_ = null;
      }
      return configConnectorConfigBuilder_;
    }

    private com.google.container.v1.GcePersistentDiskCsiDriverConfig
        gcePersistentDiskCsiDriverConfig_;
    private com.google.protobuf.SingleFieldBuilderV3<
            com.google.container.v1.GcePersistentDiskCsiDriverConfig,
            com.google.container.v1.GcePersistentDiskCsiDriverConfig.Builder,
            com.google.container.v1.GcePersistentDiskCsiDriverConfigOrBuilder>
        gcePersistentDiskCsiDriverConfigBuilder_;
    /**
     *
     *
     * <pre>
     * Configuration for the Compute Engine Persistent Disk CSI driver.
     * </pre>
     *
     * <code>
     * .google.container.v1.GcePersistentDiskCsiDriverConfig gce_persistent_disk_csi_driver_config = 11;
     * </code>
     *
     * @return Whether the gcePersistentDiskCsiDriverConfig field is set.
     */
    public boolean hasGcePersistentDiskCsiDriverConfig() {
      return ((bitField0_ & 0x00000080) != 0);
    }
    /**
     *
     *
     * <pre>
     * Configuration for the Compute Engine Persistent Disk CSI driver.
     * </pre>
     *
     * <code>
     * .google.container.v1.GcePersistentDiskCsiDriverConfig gce_persistent_disk_csi_driver_config = 11;
     * </code>
     *
     * @return The gcePersistentDiskCsiDriverConfig.
     */
    public com.google.container.v1.GcePersistentDiskCsiDriverConfig
        getGcePersistentDiskCsiDriverConfig() {
      if (gcePersistentDiskCsiDriverConfigBuilder_ == null) {
        return gcePersistentDiskCsiDriverConfig_ == null
            ? com.google.container.v1.GcePersistentDiskCsiDriverConfig.getDefaultInstance()
            : gcePersistentDiskCsiDriverConfig_;
      } else {
        return gcePersistentDiskCsiDriverConfigBuilder_.getMessage();
      }
    }
    /**
     *
     *
     * <pre>
     * Configuration for the Compute Engine Persistent Disk CSI driver.
     * </pre>
     *
     * <code>
     * .google.container.v1.GcePersistentDiskCsiDriverConfig gce_persistent_disk_csi_driver_config = 11;
     * </code>
     */
    public Builder setGcePersistentDiskCsiDriverConfig(
        com.google.container.v1.GcePersistentDiskCsiDriverConfig value) {
      if (gcePersistentDiskCsiDriverConfigBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        gcePersistentDiskCsiDriverConfig_ = value;
      } else {
        gcePersistentDiskCsiDriverConfigBuilder_.setMessage(value);
      }
      bitField0_ |= 0x00000080;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Configuration for the Compute Engine Persistent Disk CSI driver.
     * </pre>
     *
     * <code>
     * .google.container.v1.GcePersistentDiskCsiDriverConfig gce_persistent_disk_csi_driver_config = 11;
     * </code>
     */
    public Builder setGcePersistentDiskCsiDriverConfig(
        com.google.container.v1.GcePersistentDiskCsiDriverConfig.Builder builderForValue) {
      if (gcePersistentDiskCsiDriverConfigBuilder_ == null) {
        gcePersistentDiskCsiDriverConfig_ = builderForValue.build();
      } else {
        gcePersistentDiskCsiDriverConfigBuilder_.setMessage(builderForValue.build());
      }
      bitField0_ |= 0x00000080;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Configuration for the Compute Engine Persistent Disk CSI driver.
     * </pre>
     *
     * <code>
     * .google.container.v1.GcePersistentDiskCsiDriverConfig gce_persistent_disk_csi_driver_config = 11;
     * </code>
     */
    public Builder mergeGcePersistentDiskCsiDriverConfig(
        com.google.container.v1.GcePersistentDiskCsiDriverConfig value) {
      if (gcePersistentDiskCsiDriverConfigBuilder_ == null) {
        if (((bitField0_ & 0x00000080) != 0)
            && gcePersistentDiskCsiDriverConfig_ != null
            && gcePersistentDiskCsiDriverConfig_
                != com.google.container.v1.GcePersistentDiskCsiDriverConfig.getDefaultInstance()) {
          getGcePersistentDiskCsiDriverConfigBuilder().mergeFrom(value);
        } else {
          gcePersistentDiskCsiDriverConfig_ = value;
        }
      } else {
        gcePersistentDiskCsiDriverConfigBuilder_.mergeFrom(value);
      }
      bitField0_ |= 0x00000080;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Configuration for the Compute Engine Persistent Disk CSI driver.
     * </pre>
     *
     * <code>
     * .google.container.v1.GcePersistentDiskCsiDriverConfig gce_persistent_disk_csi_driver_config = 11;
     * </code>
     */
    public Builder clearGcePersistentDiskCsiDriverConfig() {
      bitField0_ = (bitField0_ & ~0x00000080);
      gcePersistentDiskCsiDriverConfig_ = null;
      if (gcePersistentDiskCsiDriverConfigBuilder_ != null) {
        gcePersistentDiskCsiDriverConfigBuilder_.dispose();
        gcePersistentDiskCsiDriverConfigBuilder_ = null;
      }
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Configuration for the Compute Engine Persistent Disk CSI driver.
     * </pre>
     *
     * <code>
     * .google.container.v1.GcePersistentDiskCsiDriverConfig gce_persistent_disk_csi_driver_config = 11;
     * </code>
     */
    public com.google.container.v1.GcePersistentDiskCsiDriverConfig.Builder
        getGcePersistentDiskCsiDriverConfigBuilder() {
      bitField0_ |= 0x00000080;
      onChanged();
      return getGcePersistentDiskCsiDriverConfigFieldBuilder().getBuilder();
    }
    /**
     *
     *
     * <pre>
     * Configuration for the Compute Engine Persistent Disk CSI driver.
     * </pre>
     *
     * <code>
     * .google.container.v1.GcePersistentDiskCsiDriverConfig gce_persistent_disk_csi_driver_config = 11;
     * </code>
     */
    public com.google.container.v1.GcePersistentDiskCsiDriverConfigOrBuilder
        getGcePersistentDiskCsiDriverConfigOrBuilder() {
      if (gcePersistentDiskCsiDriverConfigBuilder_ != null) {
        return gcePersistentDiskCsiDriverConfigBuilder_.getMessageOrBuilder();
      } else {
        return gcePersistentDiskCsiDriverConfig_ == null
            ? com.google.container.v1.GcePersistentDiskCsiDriverConfig.getDefaultInstance()
            : gcePersistentDiskCsiDriverConfig_;
      }
    }
    /**
     *
     *
     * <pre>
     * Configuration for the Compute Engine Persistent Disk CSI driver.
     * </pre>
     *
     * <code>
     * .google.container.v1.GcePersistentDiskCsiDriverConfig gce_persistent_disk_csi_driver_config = 11;
     * </code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
            com.google.container.v1.GcePersistentDiskCsiDriverConfig,
            com.google.container.v1.GcePersistentDiskCsiDriverConfig.Builder,
            com.google.container.v1.GcePersistentDiskCsiDriverConfigOrBuilder>
        getGcePersistentDiskCsiDriverConfigFieldBuilder() {
      if (gcePersistentDiskCsiDriverConfigBuilder_ == null) {
        gcePersistentDiskCsiDriverConfigBuilder_ =
            new com.google.protobuf.SingleFieldBuilderV3<
                com.google.container.v1.GcePersistentDiskCsiDriverConfig,
                com.google.container.v1.GcePersistentDiskCsiDriverConfig.Builder,
                com.google.container.v1.GcePersistentDiskCsiDriverConfigOrBuilder>(
                getGcePersistentDiskCsiDriverConfig(), getParentForChildren(), isClean());
        gcePersistentDiskCsiDriverConfig_ = null;
      }
      return gcePersistentDiskCsiDriverConfigBuilder_;
    }

    private com.google.container.v1.GcpFilestoreCsiDriverConfig gcpFilestoreCsiDriverConfig_;
    private com.google.protobuf.SingleFieldBuilderV3<
            com.google.container.v1.GcpFilestoreCsiDriverConfig,
            com.google.container.v1.GcpFilestoreCsiDriverConfig.Builder,
            com.google.container.v1.GcpFilestoreCsiDriverConfigOrBuilder>
        gcpFilestoreCsiDriverConfigBuilder_;
    /**
     *
     *
     * <pre>
     * Configuration for the GCP Filestore CSI driver.
     * </pre>
     *
     * <code>.google.container.v1.GcpFilestoreCsiDriverConfig gcp_filestore_csi_driver_config = 14;
     * </code>
     *
     * @return Whether the gcpFilestoreCsiDriverConfig field is set.
     */
    public boolean hasGcpFilestoreCsiDriverConfig() {
      return ((bitField0_ & 0x00000100) != 0);
    }
    /**
     *
     *
     * <pre>
     * Configuration for the GCP Filestore CSI driver.
     * </pre>
     *
     * <code>.google.container.v1.GcpFilestoreCsiDriverConfig gcp_filestore_csi_driver_config = 14;
     * </code>
     *
     * @return The gcpFilestoreCsiDriverConfig.
     */
    public com.google.container.v1.GcpFilestoreCsiDriverConfig getGcpFilestoreCsiDriverConfig() {
      if (gcpFilestoreCsiDriverConfigBuilder_ == null) {
        return gcpFilestoreCsiDriverConfig_ == null
            ? com.google.container.v1.GcpFilestoreCsiDriverConfig.getDefaultInstance()
            : gcpFilestoreCsiDriverConfig_;
      } else {
        return gcpFilestoreCsiDriverConfigBuilder_.getMessage();
      }
    }
    /**
     *
     *
     * <pre>
     * Configuration for the GCP Filestore CSI driver.
     * </pre>
     *
     * <code>.google.container.v1.GcpFilestoreCsiDriverConfig gcp_filestore_csi_driver_config = 14;
     * </code>
     */
    public Builder setGcpFilestoreCsiDriverConfig(
        com.google.container.v1.GcpFilestoreCsiDriverConfig value) {
      if (gcpFilestoreCsiDriverConfigBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        gcpFilestoreCsiDriverConfig_ = value;
      } else {
        gcpFilestoreCsiDriverConfigBuilder_.setMessage(value);
      }
      bitField0_ |= 0x00000100;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Configuration for the GCP Filestore CSI driver.
     * </pre>
     *
     * <code>.google.container.v1.GcpFilestoreCsiDriverConfig gcp_filestore_csi_driver_config = 14;
     * </code>
     */
    public Builder setGcpFilestoreCsiDriverConfig(
        com.google.container.v1.GcpFilestoreCsiDriverConfig.Builder builderForValue) {
      if (gcpFilestoreCsiDriverConfigBuilder_ == null) {
        gcpFilestoreCsiDriverConfig_ = builderForValue.build();
      } else {
        gcpFilestoreCsiDriverConfigBuilder_.setMessage(builderForValue.build());
      }
      bitField0_ |= 0x00000100;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Configuration for the GCP Filestore CSI driver.
     * </pre>
     *
     * <code>.google.container.v1.GcpFilestoreCsiDriverConfig gcp_filestore_csi_driver_config = 14;
     * </code>
     */
    public Builder mergeGcpFilestoreCsiDriverConfig(
        com.google.container.v1.GcpFilestoreCsiDriverConfig value) {
      if (gcpFilestoreCsiDriverConfigBuilder_ == null) {
        if (((bitField0_ & 0x00000100) != 0)
            && gcpFilestoreCsiDriverConfig_ != null
            && gcpFilestoreCsiDriverConfig_
                != com.google.container.v1.GcpFilestoreCsiDriverConfig.getDefaultInstance()) {
          getGcpFilestoreCsiDriverConfigBuilder().mergeFrom(value);
        } else {
          gcpFilestoreCsiDriverConfig_ = value;
        }
      } else {
        gcpFilestoreCsiDriverConfigBuilder_.mergeFrom(value);
      }
      bitField0_ |= 0x00000100;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Configuration for the GCP Filestore CSI driver.
     * </pre>
     *
     * <code>.google.container.v1.GcpFilestoreCsiDriverConfig gcp_filestore_csi_driver_config = 14;
     * </code>
     */
    public Builder clearGcpFilestoreCsiDriverConfig() {
      bitField0_ = (bitField0_ & ~0x00000100);
      gcpFilestoreCsiDriverConfig_ = null;
      if (gcpFilestoreCsiDriverConfigBuilder_ != null) {
        gcpFilestoreCsiDriverConfigBuilder_.dispose();
        gcpFilestoreCsiDriverConfigBuilder_ = null;
      }
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Configuration for the GCP Filestore CSI driver.
     * </pre>
     *
     * <code>.google.container.v1.GcpFilestoreCsiDriverConfig gcp_filestore_csi_driver_config = 14;
     * </code>
     */
    public com.google.container.v1.GcpFilestoreCsiDriverConfig.Builder
        getGcpFilestoreCsiDriverConfigBuilder() {
      bitField0_ |= 0x00000100;
      onChanged();
      return getGcpFilestoreCsiDriverConfigFieldBuilder().getBuilder();
    }
    /**
     *
     *
     * <pre>
     * Configuration for the GCP Filestore CSI driver.
     * </pre>
     *
     * <code>.google.container.v1.GcpFilestoreCsiDriverConfig gcp_filestore_csi_driver_config = 14;
     * </code>
     */
    public com.google.container.v1.GcpFilestoreCsiDriverConfigOrBuilder
        getGcpFilestoreCsiDriverConfigOrBuilder() {
      if (gcpFilestoreCsiDriverConfigBuilder_ != null) {
        return gcpFilestoreCsiDriverConfigBuilder_.getMessageOrBuilder();
      } else {
        return gcpFilestoreCsiDriverConfig_ == null
            ? com.google.container.v1.GcpFilestoreCsiDriverConfig.getDefaultInstance()
            : gcpFilestoreCsiDriverConfig_;
      }
    }
    /**
     *
     *
     * <pre>
     * Configuration for the GCP Filestore CSI driver.
     * </pre>
     *
     * <code>.google.container.v1.GcpFilestoreCsiDriverConfig gcp_filestore_csi_driver_config = 14;
     * </code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
            com.google.container.v1.GcpFilestoreCsiDriverConfig,
            com.google.container.v1.GcpFilestoreCsiDriverConfig.Builder,
            com.google.container.v1.GcpFilestoreCsiDriverConfigOrBuilder>
        getGcpFilestoreCsiDriverConfigFieldBuilder() {
      if (gcpFilestoreCsiDriverConfigBuilder_ == null) {
        gcpFilestoreCsiDriverConfigBuilder_ =
            new com.google.protobuf.SingleFieldBuilderV3<
                com.google.container.v1.GcpFilestoreCsiDriverConfig,
                com.google.container.v1.GcpFilestoreCsiDriverConfig.Builder,
                com.google.container.v1.GcpFilestoreCsiDriverConfigOrBuilder>(
                getGcpFilestoreCsiDriverConfig(), getParentForChildren(), isClean());
        gcpFilestoreCsiDriverConfig_ = null;
      }
      return gcpFilestoreCsiDriverConfigBuilder_;
    }

    private com.google.container.v1.GkeBackupAgentConfig gkeBackupAgentConfig_;
    private com.google.protobuf.SingleFieldBuilderV3<
            com.google.container.v1.GkeBackupAgentConfig,
            com.google.container.v1.GkeBackupAgentConfig.Builder,
            com.google.container.v1.GkeBackupAgentConfigOrBuilder>
        gkeBackupAgentConfigBuilder_;
    /**
     *
     *
     * <pre>
     * Configuration for the Backup for GKE agent addon.
     * </pre>
     *
     * <code>.google.container.v1.GkeBackupAgentConfig gke_backup_agent_config = 16;</code>
     *
     * @return Whether the gkeBackupAgentConfig field is set.
     */
    public boolean hasGkeBackupAgentConfig() {
      return ((bitField0_ & 0x00000200) != 0);
    }
    /**
     *
     *
     * <pre>
     * Configuration for the Backup for GKE agent addon.
     * </pre>
     *
     * <code>.google.container.v1.GkeBackupAgentConfig gke_backup_agent_config = 16;</code>
     *
     * @return The gkeBackupAgentConfig.
     */
    public com.google.container.v1.GkeBackupAgentConfig getGkeBackupAgentConfig() {
      if (gkeBackupAgentConfigBuilder_ == null) {
        return gkeBackupAgentConfig_ == null
            ? com.google.container.v1.GkeBackupAgentConfig.getDefaultInstance()
            : gkeBackupAgentConfig_;
      } else {
        return gkeBackupAgentConfigBuilder_.getMessage();
      }
    }
    /**
     *
     *
     * <pre>
     * Configuration for the Backup for GKE agent addon.
     * </pre>
     *
     * <code>.google.container.v1.GkeBackupAgentConfig gke_backup_agent_config = 16;</code>
     */
    public Builder setGkeBackupAgentConfig(com.google.container.v1.GkeBackupAgentConfig value) {
      if (gkeBackupAgentConfigBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        gkeBackupAgentConfig_ = value;
      } else {
        gkeBackupAgentConfigBuilder_.setMessage(value);
      }
      bitField0_ |= 0x00000200;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Configuration for the Backup for GKE agent addon.
     * </pre>
     *
     * <code>.google.container.v1.GkeBackupAgentConfig gke_backup_agent_config = 16;</code>
     */
    public Builder setGkeBackupAgentConfig(
        com.google.container.v1.GkeBackupAgentConfig.Builder builderForValue) {
      if (gkeBackupAgentConfigBuilder_ == null) {
        gkeBackupAgentConfig_ = builderForValue.build();
      } else {
        gkeBackupAgentConfigBuilder_.setMessage(builderForValue.build());
      }
      bitField0_ |= 0x00000200;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Configuration for the Backup for GKE agent addon.
     * </pre>
     *
     * <code>.google.container.v1.GkeBackupAgentConfig gke_backup_agent_config = 16;</code>
     */
    public Builder mergeGkeBackupAgentConfig(com.google.container.v1.GkeBackupAgentConfig value) {
      if (gkeBackupAgentConfigBuilder_ == null) {
        if (((bitField0_ & 0x00000200) != 0)
            && gkeBackupAgentConfig_ != null
            && gkeBackupAgentConfig_
                != com.google.container.v1.GkeBackupAgentConfig.getDefaultInstance()) {
          getGkeBackupAgentConfigBuilder().mergeFrom(value);
        } else {
          gkeBackupAgentConfig_ = value;
        }
      } else {
        gkeBackupAgentConfigBuilder_.mergeFrom(value);
      }
      bitField0_ |= 0x00000200;
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Configuration for the Backup for GKE agent addon.
     * </pre>
     *
     * <code>.google.container.v1.GkeBackupAgentConfig gke_backup_agent_config = 16;</code>
     */
    public Builder clearGkeBackupAgentConfig() {
      bitField0_ = (bitField0_ & ~0x00000200);
      gkeBackupAgentConfig_ = null;
      if (gkeBackupAgentConfigBuilder_ != null) {
        gkeBackupAgentConfigBuilder_.dispose();
        gkeBackupAgentConfigBuilder_ = null;
      }
      onChanged();
      return this;
    }
    /**
     *
     *
     * <pre>
     * Configuration for the Backup for GKE agent addon.
     * </pre>
     *
     * <code>.google.container.v1.GkeBackupAgentConfig gke_backup_agent_config = 16;</code>
     */
    public com.google.container.v1.GkeBackupAgentConfig.Builder getGkeBackupAgentConfigBuilder() {
      bitField0_ |= 0x00000200;
      onChanged();
      return getGkeBackupAgentConfigFieldBuilder().getBuilder();
    }
    /**
     *
     *
     * <pre>
     * Configuration for the Backup for GKE agent addon.
     * </pre>
     *
     * <code>.google.container.v1.GkeBackupAgentConfig gke_backup_agent_config = 16;</code>
     */
    public com.google.container.v1.GkeBackupAgentConfigOrBuilder
        getGkeBackupAgentConfigOrBuilder() {
      if (gkeBackupAgentConfigBuilder_ != null) {
        return gkeBackupAgentConfigBuilder_.getMessageOrBuilder();
      } else {
        return gkeBackupAgentConfig_ == null
            ? com.google.container.v1.GkeBackupAgentConfig.getDefaultInstance()
            : gkeBackupAgentConfig_;
      }
    }
    /**
     *
     *
     * <pre>
     * Configuration for the Backup for GKE agent addon.
     * </pre>
     *
     * <code>.google.container.v1.GkeBackupAgentConfig gke_backup_agent_config = 16;</code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
            com.google.container.v1.GkeBackupAgentConfig,
            com.google.container.v1.GkeBackupAgentConfig.Builder,
            com.google.container.v1.GkeBackupAgentConfigOrBuilder>
        getGkeBackupAgentConfigFieldBuilder() {
      if (gkeBackupAgentConfigBuilder_ == null) {
        gkeBackupAgentConfigBuilder_ =
            new com.google.protobuf.SingleFieldBuilderV3<
                com.google.container.v1.GkeBackupAgentConfig,
                com.google.container.v1.GkeBackupAgentConfig.Builder,
                com.google.container.v1.GkeBackupAgentConfigOrBuilder>(
                getGkeBackupAgentConfig(), getParentForChildren(), isClean());
        gkeBackupAgentConfig_ = null;
      }
      return gkeBackupAgentConfigBuilder_;
    }

    @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.container.v1.AddonsConfig)
  }

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

  static {
    DEFAULT_INSTANCE = new com.google.container.v1.AddonsConfig();
  }

  public static com.google.container.v1.AddonsConfig getDefaultInstance() {
    return DEFAULT_INSTANCE;
  }

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

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

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