/*
 * Copyright 2026 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!
// NO CHECKED-IN PROTOBUF GENCODE
// source: google/api/client.proto
// Protobuf Java Version: 4.33.2

package com.google.api;

/**
 *
 *
 * <pre>
 * Details about how and where to publish client libraries.
 * </pre>
 *
 * Protobuf type {@code google.api.ClientLibrarySettings}
 */
@com.google.protobuf.Generated
public final class ClientLibrarySettings extends com.google.protobuf.GeneratedMessage
    implements
    // @@protoc_insertion_point(message_implements:google.api.ClientLibrarySettings)
    ClientLibrarySettingsOrBuilder {
  private static final long serialVersionUID = 0L;

  static {
    com.google.protobuf.RuntimeVersion.validateProtobufGencodeVersion(
        com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
        /* major= */ 4,
        /* minor= */ 33,
        /* patch= */ 2,
        /* suffix= */ "",
        "ClientLibrarySettings");
  }

  // Use ClientLibrarySettings.newBuilder() to construct.
  private ClientLibrarySettings(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
    super(builder);
  }

  private ClientLibrarySettings() {
    version_ = "";
    launchStage_ = 0;
  }

  public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
    return com.google.api.ClientProto.internal_static_google_api_ClientLibrarySettings_descriptor;
  }

  @java.lang.Override
  protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internalGetFieldAccessorTable() {
    return com.google.api.ClientProto
        .internal_static_google_api_ClientLibrarySettings_fieldAccessorTable
        .ensureFieldAccessorsInitialized(
            com.google.api.ClientLibrarySettings.class,
            com.google.api.ClientLibrarySettings.Builder.class);
  }

  private int bitField0_;
  public static final int VERSION_FIELD_NUMBER = 1;

  @SuppressWarnings("serial")
  private volatile java.lang.Object version_ = "";

  /**
   *
   *
   * <pre>
   * Version of the API to apply these settings to. This is the full protobuf
   * package for the API, ending in the version element.
   * Examples: "google.cloud.speech.v1" and "google.spanner.admin.database.v1".
   * </pre>
   *
   * <code>string version = 1;</code>
   *
   * @return The version.
   */
  @java.lang.Override
  public java.lang.String getVersion() {
    java.lang.Object ref = version_;
    if (ref instanceof java.lang.String) {
      return (java.lang.String) ref;
    } else {
      com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
      java.lang.String s = bs.toStringUtf8();
      version_ = s;
      return s;
    }
  }

  /**
   *
   *
   * <pre>
   * Version of the API to apply these settings to. This is the full protobuf
   * package for the API, ending in the version element.
   * Examples: "google.cloud.speech.v1" and "google.spanner.admin.database.v1".
   * </pre>
   *
   * <code>string version = 1;</code>
   *
   * @return The bytes for version.
   */
  @java.lang.Override
  public com.google.protobuf.ByteString getVersionBytes() {
    java.lang.Object ref = version_;
    if (ref instanceof java.lang.String) {
      com.google.protobuf.ByteString b =
          com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
      version_ = b;
      return b;
    } else {
      return (com.google.protobuf.ByteString) ref;
    }
  }

  public static final int LAUNCH_STAGE_FIELD_NUMBER = 2;
  private int launchStage_ = 0;

  /**
   *
   *
   * <pre>
   * Launch stage of this version of the API.
   * </pre>
   *
   * <code>.google.api.LaunchStage launch_stage = 2;</code>
   *
   * @return The enum numeric value on the wire for launchStage.
   */
  @java.lang.Override
  public int getLaunchStageValue() {
    return launchStage_;
  }

  /**
   *
   *
   * <pre>
   * Launch stage of this version of the API.
   * </pre>
   *
   * <code>.google.api.LaunchStage launch_stage = 2;</code>
   *
   * @return The launchStage.
   */
  @java.lang.Override
  public com.google.api.LaunchStage getLaunchStage() {
    com.google.api.LaunchStage result = com.google.api.LaunchStage.forNumber(launchStage_);
    return result == null ? com.google.api.LaunchStage.UNRECOGNIZED : result;
  }

  public static final int REST_NUMERIC_ENUMS_FIELD_NUMBER = 3;
  private boolean restNumericEnums_ = false;

  /**
   *
   *
   * <pre>
   * When using transport=rest, the client request will encode enums as
   * numbers rather than strings.
   * </pre>
   *
   * <code>bool rest_numeric_enums = 3;</code>
   *
   * @return The restNumericEnums.
   */
  @java.lang.Override
  public boolean getRestNumericEnums() {
    return restNumericEnums_;
  }

  public static final int JAVA_SETTINGS_FIELD_NUMBER = 21;
  private com.google.api.JavaSettings javaSettings_;

  /**
   *
   *
   * <pre>
   * Settings for legacy Java features, supported in the Service YAML.
   * </pre>
   *
   * <code>.google.api.JavaSettings java_settings = 21;</code>
   *
   * @return Whether the javaSettings field is set.
   */
  @java.lang.Override
  public boolean hasJavaSettings() {
    return ((bitField0_ & 0x00000001) != 0);
  }

  /**
   *
   *
   * <pre>
   * Settings for legacy Java features, supported in the Service YAML.
   * </pre>
   *
   * <code>.google.api.JavaSettings java_settings = 21;</code>
   *
   * @return The javaSettings.
   */
  @java.lang.Override
  public com.google.api.JavaSettings getJavaSettings() {
    return javaSettings_ == null ? com.google.api.JavaSettings.getDefaultInstance() : javaSettings_;
  }

  /**
   *
   *
   * <pre>
   * Settings for legacy Java features, supported in the Service YAML.
   * </pre>
   *
   * <code>.google.api.JavaSettings java_settings = 21;</code>
   */
  @java.lang.Override
  public com.google.api.JavaSettingsOrBuilder getJavaSettingsOrBuilder() {
    return javaSettings_ == null ? com.google.api.JavaSettings.getDefaultInstance() : javaSettings_;
  }

  public static final int CPP_SETTINGS_FIELD_NUMBER = 22;
  private com.google.api.CppSettings cppSettings_;

  /**
   *
   *
   * <pre>
   * Settings for C++ client libraries.
   * </pre>
   *
   * <code>.google.api.CppSettings cpp_settings = 22;</code>
   *
   * @return Whether the cppSettings field is set.
   */
  @java.lang.Override
  public boolean hasCppSettings() {
    return ((bitField0_ & 0x00000002) != 0);
  }

  /**
   *
   *
   * <pre>
   * Settings for C++ client libraries.
   * </pre>
   *
   * <code>.google.api.CppSettings cpp_settings = 22;</code>
   *
   * @return The cppSettings.
   */
  @java.lang.Override
  public com.google.api.CppSettings getCppSettings() {
    return cppSettings_ == null ? com.google.api.CppSettings.getDefaultInstance() : cppSettings_;
  }

  /**
   *
   *
   * <pre>
   * Settings for C++ client libraries.
   * </pre>
   *
   * <code>.google.api.CppSettings cpp_settings = 22;</code>
   */
  @java.lang.Override
  public com.google.api.CppSettingsOrBuilder getCppSettingsOrBuilder() {
    return cppSettings_ == null ? com.google.api.CppSettings.getDefaultInstance() : cppSettings_;
  }

  public static final int PHP_SETTINGS_FIELD_NUMBER = 23;
  private com.google.api.PhpSettings phpSettings_;

  /**
   *
   *
   * <pre>
   * Settings for PHP client libraries.
   * </pre>
   *
   * <code>.google.api.PhpSettings php_settings = 23;</code>
   *
   * @return Whether the phpSettings field is set.
   */
  @java.lang.Override
  public boolean hasPhpSettings() {
    return ((bitField0_ & 0x00000004) != 0);
  }

  /**
   *
   *
   * <pre>
   * Settings for PHP client libraries.
   * </pre>
   *
   * <code>.google.api.PhpSettings php_settings = 23;</code>
   *
   * @return The phpSettings.
   */
  @java.lang.Override
  public com.google.api.PhpSettings getPhpSettings() {
    return phpSettings_ == null ? com.google.api.PhpSettings.getDefaultInstance() : phpSettings_;
  }

  /**
   *
   *
   * <pre>
   * Settings for PHP client libraries.
   * </pre>
   *
   * <code>.google.api.PhpSettings php_settings = 23;</code>
   */
  @java.lang.Override
  public com.google.api.PhpSettingsOrBuilder getPhpSettingsOrBuilder() {
    return phpSettings_ == null ? com.google.api.PhpSettings.getDefaultInstance() : phpSettings_;
  }

  public static final int PYTHON_SETTINGS_FIELD_NUMBER = 24;
  private com.google.api.PythonSettings pythonSettings_;

  /**
   *
   *
   * <pre>
   * Settings for Python client libraries.
   * </pre>
   *
   * <code>.google.api.PythonSettings python_settings = 24;</code>
   *
   * @return Whether the pythonSettings field is set.
   */
  @java.lang.Override
  public boolean hasPythonSettings() {
    return ((bitField0_ & 0x00000008) != 0);
  }

  /**
   *
   *
   * <pre>
   * Settings for Python client libraries.
   * </pre>
   *
   * <code>.google.api.PythonSettings python_settings = 24;</code>
   *
   * @return The pythonSettings.
   */
  @java.lang.Override
  public com.google.api.PythonSettings getPythonSettings() {
    return pythonSettings_ == null
        ? com.google.api.PythonSettings.getDefaultInstance()
        : pythonSettings_;
  }

  /**
   *
   *
   * <pre>
   * Settings for Python client libraries.
   * </pre>
   *
   * <code>.google.api.PythonSettings python_settings = 24;</code>
   */
  @java.lang.Override
  public com.google.api.PythonSettingsOrBuilder getPythonSettingsOrBuilder() {
    return pythonSettings_ == null
        ? com.google.api.PythonSettings.getDefaultInstance()
        : pythonSettings_;
  }

  public static final int NODE_SETTINGS_FIELD_NUMBER = 25;
  private com.google.api.NodeSettings nodeSettings_;

  /**
   *
   *
   * <pre>
   * Settings for Node client libraries.
   * </pre>
   *
   * <code>.google.api.NodeSettings node_settings = 25;</code>
   *
   * @return Whether the nodeSettings field is set.
   */
  @java.lang.Override
  public boolean hasNodeSettings() {
    return ((bitField0_ & 0x00000010) != 0);
  }

  /**
   *
   *
   * <pre>
   * Settings for Node client libraries.
   * </pre>
   *
   * <code>.google.api.NodeSettings node_settings = 25;</code>
   *
   * @return The nodeSettings.
   */
  @java.lang.Override
  public com.google.api.NodeSettings getNodeSettings() {
    return nodeSettings_ == null ? com.google.api.NodeSettings.getDefaultInstance() : nodeSettings_;
  }

  /**
   *
   *
   * <pre>
   * Settings for Node client libraries.
   * </pre>
   *
   * <code>.google.api.NodeSettings node_settings = 25;</code>
   */
  @java.lang.Override
  public com.google.api.NodeSettingsOrBuilder getNodeSettingsOrBuilder() {
    return nodeSettings_ == null ? com.google.api.NodeSettings.getDefaultInstance() : nodeSettings_;
  }

  public static final int DOTNET_SETTINGS_FIELD_NUMBER = 26;
  private com.google.api.DotnetSettings dotnetSettings_;

  /**
   *
   *
   * <pre>
   * Settings for .NET client libraries.
   * </pre>
   *
   * <code>.google.api.DotnetSettings dotnet_settings = 26;</code>
   *
   * @return Whether the dotnetSettings field is set.
   */
  @java.lang.Override
  public boolean hasDotnetSettings() {
    return ((bitField0_ & 0x00000020) != 0);
  }

  /**
   *
   *
   * <pre>
   * Settings for .NET client libraries.
   * </pre>
   *
   * <code>.google.api.DotnetSettings dotnet_settings = 26;</code>
   *
   * @return The dotnetSettings.
   */
  @java.lang.Override
  public com.google.api.DotnetSettings getDotnetSettings() {
    return dotnetSettings_ == null
        ? com.google.api.DotnetSettings.getDefaultInstance()
        : dotnetSettings_;
  }

  /**
   *
   *
   * <pre>
   * Settings for .NET client libraries.
   * </pre>
   *
   * <code>.google.api.DotnetSettings dotnet_settings = 26;</code>
   */
  @java.lang.Override
  public com.google.api.DotnetSettingsOrBuilder getDotnetSettingsOrBuilder() {
    return dotnetSettings_ == null
        ? com.google.api.DotnetSettings.getDefaultInstance()
        : dotnetSettings_;
  }

  public static final int RUBY_SETTINGS_FIELD_NUMBER = 27;
  private com.google.api.RubySettings rubySettings_;

  /**
   *
   *
   * <pre>
   * Settings for Ruby client libraries.
   * </pre>
   *
   * <code>.google.api.RubySettings ruby_settings = 27;</code>
   *
   * @return Whether the rubySettings field is set.
   */
  @java.lang.Override
  public boolean hasRubySettings() {
    return ((bitField0_ & 0x00000040) != 0);
  }

  /**
   *
   *
   * <pre>
   * Settings for Ruby client libraries.
   * </pre>
   *
   * <code>.google.api.RubySettings ruby_settings = 27;</code>
   *
   * @return The rubySettings.
   */
  @java.lang.Override
  public com.google.api.RubySettings getRubySettings() {
    return rubySettings_ == null ? com.google.api.RubySettings.getDefaultInstance() : rubySettings_;
  }

  /**
   *
   *
   * <pre>
   * Settings for Ruby client libraries.
   * </pre>
   *
   * <code>.google.api.RubySettings ruby_settings = 27;</code>
   */
  @java.lang.Override
  public com.google.api.RubySettingsOrBuilder getRubySettingsOrBuilder() {
    return rubySettings_ == null ? com.google.api.RubySettings.getDefaultInstance() : rubySettings_;
  }

  public static final int GO_SETTINGS_FIELD_NUMBER = 28;
  private com.google.api.GoSettings goSettings_;

  /**
   *
   *
   * <pre>
   * Settings for Go client libraries.
   * </pre>
   *
   * <code>.google.api.GoSettings go_settings = 28;</code>
   *
   * @return Whether the goSettings field is set.
   */
  @java.lang.Override
  public boolean hasGoSettings() {
    return ((bitField0_ & 0x00000080) != 0);
  }

  /**
   *
   *
   * <pre>
   * Settings for Go client libraries.
   * </pre>
   *
   * <code>.google.api.GoSettings go_settings = 28;</code>
   *
   * @return The goSettings.
   */
  @java.lang.Override
  public com.google.api.GoSettings getGoSettings() {
    return goSettings_ == null ? com.google.api.GoSettings.getDefaultInstance() : goSettings_;
  }

  /**
   *
   *
   * <pre>
   * Settings for Go client libraries.
   * </pre>
   *
   * <code>.google.api.GoSettings go_settings = 28;</code>
   */
  @java.lang.Override
  public com.google.api.GoSettingsOrBuilder getGoSettingsOrBuilder() {
    return goSettings_ == null ? com.google.api.GoSettings.getDefaultInstance() : goSettings_;
  }

  private byte memoizedIsInitialized = -1;

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

    memoizedIsInitialized = 1;
    return true;
  }

  @java.lang.Override
  public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
    if (!com.google.protobuf.GeneratedMessage.isStringEmpty(version_)) {
      com.google.protobuf.GeneratedMessage.writeString(output, 1, version_);
    }
    if (launchStage_ != com.google.api.LaunchStage.LAUNCH_STAGE_UNSPECIFIED.getNumber()) {
      output.writeEnum(2, launchStage_);
    }
    if (restNumericEnums_ != false) {
      output.writeBool(3, restNumericEnums_);
    }
    if (((bitField0_ & 0x00000001) != 0)) {
      output.writeMessage(21, getJavaSettings());
    }
    if (((bitField0_ & 0x00000002) != 0)) {
      output.writeMessage(22, getCppSettings());
    }
    if (((bitField0_ & 0x00000004) != 0)) {
      output.writeMessage(23, getPhpSettings());
    }
    if (((bitField0_ & 0x00000008) != 0)) {
      output.writeMessage(24, getPythonSettings());
    }
    if (((bitField0_ & 0x00000010) != 0)) {
      output.writeMessage(25, getNodeSettings());
    }
    if (((bitField0_ & 0x00000020) != 0)) {
      output.writeMessage(26, getDotnetSettings());
    }
    if (((bitField0_ & 0x00000040) != 0)) {
      output.writeMessage(27, getRubySettings());
    }
    if (((bitField0_ & 0x00000080) != 0)) {
      output.writeMessage(28, getGoSettings());
    }
    getUnknownFields().writeTo(output);
  }

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

    size = 0;
    if (!com.google.protobuf.GeneratedMessage.isStringEmpty(version_)) {
      size += com.google.protobuf.GeneratedMessage.computeStringSize(1, version_);
    }
    if (launchStage_ != com.google.api.LaunchStage.LAUNCH_STAGE_UNSPECIFIED.getNumber()) {
      size += com.google.protobuf.CodedOutputStream.computeEnumSize(2, launchStage_);
    }
    if (restNumericEnums_ != false) {
      size += com.google.protobuf.CodedOutputStream.computeBoolSize(3, restNumericEnums_);
    }
    if (((bitField0_ & 0x00000001) != 0)) {
      size += com.google.protobuf.CodedOutputStream.computeMessageSize(21, getJavaSettings());
    }
    if (((bitField0_ & 0x00000002) != 0)) {
      size += com.google.protobuf.CodedOutputStream.computeMessageSize(22, getCppSettings());
    }
    if (((bitField0_ & 0x00000004) != 0)) {
      size += com.google.protobuf.CodedOutputStream.computeMessageSize(23, getPhpSettings());
    }
    if (((bitField0_ & 0x00000008) != 0)) {
      size += com.google.protobuf.CodedOutputStream.computeMessageSize(24, getPythonSettings());
    }
    if (((bitField0_ & 0x00000010) != 0)) {
      size += com.google.protobuf.CodedOutputStream.computeMessageSize(25, getNodeSettings());
    }
    if (((bitField0_ & 0x00000020) != 0)) {
      size += com.google.protobuf.CodedOutputStream.computeMessageSize(26, getDotnetSettings());
    }
    if (((bitField0_ & 0x00000040) != 0)) {
      size += com.google.protobuf.CodedOutputStream.computeMessageSize(27, getRubySettings());
    }
    if (((bitField0_ & 0x00000080) != 0)) {
      size += com.google.protobuf.CodedOutputStream.computeMessageSize(28, getGoSettings());
    }
    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.api.ClientLibrarySettings)) {
      return super.equals(obj);
    }
    com.google.api.ClientLibrarySettings other = (com.google.api.ClientLibrarySettings) obj;

    if (!getVersion().equals(other.getVersion())) return false;
    if (launchStage_ != other.launchStage_) return false;
    if (getRestNumericEnums() != other.getRestNumericEnums()) return false;
    if (hasJavaSettings() != other.hasJavaSettings()) return false;
    if (hasJavaSettings()) {
      if (!getJavaSettings().equals(other.getJavaSettings())) return false;
    }
    if (hasCppSettings() != other.hasCppSettings()) return false;
    if (hasCppSettings()) {
      if (!getCppSettings().equals(other.getCppSettings())) return false;
    }
    if (hasPhpSettings() != other.hasPhpSettings()) return false;
    if (hasPhpSettings()) {
      if (!getPhpSettings().equals(other.getPhpSettings())) return false;
    }
    if (hasPythonSettings() != other.hasPythonSettings()) return false;
    if (hasPythonSettings()) {
      if (!getPythonSettings().equals(other.getPythonSettings())) return false;
    }
    if (hasNodeSettings() != other.hasNodeSettings()) return false;
    if (hasNodeSettings()) {
      if (!getNodeSettings().equals(other.getNodeSettings())) return false;
    }
    if (hasDotnetSettings() != other.hasDotnetSettings()) return false;
    if (hasDotnetSettings()) {
      if (!getDotnetSettings().equals(other.getDotnetSettings())) return false;
    }
    if (hasRubySettings() != other.hasRubySettings()) return false;
    if (hasRubySettings()) {
      if (!getRubySettings().equals(other.getRubySettings())) return false;
    }
    if (hasGoSettings() != other.hasGoSettings()) return false;
    if (hasGoSettings()) {
      if (!getGoSettings().equals(other.getGoSettings())) return false;
    }
    if (!getUnknownFields().equals(other.getUnknownFields())) return false;
    return true;
  }

  @java.lang.Override
  public int hashCode() {
    if (memoizedHashCode != 0) {
      return memoizedHashCode;
    }
    int hash = 41;
    hash = (19 * hash) + getDescriptor().hashCode();
    hash = (37 * hash) + VERSION_FIELD_NUMBER;
    hash = (53 * hash) + getVersion().hashCode();
    hash = (37 * hash) + LAUNCH_STAGE_FIELD_NUMBER;
    hash = (53 * hash) + launchStage_;
    hash = (37 * hash) + REST_NUMERIC_ENUMS_FIELD_NUMBER;
    hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(getRestNumericEnums());
    if (hasJavaSettings()) {
      hash = (37 * hash) + JAVA_SETTINGS_FIELD_NUMBER;
      hash = (53 * hash) + getJavaSettings().hashCode();
    }
    if (hasCppSettings()) {
      hash = (37 * hash) + CPP_SETTINGS_FIELD_NUMBER;
      hash = (53 * hash) + getCppSettings().hashCode();
    }
    if (hasPhpSettings()) {
      hash = (37 * hash) + PHP_SETTINGS_FIELD_NUMBER;
      hash = (53 * hash) + getPhpSettings().hashCode();
    }
    if (hasPythonSettings()) {
      hash = (37 * hash) + PYTHON_SETTINGS_FIELD_NUMBER;
      hash = (53 * hash) + getPythonSettings().hashCode();
    }
    if (hasNodeSettings()) {
      hash = (37 * hash) + NODE_SETTINGS_FIELD_NUMBER;
      hash = (53 * hash) + getNodeSettings().hashCode();
    }
    if (hasDotnetSettings()) {
      hash = (37 * hash) + DOTNET_SETTINGS_FIELD_NUMBER;
      hash = (53 * hash) + getDotnetSettings().hashCode();
    }
    if (hasRubySettings()) {
      hash = (37 * hash) + RUBY_SETTINGS_FIELD_NUMBER;
      hash = (53 * hash) + getRubySettings().hashCode();
    }
    if (hasGoSettings()) {
      hash = (37 * hash) + GO_SETTINGS_FIELD_NUMBER;
      hash = (53 * hash) + getGoSettings().hashCode();
    }
    hash = (29 * hash) + getUnknownFields().hashCode();
    memoizedHashCode = hash;
    return hash;
  }

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

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

  public static com.google.api.ClientLibrarySettings parseFrom(com.google.protobuf.ByteString data)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data);
  }

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

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

  public static com.google.api.ClientLibrarySettings parseFrom(java.io.InputStream input)
      throws java.io.IOException {
    return com.google.protobuf.GeneratedMessage.parseWithIOException(PARSER, input);
  }

  public static com.google.api.ClientLibrarySettings parseFrom(
      java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws java.io.IOException {
    return com.google.protobuf.GeneratedMessage.parseWithIOException(
        PARSER, input, extensionRegistry);
  }

  public static com.google.api.ClientLibrarySettings parseDelimitedFrom(java.io.InputStream input)
      throws java.io.IOException {
    return com.google.protobuf.GeneratedMessage.parseDelimitedWithIOException(PARSER, input);
  }

  public static com.google.api.ClientLibrarySettings parseDelimitedFrom(
      java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws java.io.IOException {
    return com.google.protobuf.GeneratedMessage.parseDelimitedWithIOException(
        PARSER, input, extensionRegistry);
  }

  public static com.google.api.ClientLibrarySettings parseFrom(
      com.google.protobuf.CodedInputStream input) throws java.io.IOException {
    return com.google.protobuf.GeneratedMessage.parseWithIOException(PARSER, input);
  }

  public static com.google.api.ClientLibrarySettings parseFrom(
      com.google.protobuf.CodedInputStream input,
      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws java.io.IOException {
    return com.google.protobuf.GeneratedMessage.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.api.ClientLibrarySettings 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.GeneratedMessage.BuilderParent parent) {
    Builder builder = new Builder(parent);
    return builder;
  }

  /**
   *
   *
   * <pre>
   * Details about how and where to publish client libraries.
   * </pre>
   *
   * Protobuf type {@code google.api.ClientLibrarySettings}
   */
  public static final class Builder extends com.google.protobuf.GeneratedMessage.Builder<Builder>
      implements
      // @@protoc_insertion_point(builder_implements:google.api.ClientLibrarySettings)
      com.google.api.ClientLibrarySettingsOrBuilder {
    public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
      return com.google.api.ClientProto.internal_static_google_api_ClientLibrarySettings_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.api.ClientProto
          .internal_static_google_api_ClientLibrarySettings_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.api.ClientLibrarySettings.class,
              com.google.api.ClientLibrarySettings.Builder.class);
    }

    // Construct using com.google.api.ClientLibrarySettings.newBuilder()
    private Builder() {
      maybeForceBuilderInitialization();
    }

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

    private void maybeForceBuilderInitialization() {
      if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
        internalGetJavaSettingsFieldBuilder();
        internalGetCppSettingsFieldBuilder();
        internalGetPhpSettingsFieldBuilder();
        internalGetPythonSettingsFieldBuilder();
        internalGetNodeSettingsFieldBuilder();
        internalGetDotnetSettingsFieldBuilder();
        internalGetRubySettingsFieldBuilder();
        internalGetGoSettingsFieldBuilder();
      }
    }

    @java.lang.Override
    public Builder clear() {
      super.clear();
      bitField0_ = 0;
      version_ = "";
      launchStage_ = 0;
      restNumericEnums_ = false;
      javaSettings_ = null;
      if (javaSettingsBuilder_ != null) {
        javaSettingsBuilder_.dispose();
        javaSettingsBuilder_ = null;
      }
      cppSettings_ = null;
      if (cppSettingsBuilder_ != null) {
        cppSettingsBuilder_.dispose();
        cppSettingsBuilder_ = null;
      }
      phpSettings_ = null;
      if (phpSettingsBuilder_ != null) {
        phpSettingsBuilder_.dispose();
        phpSettingsBuilder_ = null;
      }
      pythonSettings_ = null;
      if (pythonSettingsBuilder_ != null) {
        pythonSettingsBuilder_.dispose();
        pythonSettingsBuilder_ = null;
      }
      nodeSettings_ = null;
      if (nodeSettingsBuilder_ != null) {
        nodeSettingsBuilder_.dispose();
        nodeSettingsBuilder_ = null;
      }
      dotnetSettings_ = null;
      if (dotnetSettingsBuilder_ != null) {
        dotnetSettingsBuilder_.dispose();
        dotnetSettingsBuilder_ = null;
      }
      rubySettings_ = null;
      if (rubySettingsBuilder_ != null) {
        rubySettingsBuilder_.dispose();
        rubySettingsBuilder_ = null;
      }
      goSettings_ = null;
      if (goSettingsBuilder_ != null) {
        goSettingsBuilder_.dispose();
        goSettingsBuilder_ = null;
      }
      return this;
    }

    @java.lang.Override
    public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
      return com.google.api.ClientProto.internal_static_google_api_ClientLibrarySettings_descriptor;
    }

    @java.lang.Override
    public com.google.api.ClientLibrarySettings getDefaultInstanceForType() {
      return com.google.api.ClientLibrarySettings.getDefaultInstance();
    }

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

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

    private void buildPartial0(com.google.api.ClientLibrarySettings result) {
      int from_bitField0_ = bitField0_;
      if (((from_bitField0_ & 0x00000001) != 0)) {
        result.version_ = version_;
      }
      if (((from_bitField0_ & 0x00000002) != 0)) {
        result.launchStage_ = launchStage_;
      }
      if (((from_bitField0_ & 0x00000004) != 0)) {
        result.restNumericEnums_ = restNumericEnums_;
      }
      int to_bitField0_ = 0;
      if (((from_bitField0_ & 0x00000008) != 0)) {
        result.javaSettings_ =
            javaSettingsBuilder_ == null ? javaSettings_ : javaSettingsBuilder_.build();
        to_bitField0_ |= 0x00000001;
      }
      if (((from_bitField0_ & 0x00000010) != 0)) {
        result.cppSettings_ =
            cppSettingsBuilder_ == null ? cppSettings_ : cppSettingsBuilder_.build();
        to_bitField0_ |= 0x00000002;
      }
      if (((from_bitField0_ & 0x00000020) != 0)) {
        result.phpSettings_ =
            phpSettingsBuilder_ == null ? phpSettings_ : phpSettingsBuilder_.build();
        to_bitField0_ |= 0x00000004;
      }
      if (((from_bitField0_ & 0x00000040) != 0)) {
        result.pythonSettings_ =
            pythonSettingsBuilder_ == null ? pythonSettings_ : pythonSettingsBuilder_.build();
        to_bitField0_ |= 0x00000008;
      }
      if (((from_bitField0_ & 0x00000080) != 0)) {
        result.nodeSettings_ =
            nodeSettingsBuilder_ == null ? nodeSettings_ : nodeSettingsBuilder_.build();
        to_bitField0_ |= 0x00000010;
      }
      if (((from_bitField0_ & 0x00000100) != 0)) {
        result.dotnetSettings_ =
            dotnetSettingsBuilder_ == null ? dotnetSettings_ : dotnetSettingsBuilder_.build();
        to_bitField0_ |= 0x00000020;
      }
      if (((from_bitField0_ & 0x00000200) != 0)) {
        result.rubySettings_ =
            rubySettingsBuilder_ == null ? rubySettings_ : rubySettingsBuilder_.build();
        to_bitField0_ |= 0x00000040;
      }
      if (((from_bitField0_ & 0x00000400) != 0)) {
        result.goSettings_ = goSettingsBuilder_ == null ? goSettings_ : goSettingsBuilder_.build();
        to_bitField0_ |= 0x00000080;
      }
      result.bitField0_ |= to_bitField0_;
    }

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

    public Builder mergeFrom(com.google.api.ClientLibrarySettings other) {
      if (other == com.google.api.ClientLibrarySettings.getDefaultInstance()) return this;
      if (!other.getVersion().isEmpty()) {
        version_ = other.version_;
        bitField0_ |= 0x00000001;
        onChanged();
      }
      if (other.launchStage_ != 0) {
        setLaunchStageValue(other.getLaunchStageValue());
      }
      if (other.getRestNumericEnums() != false) {
        setRestNumericEnums(other.getRestNumericEnums());
      }
      if (other.hasJavaSettings()) {
        mergeJavaSettings(other.getJavaSettings());
      }
      if (other.hasCppSettings()) {
        mergeCppSettings(other.getCppSettings());
      }
      if (other.hasPhpSettings()) {
        mergePhpSettings(other.getPhpSettings());
      }
      if (other.hasPythonSettings()) {
        mergePythonSettings(other.getPythonSettings());
      }
      if (other.hasNodeSettings()) {
        mergeNodeSettings(other.getNodeSettings());
      }
      if (other.hasDotnetSettings()) {
        mergeDotnetSettings(other.getDotnetSettings());
      }
      if (other.hasRubySettings()) {
        mergeRubySettings(other.getRubySettings());
      }
      if (other.hasGoSettings()) {
        mergeGoSettings(other.getGoSettings());
      }
      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:
              {
                version_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000001;
                break;
              } // case 10
            case 16:
              {
                launchStage_ = input.readEnum();
                bitField0_ |= 0x00000002;
                break;
              } // case 16
            case 24:
              {
                restNumericEnums_ = input.readBool();
                bitField0_ |= 0x00000004;
                break;
              } // case 24
            case 170:
              {
                input.readMessage(
                    internalGetJavaSettingsFieldBuilder().getBuilder(), extensionRegistry);
                bitField0_ |= 0x00000008;
                break;
              } // case 170
            case 178:
              {
                input.readMessage(
                    internalGetCppSettingsFieldBuilder().getBuilder(), extensionRegistry);
                bitField0_ |= 0x00000010;
                break;
              } // case 178
            case 186:
              {
                input.readMessage(
                    internalGetPhpSettingsFieldBuilder().getBuilder(), extensionRegistry);
                bitField0_ |= 0x00000020;
                break;
              } // case 186
            case 194:
              {
                input.readMessage(
                    internalGetPythonSettingsFieldBuilder().getBuilder(), extensionRegistry);
                bitField0_ |= 0x00000040;
                break;
              } // case 194
            case 202:
              {
                input.readMessage(
                    internalGetNodeSettingsFieldBuilder().getBuilder(), extensionRegistry);
                bitField0_ |= 0x00000080;
                break;
              } // case 202
            case 210:
              {
                input.readMessage(
                    internalGetDotnetSettingsFieldBuilder().getBuilder(), extensionRegistry);
                bitField0_ |= 0x00000100;
                break;
              } // case 210
            case 218:
              {
                input.readMessage(
                    internalGetRubySettingsFieldBuilder().getBuilder(), extensionRegistry);
                bitField0_ |= 0x00000200;
                break;
              } // case 218
            case 226:
              {
                input.readMessage(
                    internalGetGoSettingsFieldBuilder().getBuilder(), extensionRegistry);
                bitField0_ |= 0x00000400;
                break;
              } // case 226
            default:
              {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
          } // switch (tag)
        } // while (!done)
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.unwrapIOException();
      } finally {
        onChanged();
      } // finally
      return this;
    }

    private int bitField0_;

    private java.lang.Object version_ = "";

    /**
     *
     *
     * <pre>
     * Version of the API to apply these settings to. This is the full protobuf
     * package for the API, ending in the version element.
     * Examples: "google.cloud.speech.v1" and "google.spanner.admin.database.v1".
     * </pre>
     *
     * <code>string version = 1;</code>
     *
     * @return The version.
     */
    public java.lang.String getVersion() {
      java.lang.Object ref = version_;
      if (!(ref instanceof java.lang.String)) {
        com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        version_ = s;
        return s;
      } else {
        return (java.lang.String) ref;
      }
    }

    /**
     *
     *
     * <pre>
     * Version of the API to apply these settings to. This is the full protobuf
     * package for the API, ending in the version element.
     * Examples: "google.cloud.speech.v1" and "google.spanner.admin.database.v1".
     * </pre>
     *
     * <code>string version = 1;</code>
     *
     * @return The bytes for version.
     */
    public com.google.protobuf.ByteString getVersionBytes() {
      java.lang.Object ref = version_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b =
            com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
        version_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    /**
     *
     *
     * <pre>
     * Version of the API to apply these settings to. This is the full protobuf
     * package for the API, ending in the version element.
     * Examples: "google.cloud.speech.v1" and "google.spanner.admin.database.v1".
     * </pre>
     *
     * <code>string version = 1;</code>
     *
     * @param value The version to set.
     * @return This builder for chaining.
     */
    public Builder setVersion(java.lang.String value) {
      if (value == null) {
        throw new NullPointerException();
      }
      version_ = value;
      bitField0_ |= 0x00000001;
      onChanged();
      return this;
    }

    /**
     *
     *
     * <pre>
     * Version of the API to apply these settings to. This is the full protobuf
     * package for the API, ending in the version element.
     * Examples: "google.cloud.speech.v1" and "google.spanner.admin.database.v1".
     * </pre>
     *
     * <code>string version = 1;</code>
     *
     * @return This builder for chaining.
     */
    public Builder clearVersion() {
      version_ = getDefaultInstance().getVersion();
      bitField0_ = (bitField0_ & ~0x00000001);
      onChanged();
      return this;
    }

    /**
     *
     *
     * <pre>
     * Version of the API to apply these settings to. This is the full protobuf
     * package for the API, ending in the version element.
     * Examples: "google.cloud.speech.v1" and "google.spanner.admin.database.v1".
     * </pre>
     *
     * <code>string version = 1;</code>
     *
     * @param value The bytes for version to set.
     * @return This builder for chaining.
     */
    public Builder setVersionBytes(com.google.protobuf.ByteString value) {
      if (value == null) {
        throw new NullPointerException();
      }
      checkByteStringIsUtf8(value);
      version_ = value;
      bitField0_ |= 0x00000001;
      onChanged();
      return this;
    }

    private int launchStage_ = 0;

    /**
     *
     *
     * <pre>
     * Launch stage of this version of the API.
     * </pre>
     *
     * <code>.google.api.LaunchStage launch_stage = 2;</code>
     *
     * @return The enum numeric value on the wire for launchStage.
     */
    @java.lang.Override
    public int getLaunchStageValue() {
      return launchStage_;
    }

    /**
     *
     *
     * <pre>
     * Launch stage of this version of the API.
     * </pre>
     *
     * <code>.google.api.LaunchStage launch_stage = 2;</code>
     *
     * @param value The enum numeric value on the wire for launchStage to set.
     * @return This builder for chaining.
     */
    public Builder setLaunchStageValue(int value) {
      launchStage_ = value;
      bitField0_ |= 0x00000002;
      onChanged();
      return this;
    }

    /**
     *
     *
     * <pre>
     * Launch stage of this version of the API.
     * </pre>
     *
     * <code>.google.api.LaunchStage launch_stage = 2;</code>
     *
     * @return The launchStage.
     */
    @java.lang.Override
    public com.google.api.LaunchStage getLaunchStage() {
      com.google.api.LaunchStage result = com.google.api.LaunchStage.forNumber(launchStage_);
      return result == null ? com.google.api.LaunchStage.UNRECOGNIZED : result;
    }

    /**
     *
     *
     * <pre>
     * Launch stage of this version of the API.
     * </pre>
     *
     * <code>.google.api.LaunchStage launch_stage = 2;</code>
     *
     * @param value The launchStage to set.
     * @return This builder for chaining.
     */
    public Builder setLaunchStage(com.google.api.LaunchStage value) {
      if (value == null) {
        throw new NullPointerException();
      }
      bitField0_ |= 0x00000002;
      launchStage_ = value.getNumber();
      onChanged();
      return this;
    }

    /**
     *
     *
     * <pre>
     * Launch stage of this version of the API.
     * </pre>
     *
     * <code>.google.api.LaunchStage launch_stage = 2;</code>
     *
     * @return This builder for chaining.
     */
    public Builder clearLaunchStage() {
      bitField0_ = (bitField0_ & ~0x00000002);
      launchStage_ = 0;
      onChanged();
      return this;
    }

    private boolean restNumericEnums_;

    /**
     *
     *
     * <pre>
     * When using transport=rest, the client request will encode enums as
     * numbers rather than strings.
     * </pre>
     *
     * <code>bool rest_numeric_enums = 3;</code>
     *
     * @return The restNumericEnums.
     */
    @java.lang.Override
    public boolean getRestNumericEnums() {
      return restNumericEnums_;
    }

    /**
     *
     *
     * <pre>
     * When using transport=rest, the client request will encode enums as
     * numbers rather than strings.
     * </pre>
     *
     * <code>bool rest_numeric_enums = 3;</code>
     *
     * @param value The restNumericEnums to set.
     * @return This builder for chaining.
     */
    public Builder setRestNumericEnums(boolean value) {

      restNumericEnums_ = value;
      bitField0_ |= 0x00000004;
      onChanged();
      return this;
    }

    /**
     *
     *
     * <pre>
     * When using transport=rest, the client request will encode enums as
     * numbers rather than strings.
     * </pre>
     *
     * <code>bool rest_numeric_enums = 3;</code>
     *
     * @return This builder for chaining.
     */
    public Builder clearRestNumericEnums() {
      bitField0_ = (bitField0_ & ~0x00000004);
      restNumericEnums_ = false;
      onChanged();
      return this;
    }

    private com.google.api.JavaSettings javaSettings_;
    private com.google.protobuf.SingleFieldBuilder<
            com.google.api.JavaSettings,
            com.google.api.JavaSettings.Builder,
            com.google.api.JavaSettingsOrBuilder>
        javaSettingsBuilder_;

    /**
     *
     *
     * <pre>
     * Settings for legacy Java features, supported in the Service YAML.
     * </pre>
     *
     * <code>.google.api.JavaSettings java_settings = 21;</code>
     *
     * @return Whether the javaSettings field is set.
     */
    public boolean hasJavaSettings() {
      return ((bitField0_ & 0x00000008) != 0);
    }

    /**
     *
     *
     * <pre>
     * Settings for legacy Java features, supported in the Service YAML.
     * </pre>
     *
     * <code>.google.api.JavaSettings java_settings = 21;</code>
     *
     * @return The javaSettings.
     */
    public com.google.api.JavaSettings getJavaSettings() {
      if (javaSettingsBuilder_ == null) {
        return javaSettings_ == null
            ? com.google.api.JavaSettings.getDefaultInstance()
            : javaSettings_;
      } else {
        return javaSettingsBuilder_.getMessage();
      }
    }

    /**
     *
     *
     * <pre>
     * Settings for legacy Java features, supported in the Service YAML.
     * </pre>
     *
     * <code>.google.api.JavaSettings java_settings = 21;</code>
     */
    public Builder setJavaSettings(com.google.api.JavaSettings value) {
      if (javaSettingsBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        javaSettings_ = value;
      } else {
        javaSettingsBuilder_.setMessage(value);
      }
      bitField0_ |= 0x00000008;
      onChanged();
      return this;
    }

    /**
     *
     *
     * <pre>
     * Settings for legacy Java features, supported in the Service YAML.
     * </pre>
     *
     * <code>.google.api.JavaSettings java_settings = 21;</code>
     */
    public Builder setJavaSettings(com.google.api.JavaSettings.Builder builderForValue) {
      if (javaSettingsBuilder_ == null) {
        javaSettings_ = builderForValue.build();
      } else {
        javaSettingsBuilder_.setMessage(builderForValue.build());
      }
      bitField0_ |= 0x00000008;
      onChanged();
      return this;
    }

    /**
     *
     *
     * <pre>
     * Settings for legacy Java features, supported in the Service YAML.
     * </pre>
     *
     * <code>.google.api.JavaSettings java_settings = 21;</code>
     */
    public Builder mergeJavaSettings(com.google.api.JavaSettings value) {
      if (javaSettingsBuilder_ == null) {
        if (((bitField0_ & 0x00000008) != 0)
            && javaSettings_ != null
            && javaSettings_ != com.google.api.JavaSettings.getDefaultInstance()) {
          getJavaSettingsBuilder().mergeFrom(value);
        } else {
          javaSettings_ = value;
        }
      } else {
        javaSettingsBuilder_.mergeFrom(value);
      }
      if (javaSettings_ != null) {
        bitField0_ |= 0x00000008;
        onChanged();
      }
      return this;
    }

    /**
     *
     *
     * <pre>
     * Settings for legacy Java features, supported in the Service YAML.
     * </pre>
     *
     * <code>.google.api.JavaSettings java_settings = 21;</code>
     */
    public Builder clearJavaSettings() {
      bitField0_ = (bitField0_ & ~0x00000008);
      javaSettings_ = null;
      if (javaSettingsBuilder_ != null) {
        javaSettingsBuilder_.dispose();
        javaSettingsBuilder_ = null;
      }
      onChanged();
      return this;
    }

    /**
     *
     *
     * <pre>
     * Settings for legacy Java features, supported in the Service YAML.
     * </pre>
     *
     * <code>.google.api.JavaSettings java_settings = 21;</code>
     */
    public com.google.api.JavaSettings.Builder getJavaSettingsBuilder() {
      bitField0_ |= 0x00000008;
      onChanged();
      return internalGetJavaSettingsFieldBuilder().getBuilder();
    }

    /**
     *
     *
     * <pre>
     * Settings for legacy Java features, supported in the Service YAML.
     * </pre>
     *
     * <code>.google.api.JavaSettings java_settings = 21;</code>
     */
    public com.google.api.JavaSettingsOrBuilder getJavaSettingsOrBuilder() {
      if (javaSettingsBuilder_ != null) {
        return javaSettingsBuilder_.getMessageOrBuilder();
      } else {
        return javaSettings_ == null
            ? com.google.api.JavaSettings.getDefaultInstance()
            : javaSettings_;
      }
    }

    /**
     *
     *
     * <pre>
     * Settings for legacy Java features, supported in the Service YAML.
     * </pre>
     *
     * <code>.google.api.JavaSettings java_settings = 21;</code>
     */
    private com.google.protobuf.SingleFieldBuilder<
            com.google.api.JavaSettings,
            com.google.api.JavaSettings.Builder,
            com.google.api.JavaSettingsOrBuilder>
        internalGetJavaSettingsFieldBuilder() {
      if (javaSettingsBuilder_ == null) {
        javaSettingsBuilder_ =
            new com.google.protobuf.SingleFieldBuilder<
                com.google.api.JavaSettings,
                com.google.api.JavaSettings.Builder,
                com.google.api.JavaSettingsOrBuilder>(
                getJavaSettings(), getParentForChildren(), isClean());
        javaSettings_ = null;
      }
      return javaSettingsBuilder_;
    }

    private com.google.api.CppSettings cppSettings_;
    private com.google.protobuf.SingleFieldBuilder<
            com.google.api.CppSettings,
            com.google.api.CppSettings.Builder,
            com.google.api.CppSettingsOrBuilder>
        cppSettingsBuilder_;

    /**
     *
     *
     * <pre>
     * Settings for C++ client libraries.
     * </pre>
     *
     * <code>.google.api.CppSettings cpp_settings = 22;</code>
     *
     * @return Whether the cppSettings field is set.
     */
    public boolean hasCppSettings() {
      return ((bitField0_ & 0x00000010) != 0);
    }

    /**
     *
     *
     * <pre>
     * Settings for C++ client libraries.
     * </pre>
     *
     * <code>.google.api.CppSettings cpp_settings = 22;</code>
     *
     * @return The cppSettings.
     */
    public com.google.api.CppSettings getCppSettings() {
      if (cppSettingsBuilder_ == null) {
        return cppSettings_ == null
            ? com.google.api.CppSettings.getDefaultInstance()
            : cppSettings_;
      } else {
        return cppSettingsBuilder_.getMessage();
      }
    }

    /**
     *
     *
     * <pre>
     * Settings for C++ client libraries.
     * </pre>
     *
     * <code>.google.api.CppSettings cpp_settings = 22;</code>
     */
    public Builder setCppSettings(com.google.api.CppSettings value) {
      if (cppSettingsBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        cppSettings_ = value;
      } else {
        cppSettingsBuilder_.setMessage(value);
      }
      bitField0_ |= 0x00000010;
      onChanged();
      return this;
    }

    /**
     *
     *
     * <pre>
     * Settings for C++ client libraries.
     * </pre>
     *
     * <code>.google.api.CppSettings cpp_settings = 22;</code>
     */
    public Builder setCppSettings(com.google.api.CppSettings.Builder builderForValue) {
      if (cppSettingsBuilder_ == null) {
        cppSettings_ = builderForValue.build();
      } else {
        cppSettingsBuilder_.setMessage(builderForValue.build());
      }
      bitField0_ |= 0x00000010;
      onChanged();
      return this;
    }

    /**
     *
     *
     * <pre>
     * Settings for C++ client libraries.
     * </pre>
     *
     * <code>.google.api.CppSettings cpp_settings = 22;</code>
     */
    public Builder mergeCppSettings(com.google.api.CppSettings value) {
      if (cppSettingsBuilder_ == null) {
        if (((bitField0_ & 0x00000010) != 0)
            && cppSettings_ != null
            && cppSettings_ != com.google.api.CppSettings.getDefaultInstance()) {
          getCppSettingsBuilder().mergeFrom(value);
        } else {
          cppSettings_ = value;
        }
      } else {
        cppSettingsBuilder_.mergeFrom(value);
      }
      if (cppSettings_ != null) {
        bitField0_ |= 0x00000010;
        onChanged();
      }
      return this;
    }

    /**
     *
     *
     * <pre>
     * Settings for C++ client libraries.
     * </pre>
     *
     * <code>.google.api.CppSettings cpp_settings = 22;</code>
     */
    public Builder clearCppSettings() {
      bitField0_ = (bitField0_ & ~0x00000010);
      cppSettings_ = null;
      if (cppSettingsBuilder_ != null) {
        cppSettingsBuilder_.dispose();
        cppSettingsBuilder_ = null;
      }
      onChanged();
      return this;
    }

    /**
     *
     *
     * <pre>
     * Settings for C++ client libraries.
     * </pre>
     *
     * <code>.google.api.CppSettings cpp_settings = 22;</code>
     */
    public com.google.api.CppSettings.Builder getCppSettingsBuilder() {
      bitField0_ |= 0x00000010;
      onChanged();
      return internalGetCppSettingsFieldBuilder().getBuilder();
    }

    /**
     *
     *
     * <pre>
     * Settings for C++ client libraries.
     * </pre>
     *
     * <code>.google.api.CppSettings cpp_settings = 22;</code>
     */
    public com.google.api.CppSettingsOrBuilder getCppSettingsOrBuilder() {
      if (cppSettingsBuilder_ != null) {
        return cppSettingsBuilder_.getMessageOrBuilder();
      } else {
        return cppSettings_ == null
            ? com.google.api.CppSettings.getDefaultInstance()
            : cppSettings_;
      }
    }

    /**
     *
     *
     * <pre>
     * Settings for C++ client libraries.
     * </pre>
     *
     * <code>.google.api.CppSettings cpp_settings = 22;</code>
     */
    private com.google.protobuf.SingleFieldBuilder<
            com.google.api.CppSettings,
            com.google.api.CppSettings.Builder,
            com.google.api.CppSettingsOrBuilder>
        internalGetCppSettingsFieldBuilder() {
      if (cppSettingsBuilder_ == null) {
        cppSettingsBuilder_ =
            new com.google.protobuf.SingleFieldBuilder<
                com.google.api.CppSettings,
                com.google.api.CppSettings.Builder,
                com.google.api.CppSettingsOrBuilder>(
                getCppSettings(), getParentForChildren(), isClean());
        cppSettings_ = null;
      }
      return cppSettingsBuilder_;
    }

    private com.google.api.PhpSettings phpSettings_;
    private com.google.protobuf.SingleFieldBuilder<
            com.google.api.PhpSettings,
            com.google.api.PhpSettings.Builder,
            com.google.api.PhpSettingsOrBuilder>
        phpSettingsBuilder_;

    /**
     *
     *
     * <pre>
     * Settings for PHP client libraries.
     * </pre>
     *
     * <code>.google.api.PhpSettings php_settings = 23;</code>
     *
     * @return Whether the phpSettings field is set.
     */
    public boolean hasPhpSettings() {
      return ((bitField0_ & 0x00000020) != 0);
    }

    /**
     *
     *
     * <pre>
     * Settings for PHP client libraries.
     * </pre>
     *
     * <code>.google.api.PhpSettings php_settings = 23;</code>
     *
     * @return The phpSettings.
     */
    public com.google.api.PhpSettings getPhpSettings() {
      if (phpSettingsBuilder_ == null) {
        return phpSettings_ == null
            ? com.google.api.PhpSettings.getDefaultInstance()
            : phpSettings_;
      } else {
        return phpSettingsBuilder_.getMessage();
      }
    }

    /**
     *
     *
     * <pre>
     * Settings for PHP client libraries.
     * </pre>
     *
     * <code>.google.api.PhpSettings php_settings = 23;</code>
     */
    public Builder setPhpSettings(com.google.api.PhpSettings value) {
      if (phpSettingsBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        phpSettings_ = value;
      } else {
        phpSettingsBuilder_.setMessage(value);
      }
      bitField0_ |= 0x00000020;
      onChanged();
      return this;
    }

    /**
     *
     *
     * <pre>
     * Settings for PHP client libraries.
     * </pre>
     *
     * <code>.google.api.PhpSettings php_settings = 23;</code>
     */
    public Builder setPhpSettings(com.google.api.PhpSettings.Builder builderForValue) {
      if (phpSettingsBuilder_ == null) {
        phpSettings_ = builderForValue.build();
      } else {
        phpSettingsBuilder_.setMessage(builderForValue.build());
      }
      bitField0_ |= 0x00000020;
      onChanged();
      return this;
    }

    /**
     *
     *
     * <pre>
     * Settings for PHP client libraries.
     * </pre>
     *
     * <code>.google.api.PhpSettings php_settings = 23;</code>
     */
    public Builder mergePhpSettings(com.google.api.PhpSettings value) {
      if (phpSettingsBuilder_ == null) {
        if (((bitField0_ & 0x00000020) != 0)
            && phpSettings_ != null
            && phpSettings_ != com.google.api.PhpSettings.getDefaultInstance()) {
          getPhpSettingsBuilder().mergeFrom(value);
        } else {
          phpSettings_ = value;
        }
      } else {
        phpSettingsBuilder_.mergeFrom(value);
      }
      if (phpSettings_ != null) {
        bitField0_ |= 0x00000020;
        onChanged();
      }
      return this;
    }

    /**
     *
     *
     * <pre>
     * Settings for PHP client libraries.
     * </pre>
     *
     * <code>.google.api.PhpSettings php_settings = 23;</code>
     */
    public Builder clearPhpSettings() {
      bitField0_ = (bitField0_ & ~0x00000020);
      phpSettings_ = null;
      if (phpSettingsBuilder_ != null) {
        phpSettingsBuilder_.dispose();
        phpSettingsBuilder_ = null;
      }
      onChanged();
      return this;
    }

    /**
     *
     *
     * <pre>
     * Settings for PHP client libraries.
     * </pre>
     *
     * <code>.google.api.PhpSettings php_settings = 23;</code>
     */
    public com.google.api.PhpSettings.Builder getPhpSettingsBuilder() {
      bitField0_ |= 0x00000020;
      onChanged();
      return internalGetPhpSettingsFieldBuilder().getBuilder();
    }

    /**
     *
     *
     * <pre>
     * Settings for PHP client libraries.
     * </pre>
     *
     * <code>.google.api.PhpSettings php_settings = 23;</code>
     */
    public com.google.api.PhpSettingsOrBuilder getPhpSettingsOrBuilder() {
      if (phpSettingsBuilder_ != null) {
        return phpSettingsBuilder_.getMessageOrBuilder();
      } else {
        return phpSettings_ == null
            ? com.google.api.PhpSettings.getDefaultInstance()
            : phpSettings_;
      }
    }

    /**
     *
     *
     * <pre>
     * Settings for PHP client libraries.
     * </pre>
     *
     * <code>.google.api.PhpSettings php_settings = 23;</code>
     */
    private com.google.protobuf.SingleFieldBuilder<
            com.google.api.PhpSettings,
            com.google.api.PhpSettings.Builder,
            com.google.api.PhpSettingsOrBuilder>
        internalGetPhpSettingsFieldBuilder() {
      if (phpSettingsBuilder_ == null) {
        phpSettingsBuilder_ =
            new com.google.protobuf.SingleFieldBuilder<
                com.google.api.PhpSettings,
                com.google.api.PhpSettings.Builder,
                com.google.api.PhpSettingsOrBuilder>(
                getPhpSettings(), getParentForChildren(), isClean());
        phpSettings_ = null;
      }
      return phpSettingsBuilder_;
    }

    private com.google.api.PythonSettings pythonSettings_;
    private com.google.protobuf.SingleFieldBuilder<
            com.google.api.PythonSettings,
            com.google.api.PythonSettings.Builder,
            com.google.api.PythonSettingsOrBuilder>
        pythonSettingsBuilder_;

    /**
     *
     *
     * <pre>
     * Settings for Python client libraries.
     * </pre>
     *
     * <code>.google.api.PythonSettings python_settings = 24;</code>
     *
     * @return Whether the pythonSettings field is set.
     */
    public boolean hasPythonSettings() {
      return ((bitField0_ & 0x00000040) != 0);
    }

    /**
     *
     *
     * <pre>
     * Settings for Python client libraries.
     * </pre>
     *
     * <code>.google.api.PythonSettings python_settings = 24;</code>
     *
     * @return The pythonSettings.
     */
    public com.google.api.PythonSettings getPythonSettings() {
      if (pythonSettingsBuilder_ == null) {
        return pythonSettings_ == null
            ? com.google.api.PythonSettings.getDefaultInstance()
            : pythonSettings_;
      } else {
        return pythonSettingsBuilder_.getMessage();
      }
    }

    /**
     *
     *
     * <pre>
     * Settings for Python client libraries.
     * </pre>
     *
     * <code>.google.api.PythonSettings python_settings = 24;</code>
     */
    public Builder setPythonSettings(com.google.api.PythonSettings value) {
      if (pythonSettingsBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        pythonSettings_ = value;
      } else {
        pythonSettingsBuilder_.setMessage(value);
      }
      bitField0_ |= 0x00000040;
      onChanged();
      return this;
    }

    /**
     *
     *
     * <pre>
     * Settings for Python client libraries.
     * </pre>
     *
     * <code>.google.api.PythonSettings python_settings = 24;</code>
     */
    public Builder setPythonSettings(com.google.api.PythonSettings.Builder builderForValue) {
      if (pythonSettingsBuilder_ == null) {
        pythonSettings_ = builderForValue.build();
      } else {
        pythonSettingsBuilder_.setMessage(builderForValue.build());
      }
      bitField0_ |= 0x00000040;
      onChanged();
      return this;
    }

    /**
     *
     *
     * <pre>
     * Settings for Python client libraries.
     * </pre>
     *
     * <code>.google.api.PythonSettings python_settings = 24;</code>
     */
    public Builder mergePythonSettings(com.google.api.PythonSettings value) {
      if (pythonSettingsBuilder_ == null) {
        if (((bitField0_ & 0x00000040) != 0)
            && pythonSettings_ != null
            && pythonSettings_ != com.google.api.PythonSettings.getDefaultInstance()) {
          getPythonSettingsBuilder().mergeFrom(value);
        } else {
          pythonSettings_ = value;
        }
      } else {
        pythonSettingsBuilder_.mergeFrom(value);
      }
      if (pythonSettings_ != null) {
        bitField0_ |= 0x00000040;
        onChanged();
      }
      return this;
    }

    /**
     *
     *
     * <pre>
     * Settings for Python client libraries.
     * </pre>
     *
     * <code>.google.api.PythonSettings python_settings = 24;</code>
     */
    public Builder clearPythonSettings() {
      bitField0_ = (bitField0_ & ~0x00000040);
      pythonSettings_ = null;
      if (pythonSettingsBuilder_ != null) {
        pythonSettingsBuilder_.dispose();
        pythonSettingsBuilder_ = null;
      }
      onChanged();
      return this;
    }

    /**
     *
     *
     * <pre>
     * Settings for Python client libraries.
     * </pre>
     *
     * <code>.google.api.PythonSettings python_settings = 24;</code>
     */
    public com.google.api.PythonSettings.Builder getPythonSettingsBuilder() {
      bitField0_ |= 0x00000040;
      onChanged();
      return internalGetPythonSettingsFieldBuilder().getBuilder();
    }

    /**
     *
     *
     * <pre>
     * Settings for Python client libraries.
     * </pre>
     *
     * <code>.google.api.PythonSettings python_settings = 24;</code>
     */
    public com.google.api.PythonSettingsOrBuilder getPythonSettingsOrBuilder() {
      if (pythonSettingsBuilder_ != null) {
        return pythonSettingsBuilder_.getMessageOrBuilder();
      } else {
        return pythonSettings_ == null
            ? com.google.api.PythonSettings.getDefaultInstance()
            : pythonSettings_;
      }
    }

    /**
     *
     *
     * <pre>
     * Settings for Python client libraries.
     * </pre>
     *
     * <code>.google.api.PythonSettings python_settings = 24;</code>
     */
    private com.google.protobuf.SingleFieldBuilder<
            com.google.api.PythonSettings,
            com.google.api.PythonSettings.Builder,
            com.google.api.PythonSettingsOrBuilder>
        internalGetPythonSettingsFieldBuilder() {
      if (pythonSettingsBuilder_ == null) {
        pythonSettingsBuilder_ =
            new com.google.protobuf.SingleFieldBuilder<
                com.google.api.PythonSettings,
                com.google.api.PythonSettings.Builder,
                com.google.api.PythonSettingsOrBuilder>(
                getPythonSettings(), getParentForChildren(), isClean());
        pythonSettings_ = null;
      }
      return pythonSettingsBuilder_;
    }

    private com.google.api.NodeSettings nodeSettings_;
    private com.google.protobuf.SingleFieldBuilder<
            com.google.api.NodeSettings,
            com.google.api.NodeSettings.Builder,
            com.google.api.NodeSettingsOrBuilder>
        nodeSettingsBuilder_;

    /**
     *
     *
     * <pre>
     * Settings for Node client libraries.
     * </pre>
     *
     * <code>.google.api.NodeSettings node_settings = 25;</code>
     *
     * @return Whether the nodeSettings field is set.
     */
    public boolean hasNodeSettings() {
      return ((bitField0_ & 0x00000080) != 0);
    }

    /**
     *
     *
     * <pre>
     * Settings for Node client libraries.
     * </pre>
     *
     * <code>.google.api.NodeSettings node_settings = 25;</code>
     *
     * @return The nodeSettings.
     */
    public com.google.api.NodeSettings getNodeSettings() {
      if (nodeSettingsBuilder_ == null) {
        return nodeSettings_ == null
            ? com.google.api.NodeSettings.getDefaultInstance()
            : nodeSettings_;
      } else {
        return nodeSettingsBuilder_.getMessage();
      }
    }

    /**
     *
     *
     * <pre>
     * Settings for Node client libraries.
     * </pre>
     *
     * <code>.google.api.NodeSettings node_settings = 25;</code>
     */
    public Builder setNodeSettings(com.google.api.NodeSettings value) {
      if (nodeSettingsBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        nodeSettings_ = value;
      } else {
        nodeSettingsBuilder_.setMessage(value);
      }
      bitField0_ |= 0x00000080;
      onChanged();
      return this;
    }

    /**
     *
     *
     * <pre>
     * Settings for Node client libraries.
     * </pre>
     *
     * <code>.google.api.NodeSettings node_settings = 25;</code>
     */
    public Builder setNodeSettings(com.google.api.NodeSettings.Builder builderForValue) {
      if (nodeSettingsBuilder_ == null) {
        nodeSettings_ = builderForValue.build();
      } else {
        nodeSettingsBuilder_.setMessage(builderForValue.build());
      }
      bitField0_ |= 0x00000080;
      onChanged();
      return this;
    }

    /**
     *
     *
     * <pre>
     * Settings for Node client libraries.
     * </pre>
     *
     * <code>.google.api.NodeSettings node_settings = 25;</code>
     */
    public Builder mergeNodeSettings(com.google.api.NodeSettings value) {
      if (nodeSettingsBuilder_ == null) {
        if (((bitField0_ & 0x00000080) != 0)
            && nodeSettings_ != null
            && nodeSettings_ != com.google.api.NodeSettings.getDefaultInstance()) {
          getNodeSettingsBuilder().mergeFrom(value);
        } else {
          nodeSettings_ = value;
        }
      } else {
        nodeSettingsBuilder_.mergeFrom(value);
      }
      if (nodeSettings_ != null) {
        bitField0_ |= 0x00000080;
        onChanged();
      }
      return this;
    }

    /**
     *
     *
     * <pre>
     * Settings for Node client libraries.
     * </pre>
     *
     * <code>.google.api.NodeSettings node_settings = 25;</code>
     */
    public Builder clearNodeSettings() {
      bitField0_ = (bitField0_ & ~0x00000080);
      nodeSettings_ = null;
      if (nodeSettingsBuilder_ != null) {
        nodeSettingsBuilder_.dispose();
        nodeSettingsBuilder_ = null;
      }
      onChanged();
      return this;
    }

    /**
     *
     *
     * <pre>
     * Settings for Node client libraries.
     * </pre>
     *
     * <code>.google.api.NodeSettings node_settings = 25;</code>
     */
    public com.google.api.NodeSettings.Builder getNodeSettingsBuilder() {
      bitField0_ |= 0x00000080;
      onChanged();
      return internalGetNodeSettingsFieldBuilder().getBuilder();
    }

    /**
     *
     *
     * <pre>
     * Settings for Node client libraries.
     * </pre>
     *
     * <code>.google.api.NodeSettings node_settings = 25;</code>
     */
    public com.google.api.NodeSettingsOrBuilder getNodeSettingsOrBuilder() {
      if (nodeSettingsBuilder_ != null) {
        return nodeSettingsBuilder_.getMessageOrBuilder();
      } else {
        return nodeSettings_ == null
            ? com.google.api.NodeSettings.getDefaultInstance()
            : nodeSettings_;
      }
    }

    /**
     *
     *
     * <pre>
     * Settings for Node client libraries.
     * </pre>
     *
     * <code>.google.api.NodeSettings node_settings = 25;</code>
     */
    private com.google.protobuf.SingleFieldBuilder<
            com.google.api.NodeSettings,
            com.google.api.NodeSettings.Builder,
            com.google.api.NodeSettingsOrBuilder>
        internalGetNodeSettingsFieldBuilder() {
      if (nodeSettingsBuilder_ == null) {
        nodeSettingsBuilder_ =
            new com.google.protobuf.SingleFieldBuilder<
                com.google.api.NodeSettings,
                com.google.api.NodeSettings.Builder,
                com.google.api.NodeSettingsOrBuilder>(
                getNodeSettings(), getParentForChildren(), isClean());
        nodeSettings_ = null;
      }
      return nodeSettingsBuilder_;
    }

    private com.google.api.DotnetSettings dotnetSettings_;
    private com.google.protobuf.SingleFieldBuilder<
            com.google.api.DotnetSettings,
            com.google.api.DotnetSettings.Builder,
            com.google.api.DotnetSettingsOrBuilder>
        dotnetSettingsBuilder_;

    /**
     *
     *
     * <pre>
     * Settings for .NET client libraries.
     * </pre>
     *
     * <code>.google.api.DotnetSettings dotnet_settings = 26;</code>
     *
     * @return Whether the dotnetSettings field is set.
     */
    public boolean hasDotnetSettings() {
      return ((bitField0_ & 0x00000100) != 0);
    }

    /**
     *
     *
     * <pre>
     * Settings for .NET client libraries.
     * </pre>
     *
     * <code>.google.api.DotnetSettings dotnet_settings = 26;</code>
     *
     * @return The dotnetSettings.
     */
    public com.google.api.DotnetSettings getDotnetSettings() {
      if (dotnetSettingsBuilder_ == null) {
        return dotnetSettings_ == null
            ? com.google.api.DotnetSettings.getDefaultInstance()
            : dotnetSettings_;
      } else {
        return dotnetSettingsBuilder_.getMessage();
      }
    }

    /**
     *
     *
     * <pre>
     * Settings for .NET client libraries.
     * </pre>
     *
     * <code>.google.api.DotnetSettings dotnet_settings = 26;</code>
     */
    public Builder setDotnetSettings(com.google.api.DotnetSettings value) {
      if (dotnetSettingsBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        dotnetSettings_ = value;
      } else {
        dotnetSettingsBuilder_.setMessage(value);
      }
      bitField0_ |= 0x00000100;
      onChanged();
      return this;
    }

    /**
     *
     *
     * <pre>
     * Settings for .NET client libraries.
     * </pre>
     *
     * <code>.google.api.DotnetSettings dotnet_settings = 26;</code>
     */
    public Builder setDotnetSettings(com.google.api.DotnetSettings.Builder builderForValue) {
      if (dotnetSettingsBuilder_ == null) {
        dotnetSettings_ = builderForValue.build();
      } else {
        dotnetSettingsBuilder_.setMessage(builderForValue.build());
      }
      bitField0_ |= 0x00000100;
      onChanged();
      return this;
    }

    /**
     *
     *
     * <pre>
     * Settings for .NET client libraries.
     * </pre>
     *
     * <code>.google.api.DotnetSettings dotnet_settings = 26;</code>
     */
    public Builder mergeDotnetSettings(com.google.api.DotnetSettings value) {
      if (dotnetSettingsBuilder_ == null) {
        if (((bitField0_ & 0x00000100) != 0)
            && dotnetSettings_ != null
            && dotnetSettings_ != com.google.api.DotnetSettings.getDefaultInstance()) {
          getDotnetSettingsBuilder().mergeFrom(value);
        } else {
          dotnetSettings_ = value;
        }
      } else {
        dotnetSettingsBuilder_.mergeFrom(value);
      }
      if (dotnetSettings_ != null) {
        bitField0_ |= 0x00000100;
        onChanged();
      }
      return this;
    }

    /**
     *
     *
     * <pre>
     * Settings for .NET client libraries.
     * </pre>
     *
     * <code>.google.api.DotnetSettings dotnet_settings = 26;</code>
     */
    public Builder clearDotnetSettings() {
      bitField0_ = (bitField0_ & ~0x00000100);
      dotnetSettings_ = null;
      if (dotnetSettingsBuilder_ != null) {
        dotnetSettingsBuilder_.dispose();
        dotnetSettingsBuilder_ = null;
      }
      onChanged();
      return this;
    }

    /**
     *
     *
     * <pre>
     * Settings for .NET client libraries.
     * </pre>
     *
     * <code>.google.api.DotnetSettings dotnet_settings = 26;</code>
     */
    public com.google.api.DotnetSettings.Builder getDotnetSettingsBuilder() {
      bitField0_ |= 0x00000100;
      onChanged();
      return internalGetDotnetSettingsFieldBuilder().getBuilder();
    }

    /**
     *
     *
     * <pre>
     * Settings for .NET client libraries.
     * </pre>
     *
     * <code>.google.api.DotnetSettings dotnet_settings = 26;</code>
     */
    public com.google.api.DotnetSettingsOrBuilder getDotnetSettingsOrBuilder() {
      if (dotnetSettingsBuilder_ != null) {
        return dotnetSettingsBuilder_.getMessageOrBuilder();
      } else {
        return dotnetSettings_ == null
            ? com.google.api.DotnetSettings.getDefaultInstance()
            : dotnetSettings_;
      }
    }

    /**
     *
     *
     * <pre>
     * Settings for .NET client libraries.
     * </pre>
     *
     * <code>.google.api.DotnetSettings dotnet_settings = 26;</code>
     */
    private com.google.protobuf.SingleFieldBuilder<
            com.google.api.DotnetSettings,
            com.google.api.DotnetSettings.Builder,
            com.google.api.DotnetSettingsOrBuilder>
        internalGetDotnetSettingsFieldBuilder() {
      if (dotnetSettingsBuilder_ == null) {
        dotnetSettingsBuilder_ =
            new com.google.protobuf.SingleFieldBuilder<
                com.google.api.DotnetSettings,
                com.google.api.DotnetSettings.Builder,
                com.google.api.DotnetSettingsOrBuilder>(
                getDotnetSettings(), getParentForChildren(), isClean());
        dotnetSettings_ = null;
      }
      return dotnetSettingsBuilder_;
    }

    private com.google.api.RubySettings rubySettings_;
    private com.google.protobuf.SingleFieldBuilder<
            com.google.api.RubySettings,
            com.google.api.RubySettings.Builder,
            com.google.api.RubySettingsOrBuilder>
        rubySettingsBuilder_;

    /**
     *
     *
     * <pre>
     * Settings for Ruby client libraries.
     * </pre>
     *
     * <code>.google.api.RubySettings ruby_settings = 27;</code>
     *
     * @return Whether the rubySettings field is set.
     */
    public boolean hasRubySettings() {
      return ((bitField0_ & 0x00000200) != 0);
    }

    /**
     *
     *
     * <pre>
     * Settings for Ruby client libraries.
     * </pre>
     *
     * <code>.google.api.RubySettings ruby_settings = 27;</code>
     *
     * @return The rubySettings.
     */
    public com.google.api.RubySettings getRubySettings() {
      if (rubySettingsBuilder_ == null) {
        return rubySettings_ == null
            ? com.google.api.RubySettings.getDefaultInstance()
            : rubySettings_;
      } else {
        return rubySettingsBuilder_.getMessage();
      }
    }

    /**
     *
     *
     * <pre>
     * Settings for Ruby client libraries.
     * </pre>
     *
     * <code>.google.api.RubySettings ruby_settings = 27;</code>
     */
    public Builder setRubySettings(com.google.api.RubySettings value) {
      if (rubySettingsBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        rubySettings_ = value;
      } else {
        rubySettingsBuilder_.setMessage(value);
      }
      bitField0_ |= 0x00000200;
      onChanged();
      return this;
    }

    /**
     *
     *
     * <pre>
     * Settings for Ruby client libraries.
     * </pre>
     *
     * <code>.google.api.RubySettings ruby_settings = 27;</code>
     */
    public Builder setRubySettings(com.google.api.RubySettings.Builder builderForValue) {
      if (rubySettingsBuilder_ == null) {
        rubySettings_ = builderForValue.build();
      } else {
        rubySettingsBuilder_.setMessage(builderForValue.build());
      }
      bitField0_ |= 0x00000200;
      onChanged();
      return this;
    }

    /**
     *
     *
     * <pre>
     * Settings for Ruby client libraries.
     * </pre>
     *
     * <code>.google.api.RubySettings ruby_settings = 27;</code>
     */
    public Builder mergeRubySettings(com.google.api.RubySettings value) {
      if (rubySettingsBuilder_ == null) {
        if (((bitField0_ & 0x00000200) != 0)
            && rubySettings_ != null
            && rubySettings_ != com.google.api.RubySettings.getDefaultInstance()) {
          getRubySettingsBuilder().mergeFrom(value);
        } else {
          rubySettings_ = value;
        }
      } else {
        rubySettingsBuilder_.mergeFrom(value);
      }
      if (rubySettings_ != null) {
        bitField0_ |= 0x00000200;
        onChanged();
      }
      return this;
    }

    /**
     *
     *
     * <pre>
     * Settings for Ruby client libraries.
     * </pre>
     *
     * <code>.google.api.RubySettings ruby_settings = 27;</code>
     */
    public Builder clearRubySettings() {
      bitField0_ = (bitField0_ & ~0x00000200);
      rubySettings_ = null;
      if (rubySettingsBuilder_ != null) {
        rubySettingsBuilder_.dispose();
        rubySettingsBuilder_ = null;
      }
      onChanged();
      return this;
    }

    /**
     *
     *
     * <pre>
     * Settings for Ruby client libraries.
     * </pre>
     *
     * <code>.google.api.RubySettings ruby_settings = 27;</code>
     */
    public com.google.api.RubySettings.Builder getRubySettingsBuilder() {
      bitField0_ |= 0x00000200;
      onChanged();
      return internalGetRubySettingsFieldBuilder().getBuilder();
    }

    /**
     *
     *
     * <pre>
     * Settings for Ruby client libraries.
     * </pre>
     *
     * <code>.google.api.RubySettings ruby_settings = 27;</code>
     */
    public com.google.api.RubySettingsOrBuilder getRubySettingsOrBuilder() {
      if (rubySettingsBuilder_ != null) {
        return rubySettingsBuilder_.getMessageOrBuilder();
      } else {
        return rubySettings_ == null
            ? com.google.api.RubySettings.getDefaultInstance()
            : rubySettings_;
      }
    }

    /**
     *
     *
     * <pre>
     * Settings for Ruby client libraries.
     * </pre>
     *
     * <code>.google.api.RubySettings ruby_settings = 27;</code>
     */
    private com.google.protobuf.SingleFieldBuilder<
            com.google.api.RubySettings,
            com.google.api.RubySettings.Builder,
            com.google.api.RubySettingsOrBuilder>
        internalGetRubySettingsFieldBuilder() {
      if (rubySettingsBuilder_ == null) {
        rubySettingsBuilder_ =
            new com.google.protobuf.SingleFieldBuilder<
                com.google.api.RubySettings,
                com.google.api.RubySettings.Builder,
                com.google.api.RubySettingsOrBuilder>(
                getRubySettings(), getParentForChildren(), isClean());
        rubySettings_ = null;
      }
      return rubySettingsBuilder_;
    }

    private com.google.api.GoSettings goSettings_;
    private com.google.protobuf.SingleFieldBuilder<
            com.google.api.GoSettings,
            com.google.api.GoSettings.Builder,
            com.google.api.GoSettingsOrBuilder>
        goSettingsBuilder_;

    /**
     *
     *
     * <pre>
     * Settings for Go client libraries.
     * </pre>
     *
     * <code>.google.api.GoSettings go_settings = 28;</code>
     *
     * @return Whether the goSettings field is set.
     */
    public boolean hasGoSettings() {
      return ((bitField0_ & 0x00000400) != 0);
    }

    /**
     *
     *
     * <pre>
     * Settings for Go client libraries.
     * </pre>
     *
     * <code>.google.api.GoSettings go_settings = 28;</code>
     *
     * @return The goSettings.
     */
    public com.google.api.GoSettings getGoSettings() {
      if (goSettingsBuilder_ == null) {
        return goSettings_ == null ? com.google.api.GoSettings.getDefaultInstance() : goSettings_;
      } else {
        return goSettingsBuilder_.getMessage();
      }
    }

    /**
     *
     *
     * <pre>
     * Settings for Go client libraries.
     * </pre>
     *
     * <code>.google.api.GoSettings go_settings = 28;</code>
     */
    public Builder setGoSettings(com.google.api.GoSettings value) {
      if (goSettingsBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        goSettings_ = value;
      } else {
        goSettingsBuilder_.setMessage(value);
      }
      bitField0_ |= 0x00000400;
      onChanged();
      return this;
    }

    /**
     *
     *
     * <pre>
     * Settings for Go client libraries.
     * </pre>
     *
     * <code>.google.api.GoSettings go_settings = 28;</code>
     */
    public Builder setGoSettings(com.google.api.GoSettings.Builder builderForValue) {
      if (goSettingsBuilder_ == null) {
        goSettings_ = builderForValue.build();
      } else {
        goSettingsBuilder_.setMessage(builderForValue.build());
      }
      bitField0_ |= 0x00000400;
      onChanged();
      return this;
    }

    /**
     *
     *
     * <pre>
     * Settings for Go client libraries.
     * </pre>
     *
     * <code>.google.api.GoSettings go_settings = 28;</code>
     */
    public Builder mergeGoSettings(com.google.api.GoSettings value) {
      if (goSettingsBuilder_ == null) {
        if (((bitField0_ & 0x00000400) != 0)
            && goSettings_ != null
            && goSettings_ != com.google.api.GoSettings.getDefaultInstance()) {
          getGoSettingsBuilder().mergeFrom(value);
        } else {
          goSettings_ = value;
        }
      } else {
        goSettingsBuilder_.mergeFrom(value);
      }
      if (goSettings_ != null) {
        bitField0_ |= 0x00000400;
        onChanged();
      }
      return this;
    }

    /**
     *
     *
     * <pre>
     * Settings for Go client libraries.
     * </pre>
     *
     * <code>.google.api.GoSettings go_settings = 28;</code>
     */
    public Builder clearGoSettings() {
      bitField0_ = (bitField0_ & ~0x00000400);
      goSettings_ = null;
      if (goSettingsBuilder_ != null) {
        goSettingsBuilder_.dispose();
        goSettingsBuilder_ = null;
      }
      onChanged();
      return this;
    }

    /**
     *
     *
     * <pre>
     * Settings for Go client libraries.
     * </pre>
     *
     * <code>.google.api.GoSettings go_settings = 28;</code>
     */
    public com.google.api.GoSettings.Builder getGoSettingsBuilder() {
      bitField0_ |= 0x00000400;
      onChanged();
      return internalGetGoSettingsFieldBuilder().getBuilder();
    }

    /**
     *
     *
     * <pre>
     * Settings for Go client libraries.
     * </pre>
     *
     * <code>.google.api.GoSettings go_settings = 28;</code>
     */
    public com.google.api.GoSettingsOrBuilder getGoSettingsOrBuilder() {
      if (goSettingsBuilder_ != null) {
        return goSettingsBuilder_.getMessageOrBuilder();
      } else {
        return goSettings_ == null ? com.google.api.GoSettings.getDefaultInstance() : goSettings_;
      }
    }

    /**
     *
     *
     * <pre>
     * Settings for Go client libraries.
     * </pre>
     *
     * <code>.google.api.GoSettings go_settings = 28;</code>
     */
    private com.google.protobuf.SingleFieldBuilder<
            com.google.api.GoSettings,
            com.google.api.GoSettings.Builder,
            com.google.api.GoSettingsOrBuilder>
        internalGetGoSettingsFieldBuilder() {
      if (goSettingsBuilder_ == null) {
        goSettingsBuilder_ =
            new com.google.protobuf.SingleFieldBuilder<
                com.google.api.GoSettings,
                com.google.api.GoSettings.Builder,
                com.google.api.GoSettingsOrBuilder>(
                getGoSettings(), getParentForChildren(), isClean());
        goSettings_ = null;
      }
      return goSettingsBuilder_;
    }

    // @@protoc_insertion_point(builder_scope:google.api.ClientLibrarySettings)
  }

  // @@protoc_insertion_point(class_scope:google.api.ClientLibrarySettings)
  private static final com.google.api.ClientLibrarySettings DEFAULT_INSTANCE;

  static {
    DEFAULT_INSTANCE = new com.google.api.ClientLibrarySettings();
  }

  public static com.google.api.ClientLibrarySettings getDefaultInstance() {
    return DEFAULT_INSTANCE;
  }

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

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

  @java.lang.Override
  public com.google.api.ClientLibrarySettings getDefaultInstanceForType() {
    return DEFAULT_INSTANCE;
  }
}
