yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass Maven / Gradle / Ivy
// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: yandex/cloud/apploadbalancer/v1/backend_group.proto
package yandex.cloud.api.apploadbalancer.v1;
public final class BackendGroupOuterClass {
  private BackendGroupOuterClass() {}
  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistryLite registry) {
  }
  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistry registry) {
    registerAllExtensions(
        (com.google.protobuf.ExtensionRegistryLite) registry);
  }
  /**
   * 
   * A load balancing mode resource.
   * For details about the concept, see
   * [documentation](/docs/application-load-balancer/concepts/backend-group#balancing-mode).
   * 
   *
   * Protobuf enum {@code yandex.cloud.apploadbalancer.v1.LoadBalancingMode}
   */
  public enum LoadBalancingMode
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * 
     * Round robin load balancing mode.
     * All endpoints of the backend take their turns to receive requests attributed to the backend.
     * 
     *
     * ROUND_ROBIN = 0;
     */
    ROUND_ROBIN(0),
    /**
     * 
     * Random load balancing mode. Default value.
     * For a request attributed to the backend, an endpoint that receives it is picked at random.
     * 
     *
     * RANDOM = 1;
     */
    RANDOM(1),
    /**
     * 
     * Least request load balancing mode.
     * To pick an endpoint that receives a request attributed to the backend, the power of two choices algorithm is used;
     * that is, two endpoints are picked at random, and the request is sent to the one which has the fewest active
     * requests.
     * 
     *
     * LEAST_REQUEST = 2;
     */
    LEAST_REQUEST(2),
    /**
     * 
     * Maglev hashing load balancing mode.
     * Each endpoint is hashed, and a hash table with 65537 rows is filled accordingly, so that every endpoint occupies
     * the same amount of rows. An attribute of each request is also hashed by the same function (if session affinity is
     * enabled for the backend group, the attribute to hash is specified in session affinity configuration). The row
     * with the same number as the resulting value is looked up in the table to determine the endpoint that receives
     * the request.
     * If the backend group with session affinity enabled contains more than one backend with positive weight, endpoints
     * for backends with `MAGLEV_HASH` load balancing mode are picked at `RANDOM` instead.
     * 
     *
     * MAGLEV_HASH = 3;
     */
    MAGLEV_HASH(3),
    UNRECOGNIZED(-1),
    ;
    /**
     * 
     * Round robin load balancing mode.
     * All endpoints of the backend take their turns to receive requests attributed to the backend.
     * 
     *
     * ROUND_ROBIN = 0;
     */
    public static final int ROUND_ROBIN_VALUE = 0;
    /**
     * 
     * Random load balancing mode. Default value.
     * For a request attributed to the backend, an endpoint that receives it is picked at random.
     * 
     *
     * RANDOM = 1;
     */
    public static final int RANDOM_VALUE = 1;
    /**
     * 
     * Least request load balancing mode.
     * To pick an endpoint that receives a request attributed to the backend, the power of two choices algorithm is used;
     * that is, two endpoints are picked at random, and the request is sent to the one which has the fewest active
     * requests.
     * 
     *
     * LEAST_REQUEST = 2;
     */
    public static final int LEAST_REQUEST_VALUE = 2;
    /**
     * 
     * Maglev hashing load balancing mode.
     * Each endpoint is hashed, and a hash table with 65537 rows is filled accordingly, so that every endpoint occupies
     * the same amount of rows. An attribute of each request is also hashed by the same function (if session affinity is
     * enabled for the backend group, the attribute to hash is specified in session affinity configuration). The row
     * with the same number as the resulting value is looked up in the table to determine the endpoint that receives
     * the request.
     * If the backend group with session affinity enabled contains more than one backend with positive weight, endpoints
     * for backends with `MAGLEV_HASH` load balancing mode are picked at `RANDOM` instead.
     * 
     *
     * MAGLEV_HASH = 3;
     */
    public static final int MAGLEV_HASH_VALUE = 3;
    public final int getNumber() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalArgumentException(
            "Can't get the number of an unknown enum value.");
      }
      return value;
    }
    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     * @deprecated Use {@link #forNumber(int)} instead.
     */
    @java.lang.Deprecated
    public static LoadBalancingMode valueOf(int value) {
      return forNumber(value);
    }
    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     */
    public static LoadBalancingMode forNumber(int value) {
      switch (value) {
        case 0: return ROUND_ROBIN;
        case 1: return RANDOM;
        case 2: return LEAST_REQUEST;
        case 3: return MAGLEV_HASH;
        default: return null;
      }
    }
    public static com.google.protobuf.Internal.EnumLiteMap
        internalGetValueMap() {
      return internalValueMap;
    }
    private static final com.google.protobuf.Internal.EnumLiteMap<
        LoadBalancingMode> internalValueMap =
          new com.google.protobuf.Internal.EnumLiteMap() {
            public LoadBalancingMode findValueByNumber(int number) {
              return LoadBalancingMode.forNumber(number);
            }
          };
    public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalStateException(
            "Can't get the descriptor of an unrecognized enum value.");
      }
      return getDescriptor().getValues().get(ordinal());
    }
    public final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptorForType() {
      return getDescriptor();
    }
    public static final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptor() {
      return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.getDescriptor().getEnumTypes().get(0);
    }
    private static final LoadBalancingMode[] VALUES = values();
    public static LoadBalancingMode valueOf(
        com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
      if (desc.getType() != getDescriptor()) {
        throw new java.lang.IllegalArgumentException(
          "EnumValueDescriptor is not for this type.");
      }
      if (desc.getIndex() == -1) {
        return UNRECOGNIZED;
      }
      return VALUES[desc.getIndex()];
    }
    private final int value;
    private LoadBalancingMode(int value) {
      this.value = value;
    }
    // @@protoc_insertion_point(enum_scope:yandex.cloud.apploadbalancer.v1.LoadBalancingMode)
  }
  public interface BackendGroupOrBuilder extends
      // @@protoc_insertion_point(interface_extends:yandex.cloud.apploadbalancer.v1.BackendGroup)
      com.google.protobuf.MessageOrBuilder {
    /**
     * 
     * ID of the backend group. Generated at creation time.
     * 
     *
     * string id = 1;
     * @return The id.
     */
    java.lang.String getId();
    /**
     * 
     * ID of the backend group. Generated at creation time.
     * 
     *
     * string id = 1;
     * @return The bytes for id.
     */
    com.google.protobuf.ByteString
        getIdBytes();
    /**
     * 
     * Name of the backend group. The name is unique within the folder. The string length in characters is 3-63.
     * 
     *
     * string name = 2;
     * @return The name.
     */
    java.lang.String getName();
    /**
     * 
     * Name of the backend group. The name is unique within the folder. The string length in characters is 3-63.
     * 
     *
     * string name = 2;
     * @return The bytes for name.
     */
    com.google.protobuf.ByteString
        getNameBytes();
    /**
     * 
     * Description of the backend group. The string is 0-256 characters long.
     * 
     *
     * string description = 3;
     * @return The description.
     */
    java.lang.String getDescription();
    /**
     * 
     * Description of the backend group. The string is 0-256 characters long.
     * 
     *
     * string description = 3;
     * @return The bytes for description.
     */
    com.google.protobuf.ByteString
        getDescriptionBytes();
    /**
     * 
     * ID of the folder that the backend group belongs to.
     * 
     *
     * string folder_id = 4;
     * @return The folderId.
     */
    java.lang.String getFolderId();
    /**
     * 
     * ID of the folder that the backend group belongs to.
     * 
     *
     * string folder_id = 4;
     * @return The bytes for folderId.
     */
    com.google.protobuf.ByteString
        getFolderIdBytes();
    /**
     * 
     * Backend group labels as `key:value` pairs.
     * For details about the concept, see [documentation](/docs/overview/concepts/services#labels).
     * The maximum number of labels is 64.
     * 
     *
     * map<string, string> labels = 5;
     */
    int getLabelsCount();
    /**
     * 
     * Backend group labels as `key:value` pairs.
     * For details about the concept, see [documentation](/docs/overview/concepts/services#labels).
     * The maximum number of labels is 64.
     * 
     *
     * map<string, string> labels = 5;
     */
    boolean containsLabels(
        java.lang.String key);
    /**
     * Use {@link #getLabelsMap()} instead.
     */
    @java.lang.Deprecated
    java.util.Map
    getLabels();
    /**
     * 
     * Backend group labels as `key:value` pairs.
     * For details about the concept, see [documentation](/docs/overview/concepts/services#labels).
     * The maximum number of labels is 64.
     * 
     *
     * map<string, string> labels = 5;
     */
    java.util.Map
    getLabelsMap();
    /**
     * 
     * Backend group labels as `key:value` pairs.
     * For details about the concept, see [documentation](/docs/overview/concepts/services#labels).
     * The maximum number of labels is 64.
     * 
     *
     * map<string, string> labels = 5;
     */
    java.lang.String getLabelsOrDefault(
        java.lang.String key,
        java.lang.String defaultValue);
    /**
     * 
     * Backend group labels as `key:value` pairs.
     * For details about the concept, see [documentation](/docs/overview/concepts/services#labels).
     * The maximum number of labels is 64.
     * 
     *
     * map<string, string> labels = 5;
     */
    java.lang.String getLabelsOrThrow(
        java.lang.String key);
    /**
     * 
     * List of HTTP backends that the backend group consists of.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.HttpBackendGroup http = 6;
     * @return Whether the http field is set.
     */
    boolean hasHttp();
    /**
     * 
     * List of HTTP backends that the backend group consists of.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.HttpBackendGroup http = 6;
     * @return The http.
     */
    yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackendGroup getHttp();
    /**
     * 
     * List of HTTP backends that the backend group consists of.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.HttpBackendGroup http = 6;
     */
    yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackendGroupOrBuilder getHttpOrBuilder();
    /**
     * 
     * List of gRPC backends that the backend group consists of.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.GrpcBackendGroup grpc = 7;
     * @return Whether the grpc field is set.
     */
    boolean hasGrpc();
    /**
     * 
     * List of gRPC backends that the backend group consists of.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.GrpcBackendGroup grpc = 7;
     * @return The grpc.
     */
    yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackendGroup getGrpc();
    /**
     * 
     * List of gRPC backends that the backend group consists of.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.GrpcBackendGroup grpc = 7;
     */
    yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackendGroupOrBuilder getGrpcOrBuilder();
    /**
     * 
     * List of stream (TCP) backends that the backend group consists of.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.StreamBackendGroup stream = 10;
     * @return Whether the stream field is set.
     */
    boolean hasStream();
    /**
     * 
     * List of stream (TCP) backends that the backend group consists of.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.StreamBackendGroup stream = 10;
     * @return The stream.
     */
    yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackendGroup getStream();
    /**
     * 
     * List of stream (TCP) backends that the backend group consists of.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.StreamBackendGroup stream = 10;
     */
    yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackendGroupOrBuilder getStreamOrBuilder();
    /**
     * 
     * Creation timestamp.
     * 
     *
     * .google.protobuf.Timestamp created_at = 9;
     * @return Whether the createdAt field is set.
     */
    boolean hasCreatedAt();
    /**
     * 
     * Creation timestamp.
     * 
     *
     * .google.protobuf.Timestamp created_at = 9;
     * @return The createdAt.
     */
    com.google.protobuf.Timestamp getCreatedAt();
    /**
     * 
     * Creation timestamp.
     * 
     *
     * .google.protobuf.Timestamp created_at = 9;
     */
    com.google.protobuf.TimestampOrBuilder getCreatedAtOrBuilder();
    public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendGroup.BackendCase getBackendCase();
  }
  /**
   * 
   * A backend group resource.
   * For details about the concept, see [documentation](/docs/application-load-balancer/concepts/backend-group).
   * 
   *
   * Protobuf type {@code yandex.cloud.apploadbalancer.v1.BackendGroup}
   */
  public static final class BackendGroup extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:yandex.cloud.apploadbalancer.v1.BackendGroup)
      BackendGroupOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use BackendGroup.newBuilder() to construct.
    private BackendGroup(com.google.protobuf.GeneratedMessageV3.Builder> builder) {
      super(builder);
    }
    private BackendGroup() {
      id_ = "";
      name_ = "";
      description_ = "";
      folderId_ = "";
    }
    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new BackendGroup();
    }
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private BackendGroup(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();
              id_ = s;
              break;
            }
            case 18: {
              java.lang.String s = input.readStringRequireUtf8();
              name_ = s;
              break;
            }
            case 26: {
              java.lang.String s = input.readStringRequireUtf8();
              description_ = s;
              break;
            }
            case 34: {
              java.lang.String s = input.readStringRequireUtf8();
              folderId_ = s;
              break;
            }
            case 42: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                labels_ = com.google.protobuf.MapField.newMapField(
                    LabelsDefaultEntryHolder.defaultEntry);
                mutable_bitField0_ |= 0x00000001;
              }
              com.google.protobuf.MapEntry
              labels__ = input.readMessage(
                  LabelsDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
              labels_.getMutableMap().put(
                  labels__.getKey(), labels__.getValue());
              break;
            }
            case 50: {
              yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackendGroup.Builder subBuilder = null;
              if (backendCase_ == 6) {
                subBuilder = ((yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackendGroup) backend_).toBuilder();
              }
              backend_ =
                  input.readMessage(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackendGroup.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackendGroup) backend_);
                backend_ = subBuilder.buildPartial();
              }
              backendCase_ = 6;
              break;
            }
            case 58: {
              yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackendGroup.Builder subBuilder = null;
              if (backendCase_ == 7) {
                subBuilder = ((yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackendGroup) backend_).toBuilder();
              }
              backend_ =
                  input.readMessage(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackendGroup.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackendGroup) backend_);
                backend_ = subBuilder.buildPartial();
              }
              backendCase_ = 7;
              break;
            }
            case 74: {
              com.google.protobuf.Timestamp.Builder subBuilder = null;
              if (createdAt_ != null) {
                subBuilder = createdAt_.toBuilder();
              }
              createdAt_ = input.readMessage(com.google.protobuf.Timestamp.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(createdAt_);
                createdAt_ = subBuilder.buildPartial();
              }
              break;
            }
            case 82: {
              yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackendGroup.Builder subBuilder = null;
              if (backendCase_ == 10) {
                subBuilder = ((yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackendGroup) backend_).toBuilder();
              }
              backend_ =
                  input.readMessage(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackendGroup.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackendGroup) backend_);
                backend_ = subBuilder.buildPartial();
              }
              backendCase_ = 10;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_BackendGroup_descriptor;
    }
    @SuppressWarnings({"rawtypes"})
    @java.lang.Override
    protected com.google.protobuf.MapField internalGetMapField(
        int number) {
      switch (number) {
        case 5:
          return internalGetLabels();
        default:
          throw new RuntimeException(
              "Invalid map field number: " + number);
      }
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_BackendGroup_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendGroup.class, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendGroup.Builder.class);
    }
    private int backendCase_ = 0;
    private java.lang.Object backend_;
    public enum BackendCase
        implements com.google.protobuf.Internal.EnumLite,
            com.google.protobuf.AbstractMessage.InternalOneOfEnum {
      HTTP(6),
      GRPC(7),
      STREAM(10),
      BACKEND_NOT_SET(0);
      private final int value;
      private BackendCase(int value) {
        this.value = value;
      }
      /**
       * @param value The number of the enum to look for.
       * @return The enum associated with the given number.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static BackendCase valueOf(int value) {
        return forNumber(value);
      }
      public static BackendCase forNumber(int value) {
        switch (value) {
          case 6: return HTTP;
          case 7: return GRPC;
          case 10: return STREAM;
          case 0: return BACKEND_NOT_SET;
          default: return null;
        }
      }
      public int getNumber() {
        return this.value;
      }
    };
    public BackendCase
    getBackendCase() {
      return BackendCase.forNumber(
          backendCase_);
    }
    public static final int ID_FIELD_NUMBER = 1;
    private volatile java.lang.Object id_;
    /**
     * 
     * ID of the backend group. Generated at creation time.
     * 
     *
     * string id = 1;
     * @return The id.
     */
    @java.lang.Override
    public java.lang.String getId() {
      java.lang.Object ref = id_;
      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();
        id_ = s;
        return s;
      }
    }
    /**
     * 
     * ID of the backend group. Generated at creation time.
     * 
     *
     * string id = 1;
     * @return The bytes for id.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getIdBytes() {
      java.lang.Object ref = id_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        id_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    public static final int NAME_FIELD_NUMBER = 2;
    private volatile java.lang.Object name_;
    /**
     * 
     * Name of the backend group. The name is unique within the folder. The string length in characters is 3-63.
     * 
     *
     * string name = 2;
     * @return The name.
     */
    @java.lang.Override
    public java.lang.String getName() {
      java.lang.Object ref = name_;
      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();
        name_ = s;
        return s;
      }
    }
    /**
     * 
     * Name of the backend group. The name is unique within the folder. The string length in characters is 3-63.
     * 
     *
     * string name = 2;
     * @return The bytes for name.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getNameBytes() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    public static final int DESCRIPTION_FIELD_NUMBER = 3;
    private volatile java.lang.Object description_;
    /**
     * 
     * Description of the backend group. The string is 0-256 characters long.
     * 
     *
     * string description = 3;
     * @return The description.
     */
    @java.lang.Override
    public java.lang.String getDescription() {
      java.lang.Object ref = description_;
      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();
        description_ = s;
        return s;
      }
    }
    /**
     * 
     * Description of the backend group. The string is 0-256 characters long.
     * 
     *
     * string description = 3;
     * @return The bytes for description.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getDescriptionBytes() {
      java.lang.Object ref = description_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        description_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    public static final int FOLDER_ID_FIELD_NUMBER = 4;
    private volatile java.lang.Object folderId_;
    /**
     * 
     * ID of the folder that the backend group belongs to.
     * 
     *
     * string folder_id = 4;
     * @return The folderId.
     */
    @java.lang.Override
    public java.lang.String getFolderId() {
      java.lang.Object ref = folderId_;
      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();
        folderId_ = s;
        return s;
      }
    }
    /**
     * 
     * ID of the folder that the backend group belongs to.
     * 
     *
     * string folder_id = 4;
     * @return The bytes for folderId.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getFolderIdBytes() {
      java.lang.Object ref = folderId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        folderId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    public static final int LABELS_FIELD_NUMBER = 5;
    private static final class LabelsDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<
          java.lang.String, java.lang.String> defaultEntry =
              com.google.protobuf.MapEntry
              .newDefaultInstance(
                  yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_BackendGroup_LabelsEntry_descriptor, 
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "",
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "");
    }
    private com.google.protobuf.MapField<
        java.lang.String, java.lang.String> labels_;
    private com.google.protobuf.MapField
    internalGetLabels() {
      if (labels_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            LabelsDefaultEntryHolder.defaultEntry);
      }
      return labels_;
    }
    public int getLabelsCount() {
      return internalGetLabels().getMap().size();
    }
    /**
     * 
     * Backend group labels as `key:value` pairs.
     * For details about the concept, see [documentation](/docs/overview/concepts/services#labels).
     * The maximum number of labels is 64.
     * 
     *
     * map<string, string> labels = 5;
     */
    @java.lang.Override
    public boolean containsLabels(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      return internalGetLabels().getMap().containsKey(key);
    }
    /**
     * Use {@link #getLabelsMap()} instead.
     */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map getLabels() {
      return getLabelsMap();
    }
    /**
     * 
     * Backend group labels as `key:value` pairs.
     * For details about the concept, see [documentation](/docs/overview/concepts/services#labels).
     * The maximum number of labels is 64.
     * 
     *
     * map<string, string> labels = 5;
     */
    @java.lang.Override
    public java.util.Map getLabelsMap() {
      return internalGetLabels().getMap();
    }
    /**
     * 
     * Backend group labels as `key:value` pairs.
     * For details about the concept, see [documentation](/docs/overview/concepts/services#labels).
     * The maximum number of labels is 64.
     * 
     *
     * map<string, string> labels = 5;
     */
    @java.lang.Override
    public java.lang.String getLabelsOrDefault(
        java.lang.String key,
        java.lang.String defaultValue) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map map =
          internalGetLabels().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     * 
     * Backend group labels as `key:value` pairs.
     * For details about the concept, see [documentation](/docs/overview/concepts/services#labels).
     * The maximum number of labels is 64.
     * 
     *
     * map<string, string> labels = 5;
     */
    @java.lang.Override
    public java.lang.String getLabelsOrThrow(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map map =
          internalGetLabels().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }
    public static final int HTTP_FIELD_NUMBER = 6;
    /**
     * 
     * List of HTTP backends that the backend group consists of.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.HttpBackendGroup http = 6;
     * @return Whether the http field is set.
     */
    @java.lang.Override
    public boolean hasHttp() {
      return backendCase_ == 6;
    }
    /**
     * 
     * List of HTTP backends that the backend group consists of.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.HttpBackendGroup http = 6;
     * @return The http.
     */
    @java.lang.Override
    public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackendGroup getHttp() {
      if (backendCase_ == 6) {
         return (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackendGroup) backend_;
      }
      return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackendGroup.getDefaultInstance();
    }
    /**
     * 
     * List of HTTP backends that the backend group consists of.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.HttpBackendGroup http = 6;
     */
    @java.lang.Override
    public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackendGroupOrBuilder getHttpOrBuilder() {
      if (backendCase_ == 6) {
         return (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackendGroup) backend_;
      }
      return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackendGroup.getDefaultInstance();
    }
    public static final int GRPC_FIELD_NUMBER = 7;
    /**
     * 
     * List of gRPC backends that the backend group consists of.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.GrpcBackendGroup grpc = 7;
     * @return Whether the grpc field is set.
     */
    @java.lang.Override
    public boolean hasGrpc() {
      return backendCase_ == 7;
    }
    /**
     * 
     * List of gRPC backends that the backend group consists of.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.GrpcBackendGroup grpc = 7;
     * @return The grpc.
     */
    @java.lang.Override
    public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackendGroup getGrpc() {
      if (backendCase_ == 7) {
         return (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackendGroup) backend_;
      }
      return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackendGroup.getDefaultInstance();
    }
    /**
     * 
     * List of gRPC backends that the backend group consists of.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.GrpcBackendGroup grpc = 7;
     */
    @java.lang.Override
    public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackendGroupOrBuilder getGrpcOrBuilder() {
      if (backendCase_ == 7) {
         return (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackendGroup) backend_;
      }
      return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackendGroup.getDefaultInstance();
    }
    public static final int STREAM_FIELD_NUMBER = 10;
    /**
     * 
     * List of stream (TCP) backends that the backend group consists of.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.StreamBackendGroup stream = 10;
     * @return Whether the stream field is set.
     */
    @java.lang.Override
    public boolean hasStream() {
      return backendCase_ == 10;
    }
    /**
     * 
     * List of stream (TCP) backends that the backend group consists of.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.StreamBackendGroup stream = 10;
     * @return The stream.
     */
    @java.lang.Override
    public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackendGroup getStream() {
      if (backendCase_ == 10) {
         return (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackendGroup) backend_;
      }
      return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackendGroup.getDefaultInstance();
    }
    /**
     * 
     * List of stream (TCP) backends that the backend group consists of.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.StreamBackendGroup stream = 10;
     */
    @java.lang.Override
    public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackendGroupOrBuilder getStreamOrBuilder() {
      if (backendCase_ == 10) {
         return (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackendGroup) backend_;
      }
      return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackendGroup.getDefaultInstance();
    }
    public static final int CREATED_AT_FIELD_NUMBER = 9;
    private com.google.protobuf.Timestamp createdAt_;
    /**
     * 
     * Creation timestamp.
     * 
     *
     * .google.protobuf.Timestamp created_at = 9;
     * @return Whether the createdAt field is set.
     */
    @java.lang.Override
    public boolean hasCreatedAt() {
      return createdAt_ != null;
    }
    /**
     * 
     * Creation timestamp.
     * 
     *
     * .google.protobuf.Timestamp created_at = 9;
     * @return The createdAt.
     */
    @java.lang.Override
    public com.google.protobuf.Timestamp getCreatedAt() {
      return createdAt_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : createdAt_;
    }
    /**
     * 
     * Creation timestamp.
     * 
     *
     * .google.protobuf.Timestamp created_at = 9;
     */
    @java.lang.Override
    public com.google.protobuf.TimestampOrBuilder getCreatedAtOrBuilder() {
      return getCreatedAt();
    }
    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;
      memoizedIsInitialized = 1;
      return true;
    }
    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(id_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, id_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(description_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, description_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(folderId_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, folderId_);
      }
      com.google.protobuf.GeneratedMessageV3
        .serializeStringMapTo(
          output,
          internalGetLabels(),
          LabelsDefaultEntryHolder.defaultEntry,
          5);
      if (backendCase_ == 6) {
        output.writeMessage(6, (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackendGroup) backend_);
      }
      if (backendCase_ == 7) {
        output.writeMessage(7, (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackendGroup) backend_);
      }
      if (createdAt_ != null) {
        output.writeMessage(9, getCreatedAt());
      }
      if (backendCase_ == 10) {
        output.writeMessage(10, (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackendGroup) backend_);
      }
      unknownFields.writeTo(output);
    }
    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;
      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(id_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, id_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(description_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, description_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(folderId_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, folderId_);
      }
      for (java.util.Map.Entry entry
           : internalGetLabels().getMap().entrySet()) {
        com.google.protobuf.MapEntry
        labels__ = LabelsDefaultEntryHolder.defaultEntry.newBuilderForType()
            .setKey(entry.getKey())
            .setValue(entry.getValue())
            .build();
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(5, labels__);
      }
      if (backendCase_ == 6) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(6, (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackendGroup) backend_);
      }
      if (backendCase_ == 7) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(7, (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackendGroup) backend_);
      }
      if (createdAt_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(9, getCreatedAt());
      }
      if (backendCase_ == 10) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(10, (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackendGroup) backend_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendGroup)) {
        return super.equals(obj);
      }
      yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendGroup other = (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendGroup) obj;
      if (!getId()
          .equals(other.getId())) return false;
      if (!getName()
          .equals(other.getName())) return false;
      if (!getDescription()
          .equals(other.getDescription())) return false;
      if (!getFolderId()
          .equals(other.getFolderId())) return false;
      if (!internalGetLabels().equals(
          other.internalGetLabels())) return false;
      if (hasCreatedAt() != other.hasCreatedAt()) return false;
      if (hasCreatedAt()) {
        if (!getCreatedAt()
            .equals(other.getCreatedAt())) return false;
      }
      if (!getBackendCase().equals(other.getBackendCase())) return false;
      switch (backendCase_) {
        case 6:
          if (!getHttp()
              .equals(other.getHttp())) return false;
          break;
        case 7:
          if (!getGrpc()
              .equals(other.getGrpc())) return false;
          break;
        case 10:
          if (!getStream()
              .equals(other.getStream())) return false;
          break;
        case 0:
        default:
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }
    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + ID_FIELD_NUMBER;
      hash = (53 * hash) + getId().hashCode();
      hash = (37 * hash) + NAME_FIELD_NUMBER;
      hash = (53 * hash) + getName().hashCode();
      hash = (37 * hash) + DESCRIPTION_FIELD_NUMBER;
      hash = (53 * hash) + getDescription().hashCode();
      hash = (37 * hash) + FOLDER_ID_FIELD_NUMBER;
      hash = (53 * hash) + getFolderId().hashCode();
      if (!internalGetLabels().getMap().isEmpty()) {
        hash = (37 * hash) + LABELS_FIELD_NUMBER;
        hash = (53 * hash) + internalGetLabels().hashCode();
      }
      if (hasCreatedAt()) {
        hash = (37 * hash) + CREATED_AT_FIELD_NUMBER;
        hash = (53 * hash) + getCreatedAt().hashCode();
      }
      switch (backendCase_) {
        case 6:
          hash = (37 * hash) + HTTP_FIELD_NUMBER;
          hash = (53 * hash) + getHttp().hashCode();
          break;
        case 7:
          hash = (37 * hash) + GRPC_FIELD_NUMBER;
          hash = (53 * hash) + getGrpc().hashCode();
          break;
        case 10:
          hash = (37 * hash) + STREAM_FIELD_NUMBER;
          hash = (53 * hash) + getStream().hashCode();
          break;
        case 0:
        default:
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendGroup parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendGroup parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendGroup parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendGroup parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendGroup parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendGroup parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendGroup parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendGroup 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 yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendGroup parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendGroup 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 yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendGroup parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendGroup 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(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendGroup 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;
    }
    /**
     * 
     * A backend group resource.
     * For details about the concept, see [documentation](/docs/application-load-balancer/concepts/backend-group).
     * 
     *
     * Protobuf type {@code yandex.cloud.apploadbalancer.v1.BackendGroup}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:yandex.cloud.apploadbalancer.v1.BackendGroup)
        yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendGroupOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_BackendGroup_descriptor;
      }
      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapField internalGetMapField(
          int number) {
        switch (number) {
          case 5:
            return internalGetLabels();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapField internalGetMutableMapField(
          int number) {
        switch (number) {
          case 5:
            return internalGetMutableLabels();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_BackendGroup_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendGroup.class, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendGroup.Builder.class);
      }
      // Construct using yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendGroup.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        id_ = "";
        name_ = "";
        description_ = "";
        folderId_ = "";
        internalGetMutableLabels().clear();
        if (createdAtBuilder_ == null) {
          createdAt_ = null;
        } else {
          createdAt_ = null;
          createdAtBuilder_ = null;
        }
        backendCase_ = 0;
        backend_ = null;
        return this;
      }
      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_BackendGroup_descriptor;
      }
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendGroup getDefaultInstanceForType() {
        return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendGroup.getDefaultInstance();
      }
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendGroup build() {
        yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendGroup result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendGroup buildPartial() {
        yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendGroup result = new yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendGroup(this);
        int from_bitField0_ = bitField0_;
        result.id_ = id_;
        result.name_ = name_;
        result.description_ = description_;
        result.folderId_ = folderId_;
        result.labels_ = internalGetLabels();
        result.labels_.makeImmutable();
        if (backendCase_ == 6) {
          if (httpBuilder_ == null) {
            result.backend_ = backend_;
          } else {
            result.backend_ = httpBuilder_.build();
          }
        }
        if (backendCase_ == 7) {
          if (grpcBuilder_ == null) {
            result.backend_ = backend_;
          } else {
            result.backend_ = grpcBuilder_.build();
          }
        }
        if (backendCase_ == 10) {
          if (streamBuilder_ == null) {
            result.backend_ = backend_;
          } else {
            result.backend_ = streamBuilder_.build();
          }
        }
        if (createdAtBuilder_ == null) {
          result.createdAt_ = createdAt_;
        } else {
          result.createdAt_ = createdAtBuilder_.build();
        }
        result.backendCase_ = backendCase_;
        onBuilt();
        return result;
      }
      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendGroup) {
          return mergeFrom((yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendGroup)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      public Builder mergeFrom(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendGroup other) {
        if (other == yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendGroup.getDefaultInstance()) return this;
        if (!other.getId().isEmpty()) {
          id_ = other.id_;
          onChanged();
        }
        if (!other.getName().isEmpty()) {
          name_ = other.name_;
          onChanged();
        }
        if (!other.getDescription().isEmpty()) {
          description_ = other.description_;
          onChanged();
        }
        if (!other.getFolderId().isEmpty()) {
          folderId_ = other.folderId_;
          onChanged();
        }
        internalGetMutableLabels().mergeFrom(
            other.internalGetLabels());
        if (other.hasCreatedAt()) {
          mergeCreatedAt(other.getCreatedAt());
        }
        switch (other.getBackendCase()) {
          case HTTP: {
            mergeHttp(other.getHttp());
            break;
          }
          case GRPC: {
            mergeGrpc(other.getGrpc());
            break;
          }
          case STREAM: {
            mergeStream(other.getStream());
            break;
          }
          case BACKEND_NOT_SET: {
            break;
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }
      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }
      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendGroup parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendGroup) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int backendCase_ = 0;
      private java.lang.Object backend_;
      public BackendCase
          getBackendCase() {
        return BackendCase.forNumber(
            backendCase_);
      }
      public Builder clearBackend() {
        backendCase_ = 0;
        backend_ = null;
        onChanged();
        return this;
      }
      private int bitField0_;
      private java.lang.Object id_ = "";
      /**
       * 
       * ID of the backend group. Generated at creation time.
       * 
       *
       * string id = 1;
       * @return The id.
       */
      public java.lang.String getId() {
        java.lang.Object ref = id_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          id_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * 
       * ID of the backend group. Generated at creation time.
       * 
       *
       * string id = 1;
       * @return The bytes for id.
       */
      public com.google.protobuf.ByteString
          getIdBytes() {
        java.lang.Object ref = id_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          id_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * 
       * ID of the backend group. Generated at creation time.
       * 
       *
       * string id = 1;
       * @param value The id to set.
       * @return This builder for chaining.
       */
      public Builder setId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        id_ = value;
        onChanged();
        return this;
      }
      /**
       * 
       * ID of the backend group. Generated at creation time.
       * 
       *
       * string id = 1;
       * @return This builder for chaining.
       */
      public Builder clearId() {
        
        id_ = getDefaultInstance().getId();
        onChanged();
        return this;
      }
      /**
       * 
       * ID of the backend group. Generated at creation time.
       * 
       *
       * string id = 1;
       * @param value The bytes for id to set.
       * @return This builder for chaining.
       */
      public Builder setIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        id_ = value;
        onChanged();
        return this;
      }
      private java.lang.Object name_ = "";
      /**
       * 
       * Name of the backend group. The name is unique within the folder. The string length in characters is 3-63.
       * 
       *
       * string name = 2;
       * @return The name.
       */
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          name_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * 
       * Name of the backend group. The name is unique within the folder. The string length in characters is 3-63.
       * 
       *
       * string name = 2;
       * @return The bytes for name.
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * 
       * Name of the backend group. The name is unique within the folder. The string length in characters is 3-63.
       * 
       *
       * string name = 2;
       * @param value The name to set.
       * @return This builder for chaining.
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        name_ = value;
        onChanged();
        return this;
      }
      /**
       * 
       * Name of the backend group. The name is unique within the folder. The string length in characters is 3-63.
       * 
       *
       * string name = 2;
       * @return This builder for chaining.
       */
      public Builder clearName() {
        
        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      /**
       * 
       * Name of the backend group. The name is unique within the folder. The string length in characters is 3-63.
       * 
       *
       * string name = 2;
       * @param value The bytes for name to set.
       * @return This builder for chaining.
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        name_ = value;
        onChanged();
        return this;
      }
      private java.lang.Object description_ = "";
      /**
       * 
       * Description of the backend group. The string is 0-256 characters long.
       * 
       *
       * string description = 3;
       * @return The description.
       */
      public java.lang.String getDescription() {
        java.lang.Object ref = description_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          description_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * 
       * Description of the backend group. The string is 0-256 characters long.
       * 
       *
       * string description = 3;
       * @return The bytes for description.
       */
      public com.google.protobuf.ByteString
          getDescriptionBytes() {
        java.lang.Object ref = description_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          description_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * 
       * Description of the backend group. The string is 0-256 characters long.
       * 
       *
       * string description = 3;
       * @param value The description to set.
       * @return This builder for chaining.
       */
      public Builder setDescription(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        description_ = value;
        onChanged();
        return this;
      }
      /**
       * 
       * Description of the backend group. The string is 0-256 characters long.
       * 
       *
       * string description = 3;
       * @return This builder for chaining.
       */
      public Builder clearDescription() {
        
        description_ = getDefaultInstance().getDescription();
        onChanged();
        return this;
      }
      /**
       * 
       * Description of the backend group. The string is 0-256 characters long.
       * 
       *
       * string description = 3;
       * @param value The bytes for description to set.
       * @return This builder for chaining.
       */
      public Builder setDescriptionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        description_ = value;
        onChanged();
        return this;
      }
      private java.lang.Object folderId_ = "";
      /**
       * 
       * ID of the folder that the backend group belongs to.
       * 
       *
       * string folder_id = 4;
       * @return The folderId.
       */
      public java.lang.String getFolderId() {
        java.lang.Object ref = folderId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          folderId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * 
       * ID of the folder that the backend group belongs to.
       * 
       *
       * string folder_id = 4;
       * @return The bytes for folderId.
       */
      public com.google.protobuf.ByteString
          getFolderIdBytes() {
        java.lang.Object ref = folderId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          folderId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * 
       * ID of the folder that the backend group belongs to.
       * 
       *
       * string folder_id = 4;
       * @param value The folderId to set.
       * @return This builder for chaining.
       */
      public Builder setFolderId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        folderId_ = value;
        onChanged();
        return this;
      }
      /**
       * 
       * ID of the folder that the backend group belongs to.
       * 
       *
       * string folder_id = 4;
       * @return This builder for chaining.
       */
      public Builder clearFolderId() {
        
        folderId_ = getDefaultInstance().getFolderId();
        onChanged();
        return this;
      }
      /**
       * 
       * ID of the folder that the backend group belongs to.
       * 
       *
       * string folder_id = 4;
       * @param value The bytes for folderId to set.
       * @return This builder for chaining.
       */
      public Builder setFolderIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        folderId_ = value;
        onChanged();
        return this;
      }
      private com.google.protobuf.MapField<
          java.lang.String, java.lang.String> labels_;
      private com.google.protobuf.MapField
      internalGetLabels() {
        if (labels_ == null) {
          return com.google.protobuf.MapField.emptyMapField(
              LabelsDefaultEntryHolder.defaultEntry);
        }
        return labels_;
      }
      private com.google.protobuf.MapField
      internalGetMutableLabels() {
        onChanged();;
        if (labels_ == null) {
          labels_ = com.google.protobuf.MapField.newMapField(
              LabelsDefaultEntryHolder.defaultEntry);
        }
        if (!labels_.isMutable()) {
          labels_ = labels_.copy();
        }
        return labels_;
      }
      public int getLabelsCount() {
        return internalGetLabels().getMap().size();
      }
      /**
       * 
       * Backend group labels as `key:value` pairs.
       * For details about the concept, see [documentation](/docs/overview/concepts/services#labels).
       * The maximum number of labels is 64.
       * 
       *
       * map<string, string> labels = 5;
       */
      @java.lang.Override
      public boolean containsLabels(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        return internalGetLabels().getMap().containsKey(key);
      }
      /**
       * Use {@link #getLabelsMap()} instead.
       */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map getLabels() {
        return getLabelsMap();
      }
      /**
       * 
       * Backend group labels as `key:value` pairs.
       * For details about the concept, see [documentation](/docs/overview/concepts/services#labels).
       * The maximum number of labels is 64.
       * 
       *
       * map<string, string> labels = 5;
       */
      @java.lang.Override
      public java.util.Map getLabelsMap() {
        return internalGetLabels().getMap();
      }
      /**
       * 
       * Backend group labels as `key:value` pairs.
       * For details about the concept, see [documentation](/docs/overview/concepts/services#labels).
       * The maximum number of labels is 64.
       * 
       *
       * map<string, string> labels = 5;
       */
      @java.lang.Override
      public java.lang.String getLabelsOrDefault(
          java.lang.String key,
          java.lang.String defaultValue) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map map =
            internalGetLabels().getMap();
        return map.containsKey(key) ? map.get(key) : defaultValue;
      }
      /**
       * 
       * Backend group labels as `key:value` pairs.
       * For details about the concept, see [documentation](/docs/overview/concepts/services#labels).
       * The maximum number of labels is 64.
       * 
       *
       * map<string, string> labels = 5;
       */
      @java.lang.Override
      public java.lang.String getLabelsOrThrow(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map map =
            internalGetLabels().getMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return map.get(key);
      }
      public Builder clearLabels() {
        internalGetMutableLabels().getMutableMap()
            .clear();
        return this;
      }
      /**
       * 
       * Backend group labels as `key:value` pairs.
       * For details about the concept, see [documentation](/docs/overview/concepts/services#labels).
       * The maximum number of labels is 64.
       * 
       *
       * map<string, string> labels = 5;
       */
      public Builder removeLabels(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        internalGetMutableLabels().getMutableMap()
            .remove(key);
        return this;
      }
      /**
       * Use alternate mutation accessors instead.
       */
      @java.lang.Deprecated
      public java.util.Map
      getMutableLabels() {
        return internalGetMutableLabels().getMutableMap();
      }
      /**
       * 
       * Backend group labels as `key:value` pairs.
       * For details about the concept, see [documentation](/docs/overview/concepts/services#labels).
       * The maximum number of labels is 64.
       * 
       *
       * map<string, string> labels = 5;
       */
      public Builder putLabels(
          java.lang.String key,
          java.lang.String value) {
        if (key == null) { throw new NullPointerException("map key"); }
        if (value == null) {
  throw new NullPointerException("map value");
}
        internalGetMutableLabels().getMutableMap()
            .put(key, value);
        return this;
      }
      /**
       * 
       * Backend group labels as `key:value` pairs.
       * For details about the concept, see [documentation](/docs/overview/concepts/services#labels).
       * The maximum number of labels is 64.
       * 
       *
       * map<string, string> labels = 5;
       */
      public Builder putAllLabels(
          java.util.Map values) {
        internalGetMutableLabels().getMutableMap()
            .putAll(values);
        return this;
      }
      private com.google.protobuf.SingleFieldBuilderV3<
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackendGroup, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackendGroup.Builder, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackendGroupOrBuilder> httpBuilder_;
      /**
       * 
       * List of HTTP backends that the backend group consists of.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.HttpBackendGroup http = 6;
       * @return Whether the http field is set.
       */
      @java.lang.Override
      public boolean hasHttp() {
        return backendCase_ == 6;
      }
      /**
       * 
       * List of HTTP backends that the backend group consists of.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.HttpBackendGroup http = 6;
       * @return The http.
       */
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackendGroup getHttp() {
        if (httpBuilder_ == null) {
          if (backendCase_ == 6) {
            return (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackendGroup) backend_;
          }
          return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackendGroup.getDefaultInstance();
        } else {
          if (backendCase_ == 6) {
            return httpBuilder_.getMessage();
          }
          return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackendGroup.getDefaultInstance();
        }
      }
      /**
       * 
       * List of HTTP backends that the backend group consists of.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.HttpBackendGroup http = 6;
       */
      public Builder setHttp(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackendGroup value) {
        if (httpBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          backend_ = value;
          onChanged();
        } else {
          httpBuilder_.setMessage(value);
        }
        backendCase_ = 6;
        return this;
      }
      /**
       * 
       * List of HTTP backends that the backend group consists of.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.HttpBackendGroup http = 6;
       */
      public Builder setHttp(
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackendGroup.Builder builderForValue) {
        if (httpBuilder_ == null) {
          backend_ = builderForValue.build();
          onChanged();
        } else {
          httpBuilder_.setMessage(builderForValue.build());
        }
        backendCase_ = 6;
        return this;
      }
      /**
       * 
       * List of HTTP backends that the backend group consists of.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.HttpBackendGroup http = 6;
       */
      public Builder mergeHttp(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackendGroup value) {
        if (httpBuilder_ == null) {
          if (backendCase_ == 6 &&
              backend_ != yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackendGroup.getDefaultInstance()) {
            backend_ = yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackendGroup.newBuilder((yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackendGroup) backend_)
                .mergeFrom(value).buildPartial();
          } else {
            backend_ = value;
          }
          onChanged();
        } else {
          if (backendCase_ == 6) {
            httpBuilder_.mergeFrom(value);
          }
          httpBuilder_.setMessage(value);
        }
        backendCase_ = 6;
        return this;
      }
      /**
       * 
       * List of HTTP backends that the backend group consists of.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.HttpBackendGroup http = 6;
       */
      public Builder clearHttp() {
        if (httpBuilder_ == null) {
          if (backendCase_ == 6) {
            backendCase_ = 0;
            backend_ = null;
            onChanged();
          }
        } else {
          if (backendCase_ == 6) {
            backendCase_ = 0;
            backend_ = null;
          }
          httpBuilder_.clear();
        }
        return this;
      }
      /**
       * 
       * List of HTTP backends that the backend group consists of.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.HttpBackendGroup http = 6;
       */
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackendGroup.Builder getHttpBuilder() {
        return getHttpFieldBuilder().getBuilder();
      }
      /**
       * 
       * List of HTTP backends that the backend group consists of.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.HttpBackendGroup http = 6;
       */
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackendGroupOrBuilder getHttpOrBuilder() {
        if ((backendCase_ == 6) && (httpBuilder_ != null)) {
          return httpBuilder_.getMessageOrBuilder();
        } else {
          if (backendCase_ == 6) {
            return (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackendGroup) backend_;
          }
          return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackendGroup.getDefaultInstance();
        }
      }
      /**
       * 
       * List of HTTP backends that the backend group consists of.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.HttpBackendGroup http = 6;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackendGroup, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackendGroup.Builder, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackendGroupOrBuilder> 
          getHttpFieldBuilder() {
        if (httpBuilder_ == null) {
          if (!(backendCase_ == 6)) {
            backend_ = yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackendGroup.getDefaultInstance();
          }
          httpBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackendGroup, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackendGroup.Builder, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackendGroupOrBuilder>(
                  (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackendGroup) backend_,
                  getParentForChildren(),
                  isClean());
          backend_ = null;
        }
        backendCase_ = 6;
        onChanged();;
        return httpBuilder_;
      }
      private com.google.protobuf.SingleFieldBuilderV3<
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackendGroup, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackendGroup.Builder, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackendGroupOrBuilder> grpcBuilder_;
      /**
       * 
       * List of gRPC backends that the backend group consists of.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.GrpcBackendGroup grpc = 7;
       * @return Whether the grpc field is set.
       */
      @java.lang.Override
      public boolean hasGrpc() {
        return backendCase_ == 7;
      }
      /**
       * 
       * List of gRPC backends that the backend group consists of.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.GrpcBackendGroup grpc = 7;
       * @return The grpc.
       */
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackendGroup getGrpc() {
        if (grpcBuilder_ == null) {
          if (backendCase_ == 7) {
            return (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackendGroup) backend_;
          }
          return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackendGroup.getDefaultInstance();
        } else {
          if (backendCase_ == 7) {
            return grpcBuilder_.getMessage();
          }
          return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackendGroup.getDefaultInstance();
        }
      }
      /**
       * 
       * List of gRPC backends that the backend group consists of.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.GrpcBackendGroup grpc = 7;
       */
      public Builder setGrpc(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackendGroup value) {
        if (grpcBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          backend_ = value;
          onChanged();
        } else {
          grpcBuilder_.setMessage(value);
        }
        backendCase_ = 7;
        return this;
      }
      /**
       * 
       * List of gRPC backends that the backend group consists of.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.GrpcBackendGroup grpc = 7;
       */
      public Builder setGrpc(
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackendGroup.Builder builderForValue) {
        if (grpcBuilder_ == null) {
          backend_ = builderForValue.build();
          onChanged();
        } else {
          grpcBuilder_.setMessage(builderForValue.build());
        }
        backendCase_ = 7;
        return this;
      }
      /**
       * 
       * List of gRPC backends that the backend group consists of.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.GrpcBackendGroup grpc = 7;
       */
      public Builder mergeGrpc(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackendGroup value) {
        if (grpcBuilder_ == null) {
          if (backendCase_ == 7 &&
              backend_ != yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackendGroup.getDefaultInstance()) {
            backend_ = yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackendGroup.newBuilder((yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackendGroup) backend_)
                .mergeFrom(value).buildPartial();
          } else {
            backend_ = value;
          }
          onChanged();
        } else {
          if (backendCase_ == 7) {
            grpcBuilder_.mergeFrom(value);
          }
          grpcBuilder_.setMessage(value);
        }
        backendCase_ = 7;
        return this;
      }
      /**
       * 
       * List of gRPC backends that the backend group consists of.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.GrpcBackendGroup grpc = 7;
       */
      public Builder clearGrpc() {
        if (grpcBuilder_ == null) {
          if (backendCase_ == 7) {
            backendCase_ = 0;
            backend_ = null;
            onChanged();
          }
        } else {
          if (backendCase_ == 7) {
            backendCase_ = 0;
            backend_ = null;
          }
          grpcBuilder_.clear();
        }
        return this;
      }
      /**
       * 
       * List of gRPC backends that the backend group consists of.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.GrpcBackendGroup grpc = 7;
       */
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackendGroup.Builder getGrpcBuilder() {
        return getGrpcFieldBuilder().getBuilder();
      }
      /**
       * 
       * List of gRPC backends that the backend group consists of.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.GrpcBackendGroup grpc = 7;
       */
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackendGroupOrBuilder getGrpcOrBuilder() {
        if ((backendCase_ == 7) && (grpcBuilder_ != null)) {
          return grpcBuilder_.getMessageOrBuilder();
        } else {
          if (backendCase_ == 7) {
            return (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackendGroup) backend_;
          }
          return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackendGroup.getDefaultInstance();
        }
      }
      /**
       * 
       * List of gRPC backends that the backend group consists of.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.GrpcBackendGroup grpc = 7;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackendGroup, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackendGroup.Builder, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackendGroupOrBuilder> 
          getGrpcFieldBuilder() {
        if (grpcBuilder_ == null) {
          if (!(backendCase_ == 7)) {
            backend_ = yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackendGroup.getDefaultInstance();
          }
          grpcBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackendGroup, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackendGroup.Builder, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackendGroupOrBuilder>(
                  (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackendGroup) backend_,
                  getParentForChildren(),
                  isClean());
          backend_ = null;
        }
        backendCase_ = 7;
        onChanged();;
        return grpcBuilder_;
      }
      private com.google.protobuf.SingleFieldBuilderV3<
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackendGroup, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackendGroup.Builder, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackendGroupOrBuilder> streamBuilder_;
      /**
       * 
       * List of stream (TCP) backends that the backend group consists of.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.StreamBackendGroup stream = 10;
       * @return Whether the stream field is set.
       */
      @java.lang.Override
      public boolean hasStream() {
        return backendCase_ == 10;
      }
      /**
       * 
       * List of stream (TCP) backends that the backend group consists of.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.StreamBackendGroup stream = 10;
       * @return The stream.
       */
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackendGroup getStream() {
        if (streamBuilder_ == null) {
          if (backendCase_ == 10) {
            return (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackendGroup) backend_;
          }
          return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackendGroup.getDefaultInstance();
        } else {
          if (backendCase_ == 10) {
            return streamBuilder_.getMessage();
          }
          return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackendGroup.getDefaultInstance();
        }
      }
      /**
       * 
       * List of stream (TCP) backends that the backend group consists of.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.StreamBackendGroup stream = 10;
       */
      public Builder setStream(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackendGroup value) {
        if (streamBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          backend_ = value;
          onChanged();
        } else {
          streamBuilder_.setMessage(value);
        }
        backendCase_ = 10;
        return this;
      }
      /**
       * 
       * List of stream (TCP) backends that the backend group consists of.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.StreamBackendGroup stream = 10;
       */
      public Builder setStream(
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackendGroup.Builder builderForValue) {
        if (streamBuilder_ == null) {
          backend_ = builderForValue.build();
          onChanged();
        } else {
          streamBuilder_.setMessage(builderForValue.build());
        }
        backendCase_ = 10;
        return this;
      }
      /**
       * 
       * List of stream (TCP) backends that the backend group consists of.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.StreamBackendGroup stream = 10;
       */
      public Builder mergeStream(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackendGroup value) {
        if (streamBuilder_ == null) {
          if (backendCase_ == 10 &&
              backend_ != yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackendGroup.getDefaultInstance()) {
            backend_ = yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackendGroup.newBuilder((yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackendGroup) backend_)
                .mergeFrom(value).buildPartial();
          } else {
            backend_ = value;
          }
          onChanged();
        } else {
          if (backendCase_ == 10) {
            streamBuilder_.mergeFrom(value);
          }
          streamBuilder_.setMessage(value);
        }
        backendCase_ = 10;
        return this;
      }
      /**
       * 
       * List of stream (TCP) backends that the backend group consists of.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.StreamBackendGroup stream = 10;
       */
      public Builder clearStream() {
        if (streamBuilder_ == null) {
          if (backendCase_ == 10) {
            backendCase_ = 0;
            backend_ = null;
            onChanged();
          }
        } else {
          if (backendCase_ == 10) {
            backendCase_ = 0;
            backend_ = null;
          }
          streamBuilder_.clear();
        }
        return this;
      }
      /**
       * 
       * List of stream (TCP) backends that the backend group consists of.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.StreamBackendGroup stream = 10;
       */
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackendGroup.Builder getStreamBuilder() {
        return getStreamFieldBuilder().getBuilder();
      }
      /**
       * 
       * List of stream (TCP) backends that the backend group consists of.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.StreamBackendGroup stream = 10;
       */
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackendGroupOrBuilder getStreamOrBuilder() {
        if ((backendCase_ == 10) && (streamBuilder_ != null)) {
          return streamBuilder_.getMessageOrBuilder();
        } else {
          if (backendCase_ == 10) {
            return (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackendGroup) backend_;
          }
          return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackendGroup.getDefaultInstance();
        }
      }
      /**
       * 
       * List of stream (TCP) backends that the backend group consists of.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.StreamBackendGroup stream = 10;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackendGroup, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackendGroup.Builder, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackendGroupOrBuilder> 
          getStreamFieldBuilder() {
        if (streamBuilder_ == null) {
          if (!(backendCase_ == 10)) {
            backend_ = yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackendGroup.getDefaultInstance();
          }
          streamBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackendGroup, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackendGroup.Builder, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackendGroupOrBuilder>(
                  (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackendGroup) backend_,
                  getParentForChildren(),
                  isClean());
          backend_ = null;
        }
        backendCase_ = 10;
        onChanged();;
        return streamBuilder_;
      }
      private com.google.protobuf.Timestamp createdAt_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder> createdAtBuilder_;
      /**
       * 
       * Creation timestamp.
       * 
       *
       * .google.protobuf.Timestamp created_at = 9;
       * @return Whether the createdAt field is set.
       */
      public boolean hasCreatedAt() {
        return createdAtBuilder_ != null || createdAt_ != null;
      }
      /**
       * 
       * Creation timestamp.
       * 
       *
       * .google.protobuf.Timestamp created_at = 9;
       * @return The createdAt.
       */
      public com.google.protobuf.Timestamp getCreatedAt() {
        if (createdAtBuilder_ == null) {
          return createdAt_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : createdAt_;
        } else {
          return createdAtBuilder_.getMessage();
        }
      }
      /**
       * 
       * Creation timestamp.
       * 
       *
       * .google.protobuf.Timestamp created_at = 9;
       */
      public Builder setCreatedAt(com.google.protobuf.Timestamp value) {
        if (createdAtBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          createdAt_ = value;
          onChanged();
        } else {
          createdAtBuilder_.setMessage(value);
        }
        return this;
      }
      /**
       * 
       * Creation timestamp.
       * 
       *
       * .google.protobuf.Timestamp created_at = 9;
       */
      public Builder setCreatedAt(
          com.google.protobuf.Timestamp.Builder builderForValue) {
        if (createdAtBuilder_ == null) {
          createdAt_ = builderForValue.build();
          onChanged();
        } else {
          createdAtBuilder_.setMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * 
       * Creation timestamp.
       * 
       *
       * .google.protobuf.Timestamp created_at = 9;
       */
      public Builder mergeCreatedAt(com.google.protobuf.Timestamp value) {
        if (createdAtBuilder_ == null) {
          if (createdAt_ != null) {
            createdAt_ =
              com.google.protobuf.Timestamp.newBuilder(createdAt_).mergeFrom(value).buildPartial();
          } else {
            createdAt_ = value;
          }
          onChanged();
        } else {
          createdAtBuilder_.mergeFrom(value);
        }
        return this;
      }
      /**
       * 
       * Creation timestamp.
       * 
       *
       * .google.protobuf.Timestamp created_at = 9;
       */
      public Builder clearCreatedAt() {
        if (createdAtBuilder_ == null) {
          createdAt_ = null;
          onChanged();
        } else {
          createdAt_ = null;
          createdAtBuilder_ = null;
        }
        return this;
      }
      /**
       * 
       * Creation timestamp.
       * 
       *
       * .google.protobuf.Timestamp created_at = 9;
       */
      public com.google.protobuf.Timestamp.Builder getCreatedAtBuilder() {
        
        onChanged();
        return getCreatedAtFieldBuilder().getBuilder();
      }
      /**
       * 
       * Creation timestamp.
       * 
       *
       * .google.protobuf.Timestamp created_at = 9;
       */
      public com.google.protobuf.TimestampOrBuilder getCreatedAtOrBuilder() {
        if (createdAtBuilder_ != null) {
          return createdAtBuilder_.getMessageOrBuilder();
        } else {
          return createdAt_ == null ?
              com.google.protobuf.Timestamp.getDefaultInstance() : createdAt_;
        }
      }
      /**
       * 
       * Creation timestamp.
       * 
       *
       * .google.protobuf.Timestamp created_at = 9;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder> 
          getCreatedAtFieldBuilder() {
        if (createdAtBuilder_ == null) {
          createdAtBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.protobuf.Timestamp, com.google.protobuf.Timestamp.Builder, com.google.protobuf.TimestampOrBuilder>(
                  getCreatedAt(),
                  getParentForChildren(),
                  isClean());
          createdAt_ = null;
        }
        return createdAtBuilder_;
      }
      @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:yandex.cloud.apploadbalancer.v1.BackendGroup)
    }
    // @@protoc_insertion_point(class_scope:yandex.cloud.apploadbalancer.v1.BackendGroup)
    private static final yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendGroup DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendGroup();
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendGroup getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }
    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public BackendGroup parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new BackendGroup(input, extensionRegistry);
      }
    };
    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }
    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }
    @java.lang.Override
    public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendGroup getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }
  }
  public interface StreamBackendGroupOrBuilder extends
      // @@protoc_insertion_point(interface_extends:yandex.cloud.apploadbalancer.v1.StreamBackendGroup)
      com.google.protobuf.MessageOrBuilder {
    /**
     * 
     * List of stream (TCP) backends.
     * 
     *
     * repeated .yandex.cloud.apploadbalancer.v1.StreamBackend backends = 1;
     */
    java.util.List 
        getBackendsList();
    /**
     * 
     * List of stream (TCP) backends.
     * 
     *
     * repeated .yandex.cloud.apploadbalancer.v1.StreamBackend backends = 1;
     */
    yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackend getBackends(int index);
    /**
     * 
     * List of stream (TCP) backends.
     * 
     *
     * repeated .yandex.cloud.apploadbalancer.v1.StreamBackend backends = 1;
     */
    int getBackendsCount();
    /**
     * 
     * List of stream (TCP) backends.
     * 
     *
     * repeated .yandex.cloud.apploadbalancer.v1.StreamBackend backends = 1;
     */
    java.util.List extends yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackendOrBuilder> 
        getBackendsOrBuilderList();
    /**
     * 
     * List of stream (TCP) backends.
     * 
     *
     * repeated .yandex.cloud.apploadbalancer.v1.StreamBackend backends = 1;
     */
    yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackendOrBuilder getBackendsOrBuilder(
        int index);
    /**
     * 
     * Connection-based session affinity configuration.
     * For now, a connection is defined only by an IP address of the client.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.ConnectionSessionAffinity connection = 2;
     * @return Whether the connection field is set.
     */
    boolean hasConnection();
    /**
     * 
     * Connection-based session affinity configuration.
     * For now, a connection is defined only by an IP address of the client.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.ConnectionSessionAffinity connection = 2;
     * @return The connection.
     */
    yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity getConnection();
    /**
     * 
     * Connection-based session affinity configuration.
     * For now, a connection is defined only by an IP address of the client.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.ConnectionSessionAffinity connection = 2;
     */
    yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinityOrBuilder getConnectionOrBuilder();
    public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackendGroup.SessionAffinityCase getSessionAffinityCase();
  }
  /**
   * 
   * A stream (TCP) backend group resource.
   * 
   *
   * Protobuf type {@code yandex.cloud.apploadbalancer.v1.StreamBackendGroup}
   */
  public static final class StreamBackendGroup extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:yandex.cloud.apploadbalancer.v1.StreamBackendGroup)
      StreamBackendGroupOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use StreamBackendGroup.newBuilder() to construct.
    private StreamBackendGroup(com.google.protobuf.GeneratedMessageV3.Builder> builder) {
      super(builder);
    }
    private StreamBackendGroup() {
      backends_ = java.util.Collections.emptyList();
    }
    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new StreamBackendGroup();
    }
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private StreamBackendGroup(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                backends_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000001;
              }
              backends_.add(
                  input.readMessage(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackend.parser(), extensionRegistry));
              break;
            }
            case 18: {
              yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity.Builder subBuilder = null;
              if (sessionAffinityCase_ == 2) {
                subBuilder = ((yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity) sessionAffinity_).toBuilder();
              }
              sessionAffinity_ =
                  input.readMessage(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity) sessionAffinity_);
                sessionAffinity_ = subBuilder.buildPartial();
              }
              sessionAffinityCase_ = 2;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          backends_ = java.util.Collections.unmodifiableList(backends_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_StreamBackendGroup_descriptor;
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_StreamBackendGroup_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackendGroup.class, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackendGroup.Builder.class);
    }
    private int sessionAffinityCase_ = 0;
    private java.lang.Object sessionAffinity_;
    public enum SessionAffinityCase
        implements com.google.protobuf.Internal.EnumLite,
            com.google.protobuf.AbstractMessage.InternalOneOfEnum {
      CONNECTION(2),
      SESSIONAFFINITY_NOT_SET(0);
      private final int value;
      private SessionAffinityCase(int value) {
        this.value = value;
      }
      /**
       * @param value The number of the enum to look for.
       * @return The enum associated with the given number.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static SessionAffinityCase valueOf(int value) {
        return forNumber(value);
      }
      public static SessionAffinityCase forNumber(int value) {
        switch (value) {
          case 2: return CONNECTION;
          case 0: return SESSIONAFFINITY_NOT_SET;
          default: return null;
        }
      }
      public int getNumber() {
        return this.value;
      }
    };
    public SessionAffinityCase
    getSessionAffinityCase() {
      return SessionAffinityCase.forNumber(
          sessionAffinityCase_);
    }
    public static final int BACKENDS_FIELD_NUMBER = 1;
    private java.util.List backends_;
    /**
     * 
     * List of stream (TCP) backends.
     * 
     *
     * repeated .yandex.cloud.apploadbalancer.v1.StreamBackend backends = 1;
     */
    @java.lang.Override
    public java.util.List getBackendsList() {
      return backends_;
    }
    /**
     * 
     * List of stream (TCP) backends.
     * 
     *
     * repeated .yandex.cloud.apploadbalancer.v1.StreamBackend backends = 1;
     */
    @java.lang.Override
    public java.util.List extends yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackendOrBuilder> 
        getBackendsOrBuilderList() {
      return backends_;
    }
    /**
     * 
     * List of stream (TCP) backends.
     * 
     *
     * repeated .yandex.cloud.apploadbalancer.v1.StreamBackend backends = 1;
     */
    @java.lang.Override
    public int getBackendsCount() {
      return backends_.size();
    }
    /**
     * 
     * List of stream (TCP) backends.
     * 
     *
     * repeated .yandex.cloud.apploadbalancer.v1.StreamBackend backends = 1;
     */
    @java.lang.Override
    public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackend getBackends(int index) {
      return backends_.get(index);
    }
    /**
     * 
     * List of stream (TCP) backends.
     * 
     *
     * repeated .yandex.cloud.apploadbalancer.v1.StreamBackend backends = 1;
     */
    @java.lang.Override
    public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackendOrBuilder getBackendsOrBuilder(
        int index) {
      return backends_.get(index);
    }
    public static final int CONNECTION_FIELD_NUMBER = 2;
    /**
     * 
     * Connection-based session affinity configuration.
     * For now, a connection is defined only by an IP address of the client.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.ConnectionSessionAffinity connection = 2;
     * @return Whether the connection field is set.
     */
    @java.lang.Override
    public boolean hasConnection() {
      return sessionAffinityCase_ == 2;
    }
    /**
     * 
     * Connection-based session affinity configuration.
     * For now, a connection is defined only by an IP address of the client.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.ConnectionSessionAffinity connection = 2;
     * @return The connection.
     */
    @java.lang.Override
    public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity getConnection() {
      if (sessionAffinityCase_ == 2) {
         return (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity) sessionAffinity_;
      }
      return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity.getDefaultInstance();
    }
    /**
     * 
     * Connection-based session affinity configuration.
     * For now, a connection is defined only by an IP address of the client.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.ConnectionSessionAffinity connection = 2;
     */
    @java.lang.Override
    public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinityOrBuilder getConnectionOrBuilder() {
      if (sessionAffinityCase_ == 2) {
         return (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity) sessionAffinity_;
      }
      return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity.getDefaultInstance();
    }
    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 {
      for (int i = 0; i < backends_.size(); i++) {
        output.writeMessage(1, backends_.get(i));
      }
      if (sessionAffinityCase_ == 2) {
        output.writeMessage(2, (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity) sessionAffinity_);
      }
      unknownFields.writeTo(output);
    }
    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;
      size = 0;
      for (int i = 0; i < backends_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, backends_.get(i));
      }
      if (sessionAffinityCase_ == 2) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity) sessionAffinity_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackendGroup)) {
        return super.equals(obj);
      }
      yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackendGroup other = (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackendGroup) obj;
      if (!getBackendsList()
          .equals(other.getBackendsList())) return false;
      if (!getSessionAffinityCase().equals(other.getSessionAffinityCase())) return false;
      switch (sessionAffinityCase_) {
        case 2:
          if (!getConnection()
              .equals(other.getConnection())) return false;
          break;
        case 0:
        default:
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }
    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getBackendsCount() > 0) {
        hash = (37 * hash) + BACKENDS_FIELD_NUMBER;
        hash = (53 * hash) + getBackendsList().hashCode();
      }
      switch (sessionAffinityCase_) {
        case 2:
          hash = (37 * hash) + CONNECTION_FIELD_NUMBER;
          hash = (53 * hash) + getConnection().hashCode();
          break;
        case 0:
        default:
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackendGroup parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackendGroup parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackendGroup parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackendGroup parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackendGroup parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackendGroup parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackendGroup parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackendGroup 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 yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackendGroup parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackendGroup 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 yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackendGroup parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackendGroup 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(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackendGroup 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;
    }
    /**
     * 
     * A stream (TCP) backend group resource.
     * 
     *
     * Protobuf type {@code yandex.cloud.apploadbalancer.v1.StreamBackendGroup}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:yandex.cloud.apploadbalancer.v1.StreamBackendGroup)
        yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackendGroupOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_StreamBackendGroup_descriptor;
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_StreamBackendGroup_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackendGroup.class, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackendGroup.Builder.class);
      }
      // Construct using yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackendGroup.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getBackendsFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (backendsBuilder_ == null) {
          backends_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          backendsBuilder_.clear();
        }
        sessionAffinityCase_ = 0;
        sessionAffinity_ = null;
        return this;
      }
      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_StreamBackendGroup_descriptor;
      }
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackendGroup getDefaultInstanceForType() {
        return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackendGroup.getDefaultInstance();
      }
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackendGroup build() {
        yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackendGroup result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackendGroup buildPartial() {
        yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackendGroup result = new yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackendGroup(this);
        int from_bitField0_ = bitField0_;
        if (backendsBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            backends_ = java.util.Collections.unmodifiableList(backends_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.backends_ = backends_;
        } else {
          result.backends_ = backendsBuilder_.build();
        }
        if (sessionAffinityCase_ == 2) {
          if (connectionBuilder_ == null) {
            result.sessionAffinity_ = sessionAffinity_;
          } else {
            result.sessionAffinity_ = connectionBuilder_.build();
          }
        }
        result.sessionAffinityCase_ = sessionAffinityCase_;
        onBuilt();
        return result;
      }
      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackendGroup) {
          return mergeFrom((yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackendGroup)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      public Builder mergeFrom(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackendGroup other) {
        if (other == yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackendGroup.getDefaultInstance()) return this;
        if (backendsBuilder_ == null) {
          if (!other.backends_.isEmpty()) {
            if (backends_.isEmpty()) {
              backends_ = other.backends_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureBackendsIsMutable();
              backends_.addAll(other.backends_);
            }
            onChanged();
          }
        } else {
          if (!other.backends_.isEmpty()) {
            if (backendsBuilder_.isEmpty()) {
              backendsBuilder_.dispose();
              backendsBuilder_ = null;
              backends_ = other.backends_;
              bitField0_ = (bitField0_ & ~0x00000001);
              backendsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getBackendsFieldBuilder() : null;
            } else {
              backendsBuilder_.addAllMessages(other.backends_);
            }
          }
        }
        switch (other.getSessionAffinityCase()) {
          case CONNECTION: {
            mergeConnection(other.getConnection());
            break;
          }
          case SESSIONAFFINITY_NOT_SET: {
            break;
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }
      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }
      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackendGroup parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackendGroup) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int sessionAffinityCase_ = 0;
      private java.lang.Object sessionAffinity_;
      public SessionAffinityCase
          getSessionAffinityCase() {
        return SessionAffinityCase.forNumber(
            sessionAffinityCase_);
      }
      public Builder clearSessionAffinity() {
        sessionAffinityCase_ = 0;
        sessionAffinity_ = null;
        onChanged();
        return this;
      }
      private int bitField0_;
      private java.util.List backends_ =
        java.util.Collections.emptyList();
      private void ensureBackendsIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          backends_ = new java.util.ArrayList(backends_);
          bitField0_ |= 0x00000001;
         }
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackend, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackend.Builder, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackendOrBuilder> backendsBuilder_;
      /**
       * 
       * List of stream (TCP) backends.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.StreamBackend backends = 1;
       */
      public java.util.List getBackendsList() {
        if (backendsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(backends_);
        } else {
          return backendsBuilder_.getMessageList();
        }
      }
      /**
       * 
       * List of stream (TCP) backends.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.StreamBackend backends = 1;
       */
      public int getBackendsCount() {
        if (backendsBuilder_ == null) {
          return backends_.size();
        } else {
          return backendsBuilder_.getCount();
        }
      }
      /**
       * 
       * List of stream (TCP) backends.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.StreamBackend backends = 1;
       */
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackend getBackends(int index) {
        if (backendsBuilder_ == null) {
          return backends_.get(index);
        } else {
          return backendsBuilder_.getMessage(index);
        }
      }
      /**
       * 
       * List of stream (TCP) backends.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.StreamBackend backends = 1;
       */
      public Builder setBackends(
          int index, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackend value) {
        if (backendsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureBackendsIsMutable();
          backends_.set(index, value);
          onChanged();
        } else {
          backendsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * 
       * List of stream (TCP) backends.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.StreamBackend backends = 1;
       */
      public Builder setBackends(
          int index, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackend.Builder builderForValue) {
        if (backendsBuilder_ == null) {
          ensureBackendsIsMutable();
          backends_.set(index, builderForValue.build());
          onChanged();
        } else {
          backendsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * 
       * List of stream (TCP) backends.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.StreamBackend backends = 1;
       */
      public Builder addBackends(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackend value) {
        if (backendsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureBackendsIsMutable();
          backends_.add(value);
          onChanged();
        } else {
          backendsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * 
       * List of stream (TCP) backends.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.StreamBackend backends = 1;
       */
      public Builder addBackends(
          int index, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackend value) {
        if (backendsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureBackendsIsMutable();
          backends_.add(index, value);
          onChanged();
        } else {
          backendsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * 
       * List of stream (TCP) backends.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.StreamBackend backends = 1;
       */
      public Builder addBackends(
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackend.Builder builderForValue) {
        if (backendsBuilder_ == null) {
          ensureBackendsIsMutable();
          backends_.add(builderForValue.build());
          onChanged();
        } else {
          backendsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * 
       * List of stream (TCP) backends.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.StreamBackend backends = 1;
       */
      public Builder addBackends(
          int index, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackend.Builder builderForValue) {
        if (backendsBuilder_ == null) {
          ensureBackendsIsMutable();
          backends_.add(index, builderForValue.build());
          onChanged();
        } else {
          backendsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * 
       * List of stream (TCP) backends.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.StreamBackend backends = 1;
       */
      public Builder addAllBackends(
          java.lang.Iterable extends yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackend> values) {
        if (backendsBuilder_ == null) {
          ensureBackendsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, backends_);
          onChanged();
        } else {
          backendsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * 
       * List of stream (TCP) backends.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.StreamBackend backends = 1;
       */
      public Builder clearBackends() {
        if (backendsBuilder_ == null) {
          backends_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          backendsBuilder_.clear();
        }
        return this;
      }
      /**
       * 
       * List of stream (TCP) backends.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.StreamBackend backends = 1;
       */
      public Builder removeBackends(int index) {
        if (backendsBuilder_ == null) {
          ensureBackendsIsMutable();
          backends_.remove(index);
          onChanged();
        } else {
          backendsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * 
       * List of stream (TCP) backends.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.StreamBackend backends = 1;
       */
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackend.Builder getBackendsBuilder(
          int index) {
        return getBackendsFieldBuilder().getBuilder(index);
      }
      /**
       * 
       * List of stream (TCP) backends.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.StreamBackend backends = 1;
       */
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackendOrBuilder getBackendsOrBuilder(
          int index) {
        if (backendsBuilder_ == null) {
          return backends_.get(index);  } else {
          return backendsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * 
       * List of stream (TCP) backends.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.StreamBackend backends = 1;
       */
      public java.util.List extends yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackendOrBuilder> 
           getBackendsOrBuilderList() {
        if (backendsBuilder_ != null) {
          return backendsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(backends_);
        }
      }
      /**
       * 
       * List of stream (TCP) backends.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.StreamBackend backends = 1;
       */
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackend.Builder addBackendsBuilder() {
        return getBackendsFieldBuilder().addBuilder(
            yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackend.getDefaultInstance());
      }
      /**
       * 
       * List of stream (TCP) backends.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.StreamBackend backends = 1;
       */
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackend.Builder addBackendsBuilder(
          int index) {
        return getBackendsFieldBuilder().addBuilder(
            index, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackend.getDefaultInstance());
      }
      /**
       * 
       * List of stream (TCP) backends.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.StreamBackend backends = 1;
       */
      public java.util.List 
           getBackendsBuilderList() {
        return getBackendsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackend, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackend.Builder, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackendOrBuilder> 
          getBackendsFieldBuilder() {
        if (backendsBuilder_ == null) {
          backendsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackend, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackend.Builder, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackendOrBuilder>(
                  backends_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          backends_ = null;
        }
        return backendsBuilder_;
      }
      private com.google.protobuf.SingleFieldBuilderV3<
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity.Builder, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinityOrBuilder> connectionBuilder_;
      /**
       * 
       * Connection-based session affinity configuration.
       * For now, a connection is defined only by an IP address of the client.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.ConnectionSessionAffinity connection = 2;
       * @return Whether the connection field is set.
       */
      @java.lang.Override
      public boolean hasConnection() {
        return sessionAffinityCase_ == 2;
      }
      /**
       * 
       * Connection-based session affinity configuration.
       * For now, a connection is defined only by an IP address of the client.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.ConnectionSessionAffinity connection = 2;
       * @return The connection.
       */
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity getConnection() {
        if (connectionBuilder_ == null) {
          if (sessionAffinityCase_ == 2) {
            return (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity) sessionAffinity_;
          }
          return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity.getDefaultInstance();
        } else {
          if (sessionAffinityCase_ == 2) {
            return connectionBuilder_.getMessage();
          }
          return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity.getDefaultInstance();
        }
      }
      /**
       * 
       * Connection-based session affinity configuration.
       * For now, a connection is defined only by an IP address of the client.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.ConnectionSessionAffinity connection = 2;
       */
      public Builder setConnection(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity value) {
        if (connectionBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          sessionAffinity_ = value;
          onChanged();
        } else {
          connectionBuilder_.setMessage(value);
        }
        sessionAffinityCase_ = 2;
        return this;
      }
      /**
       * 
       * Connection-based session affinity configuration.
       * For now, a connection is defined only by an IP address of the client.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.ConnectionSessionAffinity connection = 2;
       */
      public Builder setConnection(
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity.Builder builderForValue) {
        if (connectionBuilder_ == null) {
          sessionAffinity_ = builderForValue.build();
          onChanged();
        } else {
          connectionBuilder_.setMessage(builderForValue.build());
        }
        sessionAffinityCase_ = 2;
        return this;
      }
      /**
       * 
       * Connection-based session affinity configuration.
       * For now, a connection is defined only by an IP address of the client.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.ConnectionSessionAffinity connection = 2;
       */
      public Builder mergeConnection(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity value) {
        if (connectionBuilder_ == null) {
          if (sessionAffinityCase_ == 2 &&
              sessionAffinity_ != yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity.getDefaultInstance()) {
            sessionAffinity_ = yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity.newBuilder((yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity) sessionAffinity_)
                .mergeFrom(value).buildPartial();
          } else {
            sessionAffinity_ = value;
          }
          onChanged();
        } else {
          if (sessionAffinityCase_ == 2) {
            connectionBuilder_.mergeFrom(value);
          }
          connectionBuilder_.setMessage(value);
        }
        sessionAffinityCase_ = 2;
        return this;
      }
      /**
       * 
       * Connection-based session affinity configuration.
       * For now, a connection is defined only by an IP address of the client.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.ConnectionSessionAffinity connection = 2;
       */
      public Builder clearConnection() {
        if (connectionBuilder_ == null) {
          if (sessionAffinityCase_ == 2) {
            sessionAffinityCase_ = 0;
            sessionAffinity_ = null;
            onChanged();
          }
        } else {
          if (sessionAffinityCase_ == 2) {
            sessionAffinityCase_ = 0;
            sessionAffinity_ = null;
          }
          connectionBuilder_.clear();
        }
        return this;
      }
      /**
       * 
       * Connection-based session affinity configuration.
       * For now, a connection is defined only by an IP address of the client.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.ConnectionSessionAffinity connection = 2;
       */
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity.Builder getConnectionBuilder() {
        return getConnectionFieldBuilder().getBuilder();
      }
      /**
       * 
       * Connection-based session affinity configuration.
       * For now, a connection is defined only by an IP address of the client.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.ConnectionSessionAffinity connection = 2;
       */
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinityOrBuilder getConnectionOrBuilder() {
        if ((sessionAffinityCase_ == 2) && (connectionBuilder_ != null)) {
          return connectionBuilder_.getMessageOrBuilder();
        } else {
          if (sessionAffinityCase_ == 2) {
            return (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity) sessionAffinity_;
          }
          return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity.getDefaultInstance();
        }
      }
      /**
       * 
       * Connection-based session affinity configuration.
       * For now, a connection is defined only by an IP address of the client.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.ConnectionSessionAffinity connection = 2;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity.Builder, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinityOrBuilder> 
          getConnectionFieldBuilder() {
        if (connectionBuilder_ == null) {
          if (!(sessionAffinityCase_ == 2)) {
            sessionAffinity_ = yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity.getDefaultInstance();
          }
          connectionBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity.Builder, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinityOrBuilder>(
                  (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity) sessionAffinity_,
                  getParentForChildren(),
                  isClean());
          sessionAffinity_ = null;
        }
        sessionAffinityCase_ = 2;
        onChanged();;
        return connectionBuilder_;
      }
      @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:yandex.cloud.apploadbalancer.v1.StreamBackendGroup)
    }
    // @@protoc_insertion_point(class_scope:yandex.cloud.apploadbalancer.v1.StreamBackendGroup)
    private static final yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackendGroup DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackendGroup();
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackendGroup getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }
    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public StreamBackendGroup parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new StreamBackendGroup(input, extensionRegistry);
      }
    };
    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }
    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }
    @java.lang.Override
    public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackendGroup getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }
  }
  public interface HttpBackendGroupOrBuilder extends
      // @@protoc_insertion_point(interface_extends:yandex.cloud.apploadbalancer.v1.HttpBackendGroup)
      com.google.protobuf.MessageOrBuilder {
    /**
     * 
     * List of HTTP backends.
     * 
     *
     * repeated .yandex.cloud.apploadbalancer.v1.HttpBackend backends = 1;
     */
    java.util.List 
        getBackendsList();
    /**
     * 
     * List of HTTP backends.
     * 
     *
     * repeated .yandex.cloud.apploadbalancer.v1.HttpBackend backends = 1;
     */
    yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackend getBackends(int index);
    /**
     * 
     * List of HTTP backends.
     * 
     *
     * repeated .yandex.cloud.apploadbalancer.v1.HttpBackend backends = 1;
     */
    int getBackendsCount();
    /**
     * 
     * List of HTTP backends.
     * 
     *
     * repeated .yandex.cloud.apploadbalancer.v1.HttpBackend backends = 1;
     */
    java.util.List extends yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackendOrBuilder> 
        getBackendsOrBuilderList();
    /**
     * 
     * List of HTTP backends.
     * 
     *
     * repeated .yandex.cloud.apploadbalancer.v1.HttpBackend backends = 1;
     */
    yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackendOrBuilder getBackendsOrBuilder(
        int index);
    /**
     * 
     * Connection-based session affinity configuration.
     * For now, a connection is defined only by an IP address of the client.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.ConnectionSessionAffinity connection = 2;
     * @return Whether the connection field is set.
     */
    boolean hasConnection();
    /**
     * 
     * Connection-based session affinity configuration.
     * For now, a connection is defined only by an IP address of the client.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.ConnectionSessionAffinity connection = 2;
     * @return The connection.
     */
    yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity getConnection();
    /**
     * 
     * Connection-based session affinity configuration.
     * For now, a connection is defined only by an IP address of the client.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.ConnectionSessionAffinity connection = 2;
     */
    yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinityOrBuilder getConnectionOrBuilder();
    /**
     * 
     * HTTP-header-field-based session affinity configuration.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.HeaderSessionAffinity header = 3;
     * @return Whether the header field is set.
     */
    boolean hasHeader();
    /**
     * 
     * HTTP-header-field-based session affinity configuration.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.HeaderSessionAffinity header = 3;
     * @return The header.
     */
    yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity getHeader();
    /**
     * 
     * HTTP-header-field-based session affinity configuration.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.HeaderSessionAffinity header = 3;
     */
    yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinityOrBuilder getHeaderOrBuilder();
    /**
     * 
     * Cookie-based session affinity configuration.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.CookieSessionAffinity cookie = 4;
     * @return Whether the cookie field is set.
     */
    boolean hasCookie();
    /**
     * 
     * Cookie-based session affinity configuration.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.CookieSessionAffinity cookie = 4;
     * @return The cookie.
     */
    yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity getCookie();
    /**
     * 
     * Cookie-based session affinity configuration.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.CookieSessionAffinity cookie = 4;
     */
    yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinityOrBuilder getCookieOrBuilder();
    public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackendGroup.SessionAffinityCase getSessionAffinityCase();
  }
  /**
   * 
   * An HTTP backend group resource.
   * 
   *
   * Protobuf type {@code yandex.cloud.apploadbalancer.v1.HttpBackendGroup}
   */
  public static final class HttpBackendGroup extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:yandex.cloud.apploadbalancer.v1.HttpBackendGroup)
      HttpBackendGroupOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use HttpBackendGroup.newBuilder() to construct.
    private HttpBackendGroup(com.google.protobuf.GeneratedMessageV3.Builder> builder) {
      super(builder);
    }
    private HttpBackendGroup() {
      backends_ = java.util.Collections.emptyList();
    }
    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new HttpBackendGroup();
    }
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private HttpBackendGroup(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                backends_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000001;
              }
              backends_.add(
                  input.readMessage(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackend.parser(), extensionRegistry));
              break;
            }
            case 18: {
              yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity.Builder subBuilder = null;
              if (sessionAffinityCase_ == 2) {
                subBuilder = ((yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity) sessionAffinity_).toBuilder();
              }
              sessionAffinity_ =
                  input.readMessage(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity) sessionAffinity_);
                sessionAffinity_ = subBuilder.buildPartial();
              }
              sessionAffinityCase_ = 2;
              break;
            }
            case 26: {
              yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity.Builder subBuilder = null;
              if (sessionAffinityCase_ == 3) {
                subBuilder = ((yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity) sessionAffinity_).toBuilder();
              }
              sessionAffinity_ =
                  input.readMessage(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity) sessionAffinity_);
                sessionAffinity_ = subBuilder.buildPartial();
              }
              sessionAffinityCase_ = 3;
              break;
            }
            case 34: {
              yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity.Builder subBuilder = null;
              if (sessionAffinityCase_ == 4) {
                subBuilder = ((yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity) sessionAffinity_).toBuilder();
              }
              sessionAffinity_ =
                  input.readMessage(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity) sessionAffinity_);
                sessionAffinity_ = subBuilder.buildPartial();
              }
              sessionAffinityCase_ = 4;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          backends_ = java.util.Collections.unmodifiableList(backends_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_HttpBackendGroup_descriptor;
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_HttpBackendGroup_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackendGroup.class, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackendGroup.Builder.class);
    }
    private int sessionAffinityCase_ = 0;
    private java.lang.Object sessionAffinity_;
    public enum SessionAffinityCase
        implements com.google.protobuf.Internal.EnumLite,
            com.google.protobuf.AbstractMessage.InternalOneOfEnum {
      CONNECTION(2),
      HEADER(3),
      COOKIE(4),
      SESSIONAFFINITY_NOT_SET(0);
      private final int value;
      private SessionAffinityCase(int value) {
        this.value = value;
      }
      /**
       * @param value The number of the enum to look for.
       * @return The enum associated with the given number.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static SessionAffinityCase valueOf(int value) {
        return forNumber(value);
      }
      public static SessionAffinityCase forNumber(int value) {
        switch (value) {
          case 2: return CONNECTION;
          case 3: return HEADER;
          case 4: return COOKIE;
          case 0: return SESSIONAFFINITY_NOT_SET;
          default: return null;
        }
      }
      public int getNumber() {
        return this.value;
      }
    };
    public SessionAffinityCase
    getSessionAffinityCase() {
      return SessionAffinityCase.forNumber(
          sessionAffinityCase_);
    }
    public static final int BACKENDS_FIELD_NUMBER = 1;
    private java.util.List backends_;
    /**
     * 
     * List of HTTP backends.
     * 
     *
     * repeated .yandex.cloud.apploadbalancer.v1.HttpBackend backends = 1;
     */
    @java.lang.Override
    public java.util.List getBackendsList() {
      return backends_;
    }
    /**
     * 
     * List of HTTP backends.
     * 
     *
     * repeated .yandex.cloud.apploadbalancer.v1.HttpBackend backends = 1;
     */
    @java.lang.Override
    public java.util.List extends yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackendOrBuilder> 
        getBackendsOrBuilderList() {
      return backends_;
    }
    /**
     * 
     * List of HTTP backends.
     * 
     *
     * repeated .yandex.cloud.apploadbalancer.v1.HttpBackend backends = 1;
     */
    @java.lang.Override
    public int getBackendsCount() {
      return backends_.size();
    }
    /**
     * 
     * List of HTTP backends.
     * 
     *
     * repeated .yandex.cloud.apploadbalancer.v1.HttpBackend backends = 1;
     */
    @java.lang.Override
    public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackend getBackends(int index) {
      return backends_.get(index);
    }
    /**
     * 
     * List of HTTP backends.
     * 
     *
     * repeated .yandex.cloud.apploadbalancer.v1.HttpBackend backends = 1;
     */
    @java.lang.Override
    public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackendOrBuilder getBackendsOrBuilder(
        int index) {
      return backends_.get(index);
    }
    public static final int CONNECTION_FIELD_NUMBER = 2;
    /**
     * 
     * Connection-based session affinity configuration.
     * For now, a connection is defined only by an IP address of the client.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.ConnectionSessionAffinity connection = 2;
     * @return Whether the connection field is set.
     */
    @java.lang.Override
    public boolean hasConnection() {
      return sessionAffinityCase_ == 2;
    }
    /**
     * 
     * Connection-based session affinity configuration.
     * For now, a connection is defined only by an IP address of the client.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.ConnectionSessionAffinity connection = 2;
     * @return The connection.
     */
    @java.lang.Override
    public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity getConnection() {
      if (sessionAffinityCase_ == 2) {
         return (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity) sessionAffinity_;
      }
      return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity.getDefaultInstance();
    }
    /**
     * 
     * Connection-based session affinity configuration.
     * For now, a connection is defined only by an IP address of the client.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.ConnectionSessionAffinity connection = 2;
     */
    @java.lang.Override
    public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinityOrBuilder getConnectionOrBuilder() {
      if (sessionAffinityCase_ == 2) {
         return (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity) sessionAffinity_;
      }
      return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity.getDefaultInstance();
    }
    public static final int HEADER_FIELD_NUMBER = 3;
    /**
     * 
     * HTTP-header-field-based session affinity configuration.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.HeaderSessionAffinity header = 3;
     * @return Whether the header field is set.
     */
    @java.lang.Override
    public boolean hasHeader() {
      return sessionAffinityCase_ == 3;
    }
    /**
     * 
     * HTTP-header-field-based session affinity configuration.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.HeaderSessionAffinity header = 3;
     * @return The header.
     */
    @java.lang.Override
    public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity getHeader() {
      if (sessionAffinityCase_ == 3) {
         return (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity) sessionAffinity_;
      }
      return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity.getDefaultInstance();
    }
    /**
     * 
     * HTTP-header-field-based session affinity configuration.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.HeaderSessionAffinity header = 3;
     */
    @java.lang.Override
    public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinityOrBuilder getHeaderOrBuilder() {
      if (sessionAffinityCase_ == 3) {
         return (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity) sessionAffinity_;
      }
      return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity.getDefaultInstance();
    }
    public static final int COOKIE_FIELD_NUMBER = 4;
    /**
     * 
     * Cookie-based session affinity configuration.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.CookieSessionAffinity cookie = 4;
     * @return Whether the cookie field is set.
     */
    @java.lang.Override
    public boolean hasCookie() {
      return sessionAffinityCase_ == 4;
    }
    /**
     * 
     * Cookie-based session affinity configuration.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.CookieSessionAffinity cookie = 4;
     * @return The cookie.
     */
    @java.lang.Override
    public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity getCookie() {
      if (sessionAffinityCase_ == 4) {
         return (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity) sessionAffinity_;
      }
      return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity.getDefaultInstance();
    }
    /**
     * 
     * Cookie-based session affinity configuration.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.CookieSessionAffinity cookie = 4;
     */
    @java.lang.Override
    public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinityOrBuilder getCookieOrBuilder() {
      if (sessionAffinityCase_ == 4) {
         return (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity) sessionAffinity_;
      }
      return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity.getDefaultInstance();
    }
    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 {
      for (int i = 0; i < backends_.size(); i++) {
        output.writeMessage(1, backends_.get(i));
      }
      if (sessionAffinityCase_ == 2) {
        output.writeMessage(2, (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity) sessionAffinity_);
      }
      if (sessionAffinityCase_ == 3) {
        output.writeMessage(3, (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity) sessionAffinity_);
      }
      if (sessionAffinityCase_ == 4) {
        output.writeMessage(4, (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity) sessionAffinity_);
      }
      unknownFields.writeTo(output);
    }
    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;
      size = 0;
      for (int i = 0; i < backends_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, backends_.get(i));
      }
      if (sessionAffinityCase_ == 2) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity) sessionAffinity_);
      }
      if (sessionAffinityCase_ == 3) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity) sessionAffinity_);
      }
      if (sessionAffinityCase_ == 4) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity) sessionAffinity_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackendGroup)) {
        return super.equals(obj);
      }
      yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackendGroup other = (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackendGroup) obj;
      if (!getBackendsList()
          .equals(other.getBackendsList())) return false;
      if (!getSessionAffinityCase().equals(other.getSessionAffinityCase())) return false;
      switch (sessionAffinityCase_) {
        case 2:
          if (!getConnection()
              .equals(other.getConnection())) return false;
          break;
        case 3:
          if (!getHeader()
              .equals(other.getHeader())) return false;
          break;
        case 4:
          if (!getCookie()
              .equals(other.getCookie())) return false;
          break;
        case 0:
        default:
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }
    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getBackendsCount() > 0) {
        hash = (37 * hash) + BACKENDS_FIELD_NUMBER;
        hash = (53 * hash) + getBackendsList().hashCode();
      }
      switch (sessionAffinityCase_) {
        case 2:
          hash = (37 * hash) + CONNECTION_FIELD_NUMBER;
          hash = (53 * hash) + getConnection().hashCode();
          break;
        case 3:
          hash = (37 * hash) + HEADER_FIELD_NUMBER;
          hash = (53 * hash) + getHeader().hashCode();
          break;
        case 4:
          hash = (37 * hash) + COOKIE_FIELD_NUMBER;
          hash = (53 * hash) + getCookie().hashCode();
          break;
        case 0:
        default:
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackendGroup parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackendGroup parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackendGroup parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackendGroup parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackendGroup parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackendGroup parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackendGroup parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackendGroup 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 yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackendGroup parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackendGroup 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 yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackendGroup parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackendGroup 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(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackendGroup 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;
    }
    /**
     * 
     * An HTTP backend group resource.
     * 
     *
     * Protobuf type {@code yandex.cloud.apploadbalancer.v1.HttpBackendGroup}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:yandex.cloud.apploadbalancer.v1.HttpBackendGroup)
        yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackendGroupOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_HttpBackendGroup_descriptor;
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_HttpBackendGroup_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackendGroup.class, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackendGroup.Builder.class);
      }
      // Construct using yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackendGroup.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getBackendsFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (backendsBuilder_ == null) {
          backends_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          backendsBuilder_.clear();
        }
        sessionAffinityCase_ = 0;
        sessionAffinity_ = null;
        return this;
      }
      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_HttpBackendGroup_descriptor;
      }
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackendGroup getDefaultInstanceForType() {
        return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackendGroup.getDefaultInstance();
      }
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackendGroup build() {
        yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackendGroup result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackendGroup buildPartial() {
        yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackendGroup result = new yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackendGroup(this);
        int from_bitField0_ = bitField0_;
        if (backendsBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            backends_ = java.util.Collections.unmodifiableList(backends_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.backends_ = backends_;
        } else {
          result.backends_ = backendsBuilder_.build();
        }
        if (sessionAffinityCase_ == 2) {
          if (connectionBuilder_ == null) {
            result.sessionAffinity_ = sessionAffinity_;
          } else {
            result.sessionAffinity_ = connectionBuilder_.build();
          }
        }
        if (sessionAffinityCase_ == 3) {
          if (headerBuilder_ == null) {
            result.sessionAffinity_ = sessionAffinity_;
          } else {
            result.sessionAffinity_ = headerBuilder_.build();
          }
        }
        if (sessionAffinityCase_ == 4) {
          if (cookieBuilder_ == null) {
            result.sessionAffinity_ = sessionAffinity_;
          } else {
            result.sessionAffinity_ = cookieBuilder_.build();
          }
        }
        result.sessionAffinityCase_ = sessionAffinityCase_;
        onBuilt();
        return result;
      }
      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackendGroup) {
          return mergeFrom((yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackendGroup)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      public Builder mergeFrom(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackendGroup other) {
        if (other == yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackendGroup.getDefaultInstance()) return this;
        if (backendsBuilder_ == null) {
          if (!other.backends_.isEmpty()) {
            if (backends_.isEmpty()) {
              backends_ = other.backends_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureBackendsIsMutable();
              backends_.addAll(other.backends_);
            }
            onChanged();
          }
        } else {
          if (!other.backends_.isEmpty()) {
            if (backendsBuilder_.isEmpty()) {
              backendsBuilder_.dispose();
              backendsBuilder_ = null;
              backends_ = other.backends_;
              bitField0_ = (bitField0_ & ~0x00000001);
              backendsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getBackendsFieldBuilder() : null;
            } else {
              backendsBuilder_.addAllMessages(other.backends_);
            }
          }
        }
        switch (other.getSessionAffinityCase()) {
          case CONNECTION: {
            mergeConnection(other.getConnection());
            break;
          }
          case HEADER: {
            mergeHeader(other.getHeader());
            break;
          }
          case COOKIE: {
            mergeCookie(other.getCookie());
            break;
          }
          case SESSIONAFFINITY_NOT_SET: {
            break;
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }
      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }
      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackendGroup parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackendGroup) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int sessionAffinityCase_ = 0;
      private java.lang.Object sessionAffinity_;
      public SessionAffinityCase
          getSessionAffinityCase() {
        return SessionAffinityCase.forNumber(
            sessionAffinityCase_);
      }
      public Builder clearSessionAffinity() {
        sessionAffinityCase_ = 0;
        sessionAffinity_ = null;
        onChanged();
        return this;
      }
      private int bitField0_;
      private java.util.List backends_ =
        java.util.Collections.emptyList();
      private void ensureBackendsIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          backends_ = new java.util.ArrayList(backends_);
          bitField0_ |= 0x00000001;
         }
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackend, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackend.Builder, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackendOrBuilder> backendsBuilder_;
      /**
       * 
       * List of HTTP backends.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.HttpBackend backends = 1;
       */
      public java.util.List getBackendsList() {
        if (backendsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(backends_);
        } else {
          return backendsBuilder_.getMessageList();
        }
      }
      /**
       * 
       * List of HTTP backends.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.HttpBackend backends = 1;
       */
      public int getBackendsCount() {
        if (backendsBuilder_ == null) {
          return backends_.size();
        } else {
          return backendsBuilder_.getCount();
        }
      }
      /**
       * 
       * List of HTTP backends.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.HttpBackend backends = 1;
       */
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackend getBackends(int index) {
        if (backendsBuilder_ == null) {
          return backends_.get(index);
        } else {
          return backendsBuilder_.getMessage(index);
        }
      }
      /**
       * 
       * List of HTTP backends.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.HttpBackend backends = 1;
       */
      public Builder setBackends(
          int index, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackend value) {
        if (backendsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureBackendsIsMutable();
          backends_.set(index, value);
          onChanged();
        } else {
          backendsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * 
       * List of HTTP backends.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.HttpBackend backends = 1;
       */
      public Builder setBackends(
          int index, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackend.Builder builderForValue) {
        if (backendsBuilder_ == null) {
          ensureBackendsIsMutable();
          backends_.set(index, builderForValue.build());
          onChanged();
        } else {
          backendsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * 
       * List of HTTP backends.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.HttpBackend backends = 1;
       */
      public Builder addBackends(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackend value) {
        if (backendsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureBackendsIsMutable();
          backends_.add(value);
          onChanged();
        } else {
          backendsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * 
       * List of HTTP backends.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.HttpBackend backends = 1;
       */
      public Builder addBackends(
          int index, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackend value) {
        if (backendsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureBackendsIsMutable();
          backends_.add(index, value);
          onChanged();
        } else {
          backendsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * 
       * List of HTTP backends.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.HttpBackend backends = 1;
       */
      public Builder addBackends(
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackend.Builder builderForValue) {
        if (backendsBuilder_ == null) {
          ensureBackendsIsMutable();
          backends_.add(builderForValue.build());
          onChanged();
        } else {
          backendsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * 
       * List of HTTP backends.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.HttpBackend backends = 1;
       */
      public Builder addBackends(
          int index, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackend.Builder builderForValue) {
        if (backendsBuilder_ == null) {
          ensureBackendsIsMutable();
          backends_.add(index, builderForValue.build());
          onChanged();
        } else {
          backendsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * 
       * List of HTTP backends.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.HttpBackend backends = 1;
       */
      public Builder addAllBackends(
          java.lang.Iterable extends yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackend> values) {
        if (backendsBuilder_ == null) {
          ensureBackendsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, backends_);
          onChanged();
        } else {
          backendsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * 
       * List of HTTP backends.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.HttpBackend backends = 1;
       */
      public Builder clearBackends() {
        if (backendsBuilder_ == null) {
          backends_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          backendsBuilder_.clear();
        }
        return this;
      }
      /**
       * 
       * List of HTTP backends.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.HttpBackend backends = 1;
       */
      public Builder removeBackends(int index) {
        if (backendsBuilder_ == null) {
          ensureBackendsIsMutable();
          backends_.remove(index);
          onChanged();
        } else {
          backendsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * 
       * List of HTTP backends.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.HttpBackend backends = 1;
       */
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackend.Builder getBackendsBuilder(
          int index) {
        return getBackendsFieldBuilder().getBuilder(index);
      }
      /**
       * 
       * List of HTTP backends.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.HttpBackend backends = 1;
       */
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackendOrBuilder getBackendsOrBuilder(
          int index) {
        if (backendsBuilder_ == null) {
          return backends_.get(index);  } else {
          return backendsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * 
       * List of HTTP backends.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.HttpBackend backends = 1;
       */
      public java.util.List extends yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackendOrBuilder> 
           getBackendsOrBuilderList() {
        if (backendsBuilder_ != null) {
          return backendsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(backends_);
        }
      }
      /**
       * 
       * List of HTTP backends.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.HttpBackend backends = 1;
       */
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackend.Builder addBackendsBuilder() {
        return getBackendsFieldBuilder().addBuilder(
            yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackend.getDefaultInstance());
      }
      /**
       * 
       * List of HTTP backends.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.HttpBackend backends = 1;
       */
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackend.Builder addBackendsBuilder(
          int index) {
        return getBackendsFieldBuilder().addBuilder(
            index, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackend.getDefaultInstance());
      }
      /**
       * 
       * List of HTTP backends.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.HttpBackend backends = 1;
       */
      public java.util.List 
           getBackendsBuilderList() {
        return getBackendsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackend, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackend.Builder, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackendOrBuilder> 
          getBackendsFieldBuilder() {
        if (backendsBuilder_ == null) {
          backendsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackend, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackend.Builder, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackendOrBuilder>(
                  backends_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          backends_ = null;
        }
        return backendsBuilder_;
      }
      private com.google.protobuf.SingleFieldBuilderV3<
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity.Builder, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinityOrBuilder> connectionBuilder_;
      /**
       * 
       * Connection-based session affinity configuration.
       * For now, a connection is defined only by an IP address of the client.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.ConnectionSessionAffinity connection = 2;
       * @return Whether the connection field is set.
       */
      @java.lang.Override
      public boolean hasConnection() {
        return sessionAffinityCase_ == 2;
      }
      /**
       * 
       * Connection-based session affinity configuration.
       * For now, a connection is defined only by an IP address of the client.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.ConnectionSessionAffinity connection = 2;
       * @return The connection.
       */
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity getConnection() {
        if (connectionBuilder_ == null) {
          if (sessionAffinityCase_ == 2) {
            return (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity) sessionAffinity_;
          }
          return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity.getDefaultInstance();
        } else {
          if (sessionAffinityCase_ == 2) {
            return connectionBuilder_.getMessage();
          }
          return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity.getDefaultInstance();
        }
      }
      /**
       * 
       * Connection-based session affinity configuration.
       * For now, a connection is defined only by an IP address of the client.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.ConnectionSessionAffinity connection = 2;
       */
      public Builder setConnection(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity value) {
        if (connectionBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          sessionAffinity_ = value;
          onChanged();
        } else {
          connectionBuilder_.setMessage(value);
        }
        sessionAffinityCase_ = 2;
        return this;
      }
      /**
       * 
       * Connection-based session affinity configuration.
       * For now, a connection is defined only by an IP address of the client.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.ConnectionSessionAffinity connection = 2;
       */
      public Builder setConnection(
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity.Builder builderForValue) {
        if (connectionBuilder_ == null) {
          sessionAffinity_ = builderForValue.build();
          onChanged();
        } else {
          connectionBuilder_.setMessage(builderForValue.build());
        }
        sessionAffinityCase_ = 2;
        return this;
      }
      /**
       * 
       * Connection-based session affinity configuration.
       * For now, a connection is defined only by an IP address of the client.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.ConnectionSessionAffinity connection = 2;
       */
      public Builder mergeConnection(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity value) {
        if (connectionBuilder_ == null) {
          if (sessionAffinityCase_ == 2 &&
              sessionAffinity_ != yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity.getDefaultInstance()) {
            sessionAffinity_ = yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity.newBuilder((yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity) sessionAffinity_)
                .mergeFrom(value).buildPartial();
          } else {
            sessionAffinity_ = value;
          }
          onChanged();
        } else {
          if (sessionAffinityCase_ == 2) {
            connectionBuilder_.mergeFrom(value);
          }
          connectionBuilder_.setMessage(value);
        }
        sessionAffinityCase_ = 2;
        return this;
      }
      /**
       * 
       * Connection-based session affinity configuration.
       * For now, a connection is defined only by an IP address of the client.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.ConnectionSessionAffinity connection = 2;
       */
      public Builder clearConnection() {
        if (connectionBuilder_ == null) {
          if (sessionAffinityCase_ == 2) {
            sessionAffinityCase_ = 0;
            sessionAffinity_ = null;
            onChanged();
          }
        } else {
          if (sessionAffinityCase_ == 2) {
            sessionAffinityCase_ = 0;
            sessionAffinity_ = null;
          }
          connectionBuilder_.clear();
        }
        return this;
      }
      /**
       * 
       * Connection-based session affinity configuration.
       * For now, a connection is defined only by an IP address of the client.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.ConnectionSessionAffinity connection = 2;
       */
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity.Builder getConnectionBuilder() {
        return getConnectionFieldBuilder().getBuilder();
      }
      /**
       * 
       * Connection-based session affinity configuration.
       * For now, a connection is defined only by an IP address of the client.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.ConnectionSessionAffinity connection = 2;
       */
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinityOrBuilder getConnectionOrBuilder() {
        if ((sessionAffinityCase_ == 2) && (connectionBuilder_ != null)) {
          return connectionBuilder_.getMessageOrBuilder();
        } else {
          if (sessionAffinityCase_ == 2) {
            return (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity) sessionAffinity_;
          }
          return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity.getDefaultInstance();
        }
      }
      /**
       * 
       * Connection-based session affinity configuration.
       * For now, a connection is defined only by an IP address of the client.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.ConnectionSessionAffinity connection = 2;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity.Builder, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinityOrBuilder> 
          getConnectionFieldBuilder() {
        if (connectionBuilder_ == null) {
          if (!(sessionAffinityCase_ == 2)) {
            sessionAffinity_ = yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity.getDefaultInstance();
          }
          connectionBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity.Builder, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinityOrBuilder>(
                  (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity) sessionAffinity_,
                  getParentForChildren(),
                  isClean());
          sessionAffinity_ = null;
        }
        sessionAffinityCase_ = 2;
        onChanged();;
        return connectionBuilder_;
      }
      private com.google.protobuf.SingleFieldBuilderV3<
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity.Builder, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinityOrBuilder> headerBuilder_;
      /**
       * 
       * HTTP-header-field-based session affinity configuration.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.HeaderSessionAffinity header = 3;
       * @return Whether the header field is set.
       */
      @java.lang.Override
      public boolean hasHeader() {
        return sessionAffinityCase_ == 3;
      }
      /**
       * 
       * HTTP-header-field-based session affinity configuration.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.HeaderSessionAffinity header = 3;
       * @return The header.
       */
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity getHeader() {
        if (headerBuilder_ == null) {
          if (sessionAffinityCase_ == 3) {
            return (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity) sessionAffinity_;
          }
          return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity.getDefaultInstance();
        } else {
          if (sessionAffinityCase_ == 3) {
            return headerBuilder_.getMessage();
          }
          return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity.getDefaultInstance();
        }
      }
      /**
       * 
       * HTTP-header-field-based session affinity configuration.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.HeaderSessionAffinity header = 3;
       */
      public Builder setHeader(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity value) {
        if (headerBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          sessionAffinity_ = value;
          onChanged();
        } else {
          headerBuilder_.setMessage(value);
        }
        sessionAffinityCase_ = 3;
        return this;
      }
      /**
       * 
       * HTTP-header-field-based session affinity configuration.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.HeaderSessionAffinity header = 3;
       */
      public Builder setHeader(
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity.Builder builderForValue) {
        if (headerBuilder_ == null) {
          sessionAffinity_ = builderForValue.build();
          onChanged();
        } else {
          headerBuilder_.setMessage(builderForValue.build());
        }
        sessionAffinityCase_ = 3;
        return this;
      }
      /**
       * 
       * HTTP-header-field-based session affinity configuration.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.HeaderSessionAffinity header = 3;
       */
      public Builder mergeHeader(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity value) {
        if (headerBuilder_ == null) {
          if (sessionAffinityCase_ == 3 &&
              sessionAffinity_ != yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity.getDefaultInstance()) {
            sessionAffinity_ = yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity.newBuilder((yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity) sessionAffinity_)
                .mergeFrom(value).buildPartial();
          } else {
            sessionAffinity_ = value;
          }
          onChanged();
        } else {
          if (sessionAffinityCase_ == 3) {
            headerBuilder_.mergeFrom(value);
          }
          headerBuilder_.setMessage(value);
        }
        sessionAffinityCase_ = 3;
        return this;
      }
      /**
       * 
       * HTTP-header-field-based session affinity configuration.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.HeaderSessionAffinity header = 3;
       */
      public Builder clearHeader() {
        if (headerBuilder_ == null) {
          if (sessionAffinityCase_ == 3) {
            sessionAffinityCase_ = 0;
            sessionAffinity_ = null;
            onChanged();
          }
        } else {
          if (sessionAffinityCase_ == 3) {
            sessionAffinityCase_ = 0;
            sessionAffinity_ = null;
          }
          headerBuilder_.clear();
        }
        return this;
      }
      /**
       * 
       * HTTP-header-field-based session affinity configuration.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.HeaderSessionAffinity header = 3;
       */
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity.Builder getHeaderBuilder() {
        return getHeaderFieldBuilder().getBuilder();
      }
      /**
       * 
       * HTTP-header-field-based session affinity configuration.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.HeaderSessionAffinity header = 3;
       */
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinityOrBuilder getHeaderOrBuilder() {
        if ((sessionAffinityCase_ == 3) && (headerBuilder_ != null)) {
          return headerBuilder_.getMessageOrBuilder();
        } else {
          if (sessionAffinityCase_ == 3) {
            return (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity) sessionAffinity_;
          }
          return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity.getDefaultInstance();
        }
      }
      /**
       * 
       * HTTP-header-field-based session affinity configuration.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.HeaderSessionAffinity header = 3;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity.Builder, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinityOrBuilder> 
          getHeaderFieldBuilder() {
        if (headerBuilder_ == null) {
          if (!(sessionAffinityCase_ == 3)) {
            sessionAffinity_ = yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity.getDefaultInstance();
          }
          headerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity.Builder, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinityOrBuilder>(
                  (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity) sessionAffinity_,
                  getParentForChildren(),
                  isClean());
          sessionAffinity_ = null;
        }
        sessionAffinityCase_ = 3;
        onChanged();;
        return headerBuilder_;
      }
      private com.google.protobuf.SingleFieldBuilderV3<
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity.Builder, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinityOrBuilder> cookieBuilder_;
      /**
       * 
       * Cookie-based session affinity configuration.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.CookieSessionAffinity cookie = 4;
       * @return Whether the cookie field is set.
       */
      @java.lang.Override
      public boolean hasCookie() {
        return sessionAffinityCase_ == 4;
      }
      /**
       * 
       * Cookie-based session affinity configuration.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.CookieSessionAffinity cookie = 4;
       * @return The cookie.
       */
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity getCookie() {
        if (cookieBuilder_ == null) {
          if (sessionAffinityCase_ == 4) {
            return (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity) sessionAffinity_;
          }
          return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity.getDefaultInstance();
        } else {
          if (sessionAffinityCase_ == 4) {
            return cookieBuilder_.getMessage();
          }
          return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity.getDefaultInstance();
        }
      }
      /**
       * 
       * Cookie-based session affinity configuration.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.CookieSessionAffinity cookie = 4;
       */
      public Builder setCookie(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity value) {
        if (cookieBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          sessionAffinity_ = value;
          onChanged();
        } else {
          cookieBuilder_.setMessage(value);
        }
        sessionAffinityCase_ = 4;
        return this;
      }
      /**
       * 
       * Cookie-based session affinity configuration.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.CookieSessionAffinity cookie = 4;
       */
      public Builder setCookie(
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity.Builder builderForValue) {
        if (cookieBuilder_ == null) {
          sessionAffinity_ = builderForValue.build();
          onChanged();
        } else {
          cookieBuilder_.setMessage(builderForValue.build());
        }
        sessionAffinityCase_ = 4;
        return this;
      }
      /**
       * 
       * Cookie-based session affinity configuration.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.CookieSessionAffinity cookie = 4;
       */
      public Builder mergeCookie(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity value) {
        if (cookieBuilder_ == null) {
          if (sessionAffinityCase_ == 4 &&
              sessionAffinity_ != yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity.getDefaultInstance()) {
            sessionAffinity_ = yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity.newBuilder((yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity) sessionAffinity_)
                .mergeFrom(value).buildPartial();
          } else {
            sessionAffinity_ = value;
          }
          onChanged();
        } else {
          if (sessionAffinityCase_ == 4) {
            cookieBuilder_.mergeFrom(value);
          }
          cookieBuilder_.setMessage(value);
        }
        sessionAffinityCase_ = 4;
        return this;
      }
      /**
       * 
       * Cookie-based session affinity configuration.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.CookieSessionAffinity cookie = 4;
       */
      public Builder clearCookie() {
        if (cookieBuilder_ == null) {
          if (sessionAffinityCase_ == 4) {
            sessionAffinityCase_ = 0;
            sessionAffinity_ = null;
            onChanged();
          }
        } else {
          if (sessionAffinityCase_ == 4) {
            sessionAffinityCase_ = 0;
            sessionAffinity_ = null;
          }
          cookieBuilder_.clear();
        }
        return this;
      }
      /**
       * 
       * Cookie-based session affinity configuration.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.CookieSessionAffinity cookie = 4;
       */
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity.Builder getCookieBuilder() {
        return getCookieFieldBuilder().getBuilder();
      }
      /**
       * 
       * Cookie-based session affinity configuration.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.CookieSessionAffinity cookie = 4;
       */
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinityOrBuilder getCookieOrBuilder() {
        if ((sessionAffinityCase_ == 4) && (cookieBuilder_ != null)) {
          return cookieBuilder_.getMessageOrBuilder();
        } else {
          if (sessionAffinityCase_ == 4) {
            return (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity) sessionAffinity_;
          }
          return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity.getDefaultInstance();
        }
      }
      /**
       * 
       * Cookie-based session affinity configuration.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.CookieSessionAffinity cookie = 4;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity.Builder, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinityOrBuilder> 
          getCookieFieldBuilder() {
        if (cookieBuilder_ == null) {
          if (!(sessionAffinityCase_ == 4)) {
            sessionAffinity_ = yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity.getDefaultInstance();
          }
          cookieBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity.Builder, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinityOrBuilder>(
                  (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity) sessionAffinity_,
                  getParentForChildren(),
                  isClean());
          sessionAffinity_ = null;
        }
        sessionAffinityCase_ = 4;
        onChanged();;
        return cookieBuilder_;
      }
      @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:yandex.cloud.apploadbalancer.v1.HttpBackendGroup)
    }
    // @@protoc_insertion_point(class_scope:yandex.cloud.apploadbalancer.v1.HttpBackendGroup)
    private static final yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackendGroup DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackendGroup();
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackendGroup getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }
    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public HttpBackendGroup parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new HttpBackendGroup(input, extensionRegistry);
      }
    };
    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }
    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }
    @java.lang.Override
    public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackendGroup getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }
  }
  public interface GrpcBackendGroupOrBuilder extends
      // @@protoc_insertion_point(interface_extends:yandex.cloud.apploadbalancer.v1.GrpcBackendGroup)
      com.google.protobuf.MessageOrBuilder {
    /**
     * 
     * List of gRPC backends.
     * 
     *
     * repeated .yandex.cloud.apploadbalancer.v1.GrpcBackend backends = 1;
     */
    java.util.List 
        getBackendsList();
    /**
     * 
     * List of gRPC backends.
     * 
     *
     * repeated .yandex.cloud.apploadbalancer.v1.GrpcBackend backends = 1;
     */
    yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackend getBackends(int index);
    /**
     * 
     * List of gRPC backends.
     * 
     *
     * repeated .yandex.cloud.apploadbalancer.v1.GrpcBackend backends = 1;
     */
    int getBackendsCount();
    /**
     * 
     * List of gRPC backends.
     * 
     *
     * repeated .yandex.cloud.apploadbalancer.v1.GrpcBackend backends = 1;
     */
    java.util.List extends yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackendOrBuilder> 
        getBackendsOrBuilderList();
    /**
     * 
     * List of gRPC backends.
     * 
     *
     * repeated .yandex.cloud.apploadbalancer.v1.GrpcBackend backends = 1;
     */
    yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackendOrBuilder getBackendsOrBuilder(
        int index);
    /**
     * 
     * Connection-based session affinity configuration.
     * For now, a connection is defined only by an IP address of the client.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.ConnectionSessionAffinity connection = 2;
     * @return Whether the connection field is set.
     */
    boolean hasConnection();
    /**
     * 
     * Connection-based session affinity configuration.
     * For now, a connection is defined only by an IP address of the client.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.ConnectionSessionAffinity connection = 2;
     * @return The connection.
     */
    yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity getConnection();
    /**
     * 
     * Connection-based session affinity configuration.
     * For now, a connection is defined only by an IP address of the client.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.ConnectionSessionAffinity connection = 2;
     */
    yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinityOrBuilder getConnectionOrBuilder();
    /**
     * 
     * HTTP-header-field-based session affinity configuration.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.HeaderSessionAffinity header = 3;
     * @return Whether the header field is set.
     */
    boolean hasHeader();
    /**
     * 
     * HTTP-header-field-based session affinity configuration.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.HeaderSessionAffinity header = 3;
     * @return The header.
     */
    yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity getHeader();
    /**
     * 
     * HTTP-header-field-based session affinity configuration.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.HeaderSessionAffinity header = 3;
     */
    yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinityOrBuilder getHeaderOrBuilder();
    /**
     * 
     * Cookie-based session affinity configuration.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.CookieSessionAffinity cookie = 4;
     * @return Whether the cookie field is set.
     */
    boolean hasCookie();
    /**
     * 
     * Cookie-based session affinity configuration.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.CookieSessionAffinity cookie = 4;
     * @return The cookie.
     */
    yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity getCookie();
    /**
     * 
     * Cookie-based session affinity configuration.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.CookieSessionAffinity cookie = 4;
     */
    yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinityOrBuilder getCookieOrBuilder();
    public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackendGroup.SessionAffinityCase getSessionAffinityCase();
  }
  /**
   * 
   * A gRPC backend group resource.
   * 
   *
   * Protobuf type {@code yandex.cloud.apploadbalancer.v1.GrpcBackendGroup}
   */
  public static final class GrpcBackendGroup extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:yandex.cloud.apploadbalancer.v1.GrpcBackendGroup)
      GrpcBackendGroupOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use GrpcBackendGroup.newBuilder() to construct.
    private GrpcBackendGroup(com.google.protobuf.GeneratedMessageV3.Builder> builder) {
      super(builder);
    }
    private GrpcBackendGroup() {
      backends_ = java.util.Collections.emptyList();
    }
    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new GrpcBackendGroup();
    }
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private GrpcBackendGroup(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                backends_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000001;
              }
              backends_.add(
                  input.readMessage(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackend.parser(), extensionRegistry));
              break;
            }
            case 18: {
              yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity.Builder subBuilder = null;
              if (sessionAffinityCase_ == 2) {
                subBuilder = ((yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity) sessionAffinity_).toBuilder();
              }
              sessionAffinity_ =
                  input.readMessage(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity) sessionAffinity_);
                sessionAffinity_ = subBuilder.buildPartial();
              }
              sessionAffinityCase_ = 2;
              break;
            }
            case 26: {
              yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity.Builder subBuilder = null;
              if (sessionAffinityCase_ == 3) {
                subBuilder = ((yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity) sessionAffinity_).toBuilder();
              }
              sessionAffinity_ =
                  input.readMessage(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity) sessionAffinity_);
                sessionAffinity_ = subBuilder.buildPartial();
              }
              sessionAffinityCase_ = 3;
              break;
            }
            case 34: {
              yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity.Builder subBuilder = null;
              if (sessionAffinityCase_ == 4) {
                subBuilder = ((yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity) sessionAffinity_).toBuilder();
              }
              sessionAffinity_ =
                  input.readMessage(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity) sessionAffinity_);
                sessionAffinity_ = subBuilder.buildPartial();
              }
              sessionAffinityCase_ = 4;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          backends_ = java.util.Collections.unmodifiableList(backends_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_GrpcBackendGroup_descriptor;
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_GrpcBackendGroup_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackendGroup.class, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackendGroup.Builder.class);
    }
    private int sessionAffinityCase_ = 0;
    private java.lang.Object sessionAffinity_;
    public enum SessionAffinityCase
        implements com.google.protobuf.Internal.EnumLite,
            com.google.protobuf.AbstractMessage.InternalOneOfEnum {
      CONNECTION(2),
      HEADER(3),
      COOKIE(4),
      SESSIONAFFINITY_NOT_SET(0);
      private final int value;
      private SessionAffinityCase(int value) {
        this.value = value;
      }
      /**
       * @param value The number of the enum to look for.
       * @return The enum associated with the given number.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static SessionAffinityCase valueOf(int value) {
        return forNumber(value);
      }
      public static SessionAffinityCase forNumber(int value) {
        switch (value) {
          case 2: return CONNECTION;
          case 3: return HEADER;
          case 4: return COOKIE;
          case 0: return SESSIONAFFINITY_NOT_SET;
          default: return null;
        }
      }
      public int getNumber() {
        return this.value;
      }
    };
    public SessionAffinityCase
    getSessionAffinityCase() {
      return SessionAffinityCase.forNumber(
          sessionAffinityCase_);
    }
    public static final int BACKENDS_FIELD_NUMBER = 1;
    private java.util.List backends_;
    /**
     * 
     * List of gRPC backends.
     * 
     *
     * repeated .yandex.cloud.apploadbalancer.v1.GrpcBackend backends = 1;
     */
    @java.lang.Override
    public java.util.List getBackendsList() {
      return backends_;
    }
    /**
     * 
     * List of gRPC backends.
     * 
     *
     * repeated .yandex.cloud.apploadbalancer.v1.GrpcBackend backends = 1;
     */
    @java.lang.Override
    public java.util.List extends yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackendOrBuilder> 
        getBackendsOrBuilderList() {
      return backends_;
    }
    /**
     * 
     * List of gRPC backends.
     * 
     *
     * repeated .yandex.cloud.apploadbalancer.v1.GrpcBackend backends = 1;
     */
    @java.lang.Override
    public int getBackendsCount() {
      return backends_.size();
    }
    /**
     * 
     * List of gRPC backends.
     * 
     *
     * repeated .yandex.cloud.apploadbalancer.v1.GrpcBackend backends = 1;
     */
    @java.lang.Override
    public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackend getBackends(int index) {
      return backends_.get(index);
    }
    /**
     * 
     * List of gRPC backends.
     * 
     *
     * repeated .yandex.cloud.apploadbalancer.v1.GrpcBackend backends = 1;
     */
    @java.lang.Override
    public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackendOrBuilder getBackendsOrBuilder(
        int index) {
      return backends_.get(index);
    }
    public static final int CONNECTION_FIELD_NUMBER = 2;
    /**
     * 
     * Connection-based session affinity configuration.
     * For now, a connection is defined only by an IP address of the client.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.ConnectionSessionAffinity connection = 2;
     * @return Whether the connection field is set.
     */
    @java.lang.Override
    public boolean hasConnection() {
      return sessionAffinityCase_ == 2;
    }
    /**
     * 
     * Connection-based session affinity configuration.
     * For now, a connection is defined only by an IP address of the client.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.ConnectionSessionAffinity connection = 2;
     * @return The connection.
     */
    @java.lang.Override
    public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity getConnection() {
      if (sessionAffinityCase_ == 2) {
         return (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity) sessionAffinity_;
      }
      return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity.getDefaultInstance();
    }
    /**
     * 
     * Connection-based session affinity configuration.
     * For now, a connection is defined only by an IP address of the client.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.ConnectionSessionAffinity connection = 2;
     */
    @java.lang.Override
    public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinityOrBuilder getConnectionOrBuilder() {
      if (sessionAffinityCase_ == 2) {
         return (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity) sessionAffinity_;
      }
      return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity.getDefaultInstance();
    }
    public static final int HEADER_FIELD_NUMBER = 3;
    /**
     * 
     * HTTP-header-field-based session affinity configuration.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.HeaderSessionAffinity header = 3;
     * @return Whether the header field is set.
     */
    @java.lang.Override
    public boolean hasHeader() {
      return sessionAffinityCase_ == 3;
    }
    /**
     * 
     * HTTP-header-field-based session affinity configuration.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.HeaderSessionAffinity header = 3;
     * @return The header.
     */
    @java.lang.Override
    public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity getHeader() {
      if (sessionAffinityCase_ == 3) {
         return (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity) sessionAffinity_;
      }
      return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity.getDefaultInstance();
    }
    /**
     * 
     * HTTP-header-field-based session affinity configuration.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.HeaderSessionAffinity header = 3;
     */
    @java.lang.Override
    public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinityOrBuilder getHeaderOrBuilder() {
      if (sessionAffinityCase_ == 3) {
         return (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity) sessionAffinity_;
      }
      return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity.getDefaultInstance();
    }
    public static final int COOKIE_FIELD_NUMBER = 4;
    /**
     * 
     * Cookie-based session affinity configuration.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.CookieSessionAffinity cookie = 4;
     * @return Whether the cookie field is set.
     */
    @java.lang.Override
    public boolean hasCookie() {
      return sessionAffinityCase_ == 4;
    }
    /**
     * 
     * Cookie-based session affinity configuration.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.CookieSessionAffinity cookie = 4;
     * @return The cookie.
     */
    @java.lang.Override
    public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity getCookie() {
      if (sessionAffinityCase_ == 4) {
         return (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity) sessionAffinity_;
      }
      return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity.getDefaultInstance();
    }
    /**
     * 
     * Cookie-based session affinity configuration.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.CookieSessionAffinity cookie = 4;
     */
    @java.lang.Override
    public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinityOrBuilder getCookieOrBuilder() {
      if (sessionAffinityCase_ == 4) {
         return (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity) sessionAffinity_;
      }
      return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity.getDefaultInstance();
    }
    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 {
      for (int i = 0; i < backends_.size(); i++) {
        output.writeMessage(1, backends_.get(i));
      }
      if (sessionAffinityCase_ == 2) {
        output.writeMessage(2, (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity) sessionAffinity_);
      }
      if (sessionAffinityCase_ == 3) {
        output.writeMessage(3, (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity) sessionAffinity_);
      }
      if (sessionAffinityCase_ == 4) {
        output.writeMessage(4, (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity) sessionAffinity_);
      }
      unknownFields.writeTo(output);
    }
    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;
      size = 0;
      for (int i = 0; i < backends_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, backends_.get(i));
      }
      if (sessionAffinityCase_ == 2) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity) sessionAffinity_);
      }
      if (sessionAffinityCase_ == 3) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity) sessionAffinity_);
      }
      if (sessionAffinityCase_ == 4) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity) sessionAffinity_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackendGroup)) {
        return super.equals(obj);
      }
      yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackendGroup other = (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackendGroup) obj;
      if (!getBackendsList()
          .equals(other.getBackendsList())) return false;
      if (!getSessionAffinityCase().equals(other.getSessionAffinityCase())) return false;
      switch (sessionAffinityCase_) {
        case 2:
          if (!getConnection()
              .equals(other.getConnection())) return false;
          break;
        case 3:
          if (!getHeader()
              .equals(other.getHeader())) return false;
          break;
        case 4:
          if (!getCookie()
              .equals(other.getCookie())) return false;
          break;
        case 0:
        default:
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }
    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getBackendsCount() > 0) {
        hash = (37 * hash) + BACKENDS_FIELD_NUMBER;
        hash = (53 * hash) + getBackendsList().hashCode();
      }
      switch (sessionAffinityCase_) {
        case 2:
          hash = (37 * hash) + CONNECTION_FIELD_NUMBER;
          hash = (53 * hash) + getConnection().hashCode();
          break;
        case 3:
          hash = (37 * hash) + HEADER_FIELD_NUMBER;
          hash = (53 * hash) + getHeader().hashCode();
          break;
        case 4:
          hash = (37 * hash) + COOKIE_FIELD_NUMBER;
          hash = (53 * hash) + getCookie().hashCode();
          break;
        case 0:
        default:
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackendGroup parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackendGroup parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackendGroup parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackendGroup parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackendGroup parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackendGroup parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackendGroup parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackendGroup 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 yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackendGroup parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackendGroup 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 yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackendGroup parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackendGroup 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(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackendGroup 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;
    }
    /**
     * 
     * A gRPC backend group resource.
     * 
     *
     * Protobuf type {@code yandex.cloud.apploadbalancer.v1.GrpcBackendGroup}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:yandex.cloud.apploadbalancer.v1.GrpcBackendGroup)
        yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackendGroupOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_GrpcBackendGroup_descriptor;
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_GrpcBackendGroup_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackendGroup.class, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackendGroup.Builder.class);
      }
      // Construct using yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackendGroup.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getBackendsFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (backendsBuilder_ == null) {
          backends_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          backendsBuilder_.clear();
        }
        sessionAffinityCase_ = 0;
        sessionAffinity_ = null;
        return this;
      }
      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_GrpcBackendGroup_descriptor;
      }
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackendGroup getDefaultInstanceForType() {
        return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackendGroup.getDefaultInstance();
      }
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackendGroup build() {
        yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackendGroup result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackendGroup buildPartial() {
        yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackendGroup result = new yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackendGroup(this);
        int from_bitField0_ = bitField0_;
        if (backendsBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            backends_ = java.util.Collections.unmodifiableList(backends_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.backends_ = backends_;
        } else {
          result.backends_ = backendsBuilder_.build();
        }
        if (sessionAffinityCase_ == 2) {
          if (connectionBuilder_ == null) {
            result.sessionAffinity_ = sessionAffinity_;
          } else {
            result.sessionAffinity_ = connectionBuilder_.build();
          }
        }
        if (sessionAffinityCase_ == 3) {
          if (headerBuilder_ == null) {
            result.sessionAffinity_ = sessionAffinity_;
          } else {
            result.sessionAffinity_ = headerBuilder_.build();
          }
        }
        if (sessionAffinityCase_ == 4) {
          if (cookieBuilder_ == null) {
            result.sessionAffinity_ = sessionAffinity_;
          } else {
            result.sessionAffinity_ = cookieBuilder_.build();
          }
        }
        result.sessionAffinityCase_ = sessionAffinityCase_;
        onBuilt();
        return result;
      }
      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackendGroup) {
          return mergeFrom((yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackendGroup)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      public Builder mergeFrom(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackendGroup other) {
        if (other == yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackendGroup.getDefaultInstance()) return this;
        if (backendsBuilder_ == null) {
          if (!other.backends_.isEmpty()) {
            if (backends_.isEmpty()) {
              backends_ = other.backends_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureBackendsIsMutable();
              backends_.addAll(other.backends_);
            }
            onChanged();
          }
        } else {
          if (!other.backends_.isEmpty()) {
            if (backendsBuilder_.isEmpty()) {
              backendsBuilder_.dispose();
              backendsBuilder_ = null;
              backends_ = other.backends_;
              bitField0_ = (bitField0_ & ~0x00000001);
              backendsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getBackendsFieldBuilder() : null;
            } else {
              backendsBuilder_.addAllMessages(other.backends_);
            }
          }
        }
        switch (other.getSessionAffinityCase()) {
          case CONNECTION: {
            mergeConnection(other.getConnection());
            break;
          }
          case HEADER: {
            mergeHeader(other.getHeader());
            break;
          }
          case COOKIE: {
            mergeCookie(other.getCookie());
            break;
          }
          case SESSIONAFFINITY_NOT_SET: {
            break;
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }
      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }
      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackendGroup parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackendGroup) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int sessionAffinityCase_ = 0;
      private java.lang.Object sessionAffinity_;
      public SessionAffinityCase
          getSessionAffinityCase() {
        return SessionAffinityCase.forNumber(
            sessionAffinityCase_);
      }
      public Builder clearSessionAffinity() {
        sessionAffinityCase_ = 0;
        sessionAffinity_ = null;
        onChanged();
        return this;
      }
      private int bitField0_;
      private java.util.List backends_ =
        java.util.Collections.emptyList();
      private void ensureBackendsIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          backends_ = new java.util.ArrayList(backends_);
          bitField0_ |= 0x00000001;
         }
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackend, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackend.Builder, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackendOrBuilder> backendsBuilder_;
      /**
       * 
       * List of gRPC backends.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.GrpcBackend backends = 1;
       */
      public java.util.List getBackendsList() {
        if (backendsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(backends_);
        } else {
          return backendsBuilder_.getMessageList();
        }
      }
      /**
       * 
       * List of gRPC backends.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.GrpcBackend backends = 1;
       */
      public int getBackendsCount() {
        if (backendsBuilder_ == null) {
          return backends_.size();
        } else {
          return backendsBuilder_.getCount();
        }
      }
      /**
       * 
       * List of gRPC backends.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.GrpcBackend backends = 1;
       */
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackend getBackends(int index) {
        if (backendsBuilder_ == null) {
          return backends_.get(index);
        } else {
          return backendsBuilder_.getMessage(index);
        }
      }
      /**
       * 
       * List of gRPC backends.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.GrpcBackend backends = 1;
       */
      public Builder setBackends(
          int index, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackend value) {
        if (backendsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureBackendsIsMutable();
          backends_.set(index, value);
          onChanged();
        } else {
          backendsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * 
       * List of gRPC backends.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.GrpcBackend backends = 1;
       */
      public Builder setBackends(
          int index, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackend.Builder builderForValue) {
        if (backendsBuilder_ == null) {
          ensureBackendsIsMutable();
          backends_.set(index, builderForValue.build());
          onChanged();
        } else {
          backendsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * 
       * List of gRPC backends.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.GrpcBackend backends = 1;
       */
      public Builder addBackends(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackend value) {
        if (backendsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureBackendsIsMutable();
          backends_.add(value);
          onChanged();
        } else {
          backendsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * 
       * List of gRPC backends.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.GrpcBackend backends = 1;
       */
      public Builder addBackends(
          int index, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackend value) {
        if (backendsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureBackendsIsMutable();
          backends_.add(index, value);
          onChanged();
        } else {
          backendsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * 
       * List of gRPC backends.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.GrpcBackend backends = 1;
       */
      public Builder addBackends(
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackend.Builder builderForValue) {
        if (backendsBuilder_ == null) {
          ensureBackendsIsMutable();
          backends_.add(builderForValue.build());
          onChanged();
        } else {
          backendsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * 
       * List of gRPC backends.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.GrpcBackend backends = 1;
       */
      public Builder addBackends(
          int index, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackend.Builder builderForValue) {
        if (backendsBuilder_ == null) {
          ensureBackendsIsMutable();
          backends_.add(index, builderForValue.build());
          onChanged();
        } else {
          backendsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * 
       * List of gRPC backends.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.GrpcBackend backends = 1;
       */
      public Builder addAllBackends(
          java.lang.Iterable extends yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackend> values) {
        if (backendsBuilder_ == null) {
          ensureBackendsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, backends_);
          onChanged();
        } else {
          backendsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * 
       * List of gRPC backends.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.GrpcBackend backends = 1;
       */
      public Builder clearBackends() {
        if (backendsBuilder_ == null) {
          backends_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          backendsBuilder_.clear();
        }
        return this;
      }
      /**
       * 
       * List of gRPC backends.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.GrpcBackend backends = 1;
       */
      public Builder removeBackends(int index) {
        if (backendsBuilder_ == null) {
          ensureBackendsIsMutable();
          backends_.remove(index);
          onChanged();
        } else {
          backendsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * 
       * List of gRPC backends.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.GrpcBackend backends = 1;
       */
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackend.Builder getBackendsBuilder(
          int index) {
        return getBackendsFieldBuilder().getBuilder(index);
      }
      /**
       * 
       * List of gRPC backends.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.GrpcBackend backends = 1;
       */
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackendOrBuilder getBackendsOrBuilder(
          int index) {
        if (backendsBuilder_ == null) {
          return backends_.get(index);  } else {
          return backendsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * 
       * List of gRPC backends.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.GrpcBackend backends = 1;
       */
      public java.util.List extends yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackendOrBuilder> 
           getBackendsOrBuilderList() {
        if (backendsBuilder_ != null) {
          return backendsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(backends_);
        }
      }
      /**
       * 
       * List of gRPC backends.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.GrpcBackend backends = 1;
       */
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackend.Builder addBackendsBuilder() {
        return getBackendsFieldBuilder().addBuilder(
            yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackend.getDefaultInstance());
      }
      /**
       * 
       * List of gRPC backends.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.GrpcBackend backends = 1;
       */
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackend.Builder addBackendsBuilder(
          int index) {
        return getBackendsFieldBuilder().addBuilder(
            index, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackend.getDefaultInstance());
      }
      /**
       * 
       * List of gRPC backends.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.GrpcBackend backends = 1;
       */
      public java.util.List 
           getBackendsBuilderList() {
        return getBackendsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackend, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackend.Builder, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackendOrBuilder> 
          getBackendsFieldBuilder() {
        if (backendsBuilder_ == null) {
          backendsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackend, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackend.Builder, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackendOrBuilder>(
                  backends_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          backends_ = null;
        }
        return backendsBuilder_;
      }
      private com.google.protobuf.SingleFieldBuilderV3<
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity.Builder, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinityOrBuilder> connectionBuilder_;
      /**
       * 
       * Connection-based session affinity configuration.
       * For now, a connection is defined only by an IP address of the client.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.ConnectionSessionAffinity connection = 2;
       * @return Whether the connection field is set.
       */
      @java.lang.Override
      public boolean hasConnection() {
        return sessionAffinityCase_ == 2;
      }
      /**
       * 
       * Connection-based session affinity configuration.
       * For now, a connection is defined only by an IP address of the client.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.ConnectionSessionAffinity connection = 2;
       * @return The connection.
       */
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity getConnection() {
        if (connectionBuilder_ == null) {
          if (sessionAffinityCase_ == 2) {
            return (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity) sessionAffinity_;
          }
          return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity.getDefaultInstance();
        } else {
          if (sessionAffinityCase_ == 2) {
            return connectionBuilder_.getMessage();
          }
          return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity.getDefaultInstance();
        }
      }
      /**
       * 
       * Connection-based session affinity configuration.
       * For now, a connection is defined only by an IP address of the client.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.ConnectionSessionAffinity connection = 2;
       */
      public Builder setConnection(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity value) {
        if (connectionBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          sessionAffinity_ = value;
          onChanged();
        } else {
          connectionBuilder_.setMessage(value);
        }
        sessionAffinityCase_ = 2;
        return this;
      }
      /**
       * 
       * Connection-based session affinity configuration.
       * For now, a connection is defined only by an IP address of the client.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.ConnectionSessionAffinity connection = 2;
       */
      public Builder setConnection(
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity.Builder builderForValue) {
        if (connectionBuilder_ == null) {
          sessionAffinity_ = builderForValue.build();
          onChanged();
        } else {
          connectionBuilder_.setMessage(builderForValue.build());
        }
        sessionAffinityCase_ = 2;
        return this;
      }
      /**
       * 
       * Connection-based session affinity configuration.
       * For now, a connection is defined only by an IP address of the client.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.ConnectionSessionAffinity connection = 2;
       */
      public Builder mergeConnection(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity value) {
        if (connectionBuilder_ == null) {
          if (sessionAffinityCase_ == 2 &&
              sessionAffinity_ != yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity.getDefaultInstance()) {
            sessionAffinity_ = yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity.newBuilder((yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity) sessionAffinity_)
                .mergeFrom(value).buildPartial();
          } else {
            sessionAffinity_ = value;
          }
          onChanged();
        } else {
          if (sessionAffinityCase_ == 2) {
            connectionBuilder_.mergeFrom(value);
          }
          connectionBuilder_.setMessage(value);
        }
        sessionAffinityCase_ = 2;
        return this;
      }
      /**
       * 
       * Connection-based session affinity configuration.
       * For now, a connection is defined only by an IP address of the client.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.ConnectionSessionAffinity connection = 2;
       */
      public Builder clearConnection() {
        if (connectionBuilder_ == null) {
          if (sessionAffinityCase_ == 2) {
            sessionAffinityCase_ = 0;
            sessionAffinity_ = null;
            onChanged();
          }
        } else {
          if (sessionAffinityCase_ == 2) {
            sessionAffinityCase_ = 0;
            sessionAffinity_ = null;
          }
          connectionBuilder_.clear();
        }
        return this;
      }
      /**
       * 
       * Connection-based session affinity configuration.
       * For now, a connection is defined only by an IP address of the client.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.ConnectionSessionAffinity connection = 2;
       */
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity.Builder getConnectionBuilder() {
        return getConnectionFieldBuilder().getBuilder();
      }
      /**
       * 
       * Connection-based session affinity configuration.
       * For now, a connection is defined only by an IP address of the client.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.ConnectionSessionAffinity connection = 2;
       */
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinityOrBuilder getConnectionOrBuilder() {
        if ((sessionAffinityCase_ == 2) && (connectionBuilder_ != null)) {
          return connectionBuilder_.getMessageOrBuilder();
        } else {
          if (sessionAffinityCase_ == 2) {
            return (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity) sessionAffinity_;
          }
          return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity.getDefaultInstance();
        }
      }
      /**
       * 
       * Connection-based session affinity configuration.
       * For now, a connection is defined only by an IP address of the client.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.ConnectionSessionAffinity connection = 2;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity.Builder, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinityOrBuilder> 
          getConnectionFieldBuilder() {
        if (connectionBuilder_ == null) {
          if (!(sessionAffinityCase_ == 2)) {
            sessionAffinity_ = yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity.getDefaultInstance();
          }
          connectionBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity.Builder, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinityOrBuilder>(
                  (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity) sessionAffinity_,
                  getParentForChildren(),
                  isClean());
          sessionAffinity_ = null;
        }
        sessionAffinityCase_ = 2;
        onChanged();;
        return connectionBuilder_;
      }
      private com.google.protobuf.SingleFieldBuilderV3<
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity.Builder, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinityOrBuilder> headerBuilder_;
      /**
       * 
       * HTTP-header-field-based session affinity configuration.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.HeaderSessionAffinity header = 3;
       * @return Whether the header field is set.
       */
      @java.lang.Override
      public boolean hasHeader() {
        return sessionAffinityCase_ == 3;
      }
      /**
       * 
       * HTTP-header-field-based session affinity configuration.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.HeaderSessionAffinity header = 3;
       * @return The header.
       */
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity getHeader() {
        if (headerBuilder_ == null) {
          if (sessionAffinityCase_ == 3) {
            return (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity) sessionAffinity_;
          }
          return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity.getDefaultInstance();
        } else {
          if (sessionAffinityCase_ == 3) {
            return headerBuilder_.getMessage();
          }
          return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity.getDefaultInstance();
        }
      }
      /**
       * 
       * HTTP-header-field-based session affinity configuration.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.HeaderSessionAffinity header = 3;
       */
      public Builder setHeader(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity value) {
        if (headerBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          sessionAffinity_ = value;
          onChanged();
        } else {
          headerBuilder_.setMessage(value);
        }
        sessionAffinityCase_ = 3;
        return this;
      }
      /**
       * 
       * HTTP-header-field-based session affinity configuration.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.HeaderSessionAffinity header = 3;
       */
      public Builder setHeader(
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity.Builder builderForValue) {
        if (headerBuilder_ == null) {
          sessionAffinity_ = builderForValue.build();
          onChanged();
        } else {
          headerBuilder_.setMessage(builderForValue.build());
        }
        sessionAffinityCase_ = 3;
        return this;
      }
      /**
       * 
       * HTTP-header-field-based session affinity configuration.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.HeaderSessionAffinity header = 3;
       */
      public Builder mergeHeader(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity value) {
        if (headerBuilder_ == null) {
          if (sessionAffinityCase_ == 3 &&
              sessionAffinity_ != yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity.getDefaultInstance()) {
            sessionAffinity_ = yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity.newBuilder((yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity) sessionAffinity_)
                .mergeFrom(value).buildPartial();
          } else {
            sessionAffinity_ = value;
          }
          onChanged();
        } else {
          if (sessionAffinityCase_ == 3) {
            headerBuilder_.mergeFrom(value);
          }
          headerBuilder_.setMessage(value);
        }
        sessionAffinityCase_ = 3;
        return this;
      }
      /**
       * 
       * HTTP-header-field-based session affinity configuration.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.HeaderSessionAffinity header = 3;
       */
      public Builder clearHeader() {
        if (headerBuilder_ == null) {
          if (sessionAffinityCase_ == 3) {
            sessionAffinityCase_ = 0;
            sessionAffinity_ = null;
            onChanged();
          }
        } else {
          if (sessionAffinityCase_ == 3) {
            sessionAffinityCase_ = 0;
            sessionAffinity_ = null;
          }
          headerBuilder_.clear();
        }
        return this;
      }
      /**
       * 
       * HTTP-header-field-based session affinity configuration.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.HeaderSessionAffinity header = 3;
       */
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity.Builder getHeaderBuilder() {
        return getHeaderFieldBuilder().getBuilder();
      }
      /**
       * 
       * HTTP-header-field-based session affinity configuration.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.HeaderSessionAffinity header = 3;
       */
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinityOrBuilder getHeaderOrBuilder() {
        if ((sessionAffinityCase_ == 3) && (headerBuilder_ != null)) {
          return headerBuilder_.getMessageOrBuilder();
        } else {
          if (sessionAffinityCase_ == 3) {
            return (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity) sessionAffinity_;
          }
          return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity.getDefaultInstance();
        }
      }
      /**
       * 
       * HTTP-header-field-based session affinity configuration.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.HeaderSessionAffinity header = 3;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity.Builder, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinityOrBuilder> 
          getHeaderFieldBuilder() {
        if (headerBuilder_ == null) {
          if (!(sessionAffinityCase_ == 3)) {
            sessionAffinity_ = yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity.getDefaultInstance();
          }
          headerBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity.Builder, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinityOrBuilder>(
                  (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity) sessionAffinity_,
                  getParentForChildren(),
                  isClean());
          sessionAffinity_ = null;
        }
        sessionAffinityCase_ = 3;
        onChanged();;
        return headerBuilder_;
      }
      private com.google.protobuf.SingleFieldBuilderV3<
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity.Builder, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinityOrBuilder> cookieBuilder_;
      /**
       * 
       * Cookie-based session affinity configuration.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.CookieSessionAffinity cookie = 4;
       * @return Whether the cookie field is set.
       */
      @java.lang.Override
      public boolean hasCookie() {
        return sessionAffinityCase_ == 4;
      }
      /**
       * 
       * Cookie-based session affinity configuration.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.CookieSessionAffinity cookie = 4;
       * @return The cookie.
       */
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity getCookie() {
        if (cookieBuilder_ == null) {
          if (sessionAffinityCase_ == 4) {
            return (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity) sessionAffinity_;
          }
          return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity.getDefaultInstance();
        } else {
          if (sessionAffinityCase_ == 4) {
            return cookieBuilder_.getMessage();
          }
          return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity.getDefaultInstance();
        }
      }
      /**
       * 
       * Cookie-based session affinity configuration.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.CookieSessionAffinity cookie = 4;
       */
      public Builder setCookie(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity value) {
        if (cookieBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          sessionAffinity_ = value;
          onChanged();
        } else {
          cookieBuilder_.setMessage(value);
        }
        sessionAffinityCase_ = 4;
        return this;
      }
      /**
       * 
       * Cookie-based session affinity configuration.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.CookieSessionAffinity cookie = 4;
       */
      public Builder setCookie(
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity.Builder builderForValue) {
        if (cookieBuilder_ == null) {
          sessionAffinity_ = builderForValue.build();
          onChanged();
        } else {
          cookieBuilder_.setMessage(builderForValue.build());
        }
        sessionAffinityCase_ = 4;
        return this;
      }
      /**
       * 
       * Cookie-based session affinity configuration.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.CookieSessionAffinity cookie = 4;
       */
      public Builder mergeCookie(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity value) {
        if (cookieBuilder_ == null) {
          if (sessionAffinityCase_ == 4 &&
              sessionAffinity_ != yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity.getDefaultInstance()) {
            sessionAffinity_ = yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity.newBuilder((yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity) sessionAffinity_)
                .mergeFrom(value).buildPartial();
          } else {
            sessionAffinity_ = value;
          }
          onChanged();
        } else {
          if (sessionAffinityCase_ == 4) {
            cookieBuilder_.mergeFrom(value);
          }
          cookieBuilder_.setMessage(value);
        }
        sessionAffinityCase_ = 4;
        return this;
      }
      /**
       * 
       * Cookie-based session affinity configuration.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.CookieSessionAffinity cookie = 4;
       */
      public Builder clearCookie() {
        if (cookieBuilder_ == null) {
          if (sessionAffinityCase_ == 4) {
            sessionAffinityCase_ = 0;
            sessionAffinity_ = null;
            onChanged();
          }
        } else {
          if (sessionAffinityCase_ == 4) {
            sessionAffinityCase_ = 0;
            sessionAffinity_ = null;
          }
          cookieBuilder_.clear();
        }
        return this;
      }
      /**
       * 
       * Cookie-based session affinity configuration.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.CookieSessionAffinity cookie = 4;
       */
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity.Builder getCookieBuilder() {
        return getCookieFieldBuilder().getBuilder();
      }
      /**
       * 
       * Cookie-based session affinity configuration.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.CookieSessionAffinity cookie = 4;
       */
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinityOrBuilder getCookieOrBuilder() {
        if ((sessionAffinityCase_ == 4) && (cookieBuilder_ != null)) {
          return cookieBuilder_.getMessageOrBuilder();
        } else {
          if (sessionAffinityCase_ == 4) {
            return (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity) sessionAffinity_;
          }
          return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity.getDefaultInstance();
        }
      }
      /**
       * 
       * Cookie-based session affinity configuration.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.CookieSessionAffinity cookie = 4;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity.Builder, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinityOrBuilder> 
          getCookieFieldBuilder() {
        if (cookieBuilder_ == null) {
          if (!(sessionAffinityCase_ == 4)) {
            sessionAffinity_ = yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity.getDefaultInstance();
          }
          cookieBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity.Builder, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinityOrBuilder>(
                  (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity) sessionAffinity_,
                  getParentForChildren(),
                  isClean());
          sessionAffinity_ = null;
        }
        sessionAffinityCase_ = 4;
        onChanged();;
        return cookieBuilder_;
      }
      @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:yandex.cloud.apploadbalancer.v1.GrpcBackendGroup)
    }
    // @@protoc_insertion_point(class_scope:yandex.cloud.apploadbalancer.v1.GrpcBackendGroup)
    private static final yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackendGroup DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackendGroup();
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackendGroup getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }
    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public GrpcBackendGroup parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new GrpcBackendGroup(input, extensionRegistry);
      }
    };
    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }
    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }
    @java.lang.Override
    public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackendGroup getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }
  }
  public interface HeaderSessionAffinityOrBuilder extends
      // @@protoc_insertion_point(interface_extends:yandex.cloud.apploadbalancer.v1.HeaderSessionAffinity)
      com.google.protobuf.MessageOrBuilder {
    /**
     * 
     * Name of the HTTP header field that is used for session affinity.
     * 
     *
     * string header_name = 1 [(.yandex.cloud.length) = "1-256"];
     * @return The headerName.
     */
    java.lang.String getHeaderName();
    /**
     * 
     * Name of the HTTP header field that is used for session affinity.
     * 
     *
     * string header_name = 1 [(.yandex.cloud.length) = "1-256"];
     * @return The bytes for headerName.
     */
    com.google.protobuf.ByteString
        getHeaderNameBytes();
  }
  /**
   * 
   * A resource for HTTP-header-field-based session affinity configuration.
   * 
   *
   * Protobuf type {@code yandex.cloud.apploadbalancer.v1.HeaderSessionAffinity}
   */
  public static final class HeaderSessionAffinity extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:yandex.cloud.apploadbalancer.v1.HeaderSessionAffinity)
      HeaderSessionAffinityOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use HeaderSessionAffinity.newBuilder() to construct.
    private HeaderSessionAffinity(com.google.protobuf.GeneratedMessageV3.Builder> builder) {
      super(builder);
    }
    private HeaderSessionAffinity() {
      headerName_ = "";
    }
    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new HeaderSessionAffinity();
    }
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private HeaderSessionAffinity(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();
              headerName_ = s;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_HeaderSessionAffinity_descriptor;
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_HeaderSessionAffinity_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity.class, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity.Builder.class);
    }
    public static final int HEADER_NAME_FIELD_NUMBER = 1;
    private volatile java.lang.Object headerName_;
    /**
     * 
     * Name of the HTTP header field that is used for session affinity.
     * 
     *
     * string header_name = 1 [(.yandex.cloud.length) = "1-256"];
     * @return The headerName.
     */
    @java.lang.Override
    public java.lang.String getHeaderName() {
      java.lang.Object ref = headerName_;
      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();
        headerName_ = s;
        return s;
      }
    }
    /**
     * 
     * Name of the HTTP header field that is used for session affinity.
     * 
     *
     * string header_name = 1 [(.yandex.cloud.length) = "1-256"];
     * @return The bytes for headerName.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getHeaderNameBytes() {
      java.lang.Object ref = headerName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        headerName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;
      memoizedIsInitialized = 1;
      return true;
    }
    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(headerName_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, headerName_);
      }
      unknownFields.writeTo(output);
    }
    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;
      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(headerName_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, headerName_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity)) {
        return super.equals(obj);
      }
      yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity other = (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity) obj;
      if (!getHeaderName()
          .equals(other.getHeaderName())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }
    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + HEADER_NAME_FIELD_NUMBER;
      hash = (53 * hash) + getHeaderName().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity 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 yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity 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 yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity 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(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity 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;
    }
    /**
     * 
     * A resource for HTTP-header-field-based session affinity configuration.
     * 
     *
     * Protobuf type {@code yandex.cloud.apploadbalancer.v1.HeaderSessionAffinity}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:yandex.cloud.apploadbalancer.v1.HeaderSessionAffinity)
        yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinityOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_HeaderSessionAffinity_descriptor;
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_HeaderSessionAffinity_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity.class, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity.Builder.class);
      }
      // Construct using yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        headerName_ = "";
        return this;
      }
      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_HeaderSessionAffinity_descriptor;
      }
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity getDefaultInstanceForType() {
        return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity.getDefaultInstance();
      }
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity build() {
        yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity buildPartial() {
        yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity result = new yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity(this);
        result.headerName_ = headerName_;
        onBuilt();
        return result;
      }
      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity) {
          return mergeFrom((yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      public Builder mergeFrom(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity other) {
        if (other == yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity.getDefaultInstance()) return this;
        if (!other.getHeaderName().isEmpty()) {
          headerName_ = other.headerName_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }
      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }
      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private java.lang.Object headerName_ = "";
      /**
       * 
       * Name of the HTTP header field that is used for session affinity.
       * 
       *
       * string header_name = 1 [(.yandex.cloud.length) = "1-256"];
       * @return The headerName.
       */
      public java.lang.String getHeaderName() {
        java.lang.Object ref = headerName_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          headerName_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * 
       * Name of the HTTP header field that is used for session affinity.
       * 
       *
       * string header_name = 1 [(.yandex.cloud.length) = "1-256"];
       * @return The bytes for headerName.
       */
      public com.google.protobuf.ByteString
          getHeaderNameBytes() {
        java.lang.Object ref = headerName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          headerName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * 
       * Name of the HTTP header field that is used for session affinity.
       * 
       *
       * string header_name = 1 [(.yandex.cloud.length) = "1-256"];
       * @param value The headerName to set.
       * @return This builder for chaining.
       */
      public Builder setHeaderName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        headerName_ = value;
        onChanged();
        return this;
      }
      /**
       * 
       * Name of the HTTP header field that is used for session affinity.
       * 
       *
       * string header_name = 1 [(.yandex.cloud.length) = "1-256"];
       * @return This builder for chaining.
       */
      public Builder clearHeaderName() {
        
        headerName_ = getDefaultInstance().getHeaderName();
        onChanged();
        return this;
      }
      /**
       * 
       * Name of the HTTP header field that is used for session affinity.
       * 
       *
       * string header_name = 1 [(.yandex.cloud.length) = "1-256"];
       * @param value The bytes for headerName to set.
       * @return This builder for chaining.
       */
      public Builder setHeaderNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        headerName_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }
      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }
      // @@protoc_insertion_point(builder_scope:yandex.cloud.apploadbalancer.v1.HeaderSessionAffinity)
    }
    // @@protoc_insertion_point(class_scope:yandex.cloud.apploadbalancer.v1.HeaderSessionAffinity)
    private static final yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity();
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }
    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public HeaderSessionAffinity parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new HeaderSessionAffinity(input, extensionRegistry);
      }
    };
    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }
    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }
    @java.lang.Override
    public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HeaderSessionAffinity getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }
  }
  public interface CookieSessionAffinityOrBuilder extends
      // @@protoc_insertion_point(interface_extends:yandex.cloud.apploadbalancer.v1.CookieSessionAffinity)
      com.google.protobuf.MessageOrBuilder {
    /**
     * 
     * Name of the cookie that is used for session affinity.
     * 
     *
     * string name = 1 [(.yandex.cloud.length) = "1-256"];
     * @return The name.
     */
    java.lang.String getName();
    /**
     * 
     * Name of the cookie that is used for session affinity.
     * 
     *
     * string name = 1 [(.yandex.cloud.length) = "1-256"];
     * @return The bytes for name.
     */
    com.google.protobuf.ByteString
        getNameBytes();
    /**
     * 
     * Maximum age of cookies that are generated for sessions.
     * If set to `0`, session cookies are used, which are stored by clients in temporary memory and are deleted
     * on client restarts.
     * If not set, the balancer does not generate cookies and only uses incoming ones for establishing session affinity.
     * 
     *
     * .google.protobuf.Duration ttl = 2;
     * @return Whether the ttl field is set.
     */
    boolean hasTtl();
    /**
     * 
     * Maximum age of cookies that are generated for sessions.
     * If set to `0`, session cookies are used, which are stored by clients in temporary memory and are deleted
     * on client restarts.
     * If not set, the balancer does not generate cookies and only uses incoming ones for establishing session affinity.
     * 
     *
     * .google.protobuf.Duration ttl = 2;
     * @return The ttl.
     */
    com.google.protobuf.Duration getTtl();
    /**
     * 
     * Maximum age of cookies that are generated for sessions.
     * If set to `0`, session cookies are used, which are stored by clients in temporary memory and are deleted
     * on client restarts.
     * If not set, the balancer does not generate cookies and only uses incoming ones for establishing session affinity.
     * 
     *
     * .google.protobuf.Duration ttl = 2;
     */
    com.google.protobuf.DurationOrBuilder getTtlOrBuilder();
  }
  /**
   * 
   * A resource for cookie-based session affinity configuration.
   * 
   *
   * Protobuf type {@code yandex.cloud.apploadbalancer.v1.CookieSessionAffinity}
   */
  public static final class CookieSessionAffinity extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:yandex.cloud.apploadbalancer.v1.CookieSessionAffinity)
      CookieSessionAffinityOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use CookieSessionAffinity.newBuilder() to construct.
    private CookieSessionAffinity(com.google.protobuf.GeneratedMessageV3.Builder> builder) {
      super(builder);
    }
    private CookieSessionAffinity() {
      name_ = "";
    }
    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new CookieSessionAffinity();
    }
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private CookieSessionAffinity(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();
              name_ = s;
              break;
            }
            case 18: {
              com.google.protobuf.Duration.Builder subBuilder = null;
              if (ttl_ != null) {
                subBuilder = ttl_.toBuilder();
              }
              ttl_ = input.readMessage(com.google.protobuf.Duration.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(ttl_);
                ttl_ = subBuilder.buildPartial();
              }
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_CookieSessionAffinity_descriptor;
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_CookieSessionAffinity_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity.class, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity.Builder.class);
    }
    public static final int NAME_FIELD_NUMBER = 1;
    private volatile java.lang.Object name_;
    /**
     * 
     * Name of the cookie that is used for session affinity.
     * 
     *
     * string name = 1 [(.yandex.cloud.length) = "1-256"];
     * @return The name.
     */
    @java.lang.Override
    public java.lang.String getName() {
      java.lang.Object ref = name_;
      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();
        name_ = s;
        return s;
      }
    }
    /**
     * 
     * Name of the cookie that is used for session affinity.
     * 
     *
     * string name = 1 [(.yandex.cloud.length) = "1-256"];
     * @return The bytes for name.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getNameBytes() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    public static final int TTL_FIELD_NUMBER = 2;
    private com.google.protobuf.Duration ttl_;
    /**
     * 
     * Maximum age of cookies that are generated for sessions.
     * If set to `0`, session cookies are used, which are stored by clients in temporary memory and are deleted
     * on client restarts.
     * If not set, the balancer does not generate cookies and only uses incoming ones for establishing session affinity.
     * 
     *
     * .google.protobuf.Duration ttl = 2;
     * @return Whether the ttl field is set.
     */
    @java.lang.Override
    public boolean hasTtl() {
      return ttl_ != null;
    }
    /**
     * 
     * Maximum age of cookies that are generated for sessions.
     * If set to `0`, session cookies are used, which are stored by clients in temporary memory and are deleted
     * on client restarts.
     * If not set, the balancer does not generate cookies and only uses incoming ones for establishing session affinity.
     * 
     *
     * .google.protobuf.Duration ttl = 2;
     * @return The ttl.
     */
    @java.lang.Override
    public com.google.protobuf.Duration getTtl() {
      return ttl_ == null ? com.google.protobuf.Duration.getDefaultInstance() : ttl_;
    }
    /**
     * 
     * Maximum age of cookies that are generated for sessions.
     * If set to `0`, session cookies are used, which are stored by clients in temporary memory and are deleted
     * on client restarts.
     * If not set, the balancer does not generate cookies and only uses incoming ones for establishing session affinity.
     * 
     *
     * .google.protobuf.Duration ttl = 2;
     */
    @java.lang.Override
    public com.google.protobuf.DurationOrBuilder getTtlOrBuilder() {
      return getTtl();
    }
    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;
      memoizedIsInitialized = 1;
      return true;
    }
    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
      }
      if (ttl_ != null) {
        output.writeMessage(2, getTtl());
      }
      unknownFields.writeTo(output);
    }
    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;
      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
      }
      if (ttl_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getTtl());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity)) {
        return super.equals(obj);
      }
      yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity other = (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity) obj;
      if (!getName()
          .equals(other.getName())) return false;
      if (hasTtl() != other.hasTtl()) return false;
      if (hasTtl()) {
        if (!getTtl()
            .equals(other.getTtl())) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }
    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + NAME_FIELD_NUMBER;
      hash = (53 * hash) + getName().hashCode();
      if (hasTtl()) {
        hash = (37 * hash) + TTL_FIELD_NUMBER;
        hash = (53 * hash) + getTtl().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity 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 yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity 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 yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity 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(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity 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;
    }
    /**
     * 
     * A resource for cookie-based session affinity configuration.
     * 
     *
     * Protobuf type {@code yandex.cloud.apploadbalancer.v1.CookieSessionAffinity}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:yandex.cloud.apploadbalancer.v1.CookieSessionAffinity)
        yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinityOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_CookieSessionAffinity_descriptor;
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_CookieSessionAffinity_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity.class, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity.Builder.class);
      }
      // Construct using yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        name_ = "";
        if (ttlBuilder_ == null) {
          ttl_ = null;
        } else {
          ttl_ = null;
          ttlBuilder_ = null;
        }
        return this;
      }
      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_CookieSessionAffinity_descriptor;
      }
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity getDefaultInstanceForType() {
        return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity.getDefaultInstance();
      }
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity build() {
        yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity buildPartial() {
        yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity result = new yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity(this);
        result.name_ = name_;
        if (ttlBuilder_ == null) {
          result.ttl_ = ttl_;
        } else {
          result.ttl_ = ttlBuilder_.build();
        }
        onBuilt();
        return result;
      }
      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity) {
          return mergeFrom((yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      public Builder mergeFrom(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity other) {
        if (other == yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity.getDefaultInstance()) return this;
        if (!other.getName().isEmpty()) {
          name_ = other.name_;
          onChanged();
        }
        if (other.hasTtl()) {
          mergeTtl(other.getTtl());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }
      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }
      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private java.lang.Object name_ = "";
      /**
       * 
       * Name of the cookie that is used for session affinity.
       * 
       *
       * string name = 1 [(.yandex.cloud.length) = "1-256"];
       * @return The name.
       */
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          name_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * 
       * Name of the cookie that is used for session affinity.
       * 
       *
       * string name = 1 [(.yandex.cloud.length) = "1-256"];
       * @return The bytes for name.
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * 
       * Name of the cookie that is used for session affinity.
       * 
       *
       * string name = 1 [(.yandex.cloud.length) = "1-256"];
       * @param value The name to set.
       * @return This builder for chaining.
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        name_ = value;
        onChanged();
        return this;
      }
      /**
       * 
       * Name of the cookie that is used for session affinity.
       * 
       *
       * string name = 1 [(.yandex.cloud.length) = "1-256"];
       * @return This builder for chaining.
       */
      public Builder clearName() {
        
        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      /**
       * 
       * Name of the cookie that is used for session affinity.
       * 
       *
       * string name = 1 [(.yandex.cloud.length) = "1-256"];
       * @param value The bytes for name to set.
       * @return This builder for chaining.
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        name_ = value;
        onChanged();
        return this;
      }
      private com.google.protobuf.Duration ttl_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Duration, com.google.protobuf.Duration.Builder, com.google.protobuf.DurationOrBuilder> ttlBuilder_;
      /**
       * 
       * Maximum age of cookies that are generated for sessions.
       * If set to `0`, session cookies are used, which are stored by clients in temporary memory and are deleted
       * on client restarts.
       * If not set, the balancer does not generate cookies and only uses incoming ones for establishing session affinity.
       * 
       *
       * .google.protobuf.Duration ttl = 2;
       * @return Whether the ttl field is set.
       */
      public boolean hasTtl() {
        return ttlBuilder_ != null || ttl_ != null;
      }
      /**
       * 
       * Maximum age of cookies that are generated for sessions.
       * If set to `0`, session cookies are used, which are stored by clients in temporary memory and are deleted
       * on client restarts.
       * If not set, the balancer does not generate cookies and only uses incoming ones for establishing session affinity.
       * 
       *
       * .google.protobuf.Duration ttl = 2;
       * @return The ttl.
       */
      public com.google.protobuf.Duration getTtl() {
        if (ttlBuilder_ == null) {
          return ttl_ == null ? com.google.protobuf.Duration.getDefaultInstance() : ttl_;
        } else {
          return ttlBuilder_.getMessage();
        }
      }
      /**
       * 
       * Maximum age of cookies that are generated for sessions.
       * If set to `0`, session cookies are used, which are stored by clients in temporary memory and are deleted
       * on client restarts.
       * If not set, the balancer does not generate cookies and only uses incoming ones for establishing session affinity.
       * 
       *
       * .google.protobuf.Duration ttl = 2;
       */
      public Builder setTtl(com.google.protobuf.Duration value) {
        if (ttlBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ttl_ = value;
          onChanged();
        } else {
          ttlBuilder_.setMessage(value);
        }
        return this;
      }
      /**
       * 
       * Maximum age of cookies that are generated for sessions.
       * If set to `0`, session cookies are used, which are stored by clients in temporary memory and are deleted
       * on client restarts.
       * If not set, the balancer does not generate cookies and only uses incoming ones for establishing session affinity.
       * 
       *
       * .google.protobuf.Duration ttl = 2;
       */
      public Builder setTtl(
          com.google.protobuf.Duration.Builder builderForValue) {
        if (ttlBuilder_ == null) {
          ttl_ = builderForValue.build();
          onChanged();
        } else {
          ttlBuilder_.setMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * 
       * Maximum age of cookies that are generated for sessions.
       * If set to `0`, session cookies are used, which are stored by clients in temporary memory and are deleted
       * on client restarts.
       * If not set, the balancer does not generate cookies and only uses incoming ones for establishing session affinity.
       * 
       *
       * .google.protobuf.Duration ttl = 2;
       */
      public Builder mergeTtl(com.google.protobuf.Duration value) {
        if (ttlBuilder_ == null) {
          if (ttl_ != null) {
            ttl_ =
              com.google.protobuf.Duration.newBuilder(ttl_).mergeFrom(value).buildPartial();
          } else {
            ttl_ = value;
          }
          onChanged();
        } else {
          ttlBuilder_.mergeFrom(value);
        }
        return this;
      }
      /**
       * 
       * Maximum age of cookies that are generated for sessions.
       * If set to `0`, session cookies are used, which are stored by clients in temporary memory and are deleted
       * on client restarts.
       * If not set, the balancer does not generate cookies and only uses incoming ones for establishing session affinity.
       * 
       *
       * .google.protobuf.Duration ttl = 2;
       */
      public Builder clearTtl() {
        if (ttlBuilder_ == null) {
          ttl_ = null;
          onChanged();
        } else {
          ttl_ = null;
          ttlBuilder_ = null;
        }
        return this;
      }
      /**
       * 
       * Maximum age of cookies that are generated for sessions.
       * If set to `0`, session cookies are used, which are stored by clients in temporary memory and are deleted
       * on client restarts.
       * If not set, the balancer does not generate cookies and only uses incoming ones for establishing session affinity.
       * 
       *
       * .google.protobuf.Duration ttl = 2;
       */
      public com.google.protobuf.Duration.Builder getTtlBuilder() {
        
        onChanged();
        return getTtlFieldBuilder().getBuilder();
      }
      /**
       * 
       * Maximum age of cookies that are generated for sessions.
       * If set to `0`, session cookies are used, which are stored by clients in temporary memory and are deleted
       * on client restarts.
       * If not set, the balancer does not generate cookies and only uses incoming ones for establishing session affinity.
       * 
       *
       * .google.protobuf.Duration ttl = 2;
       */
      public com.google.protobuf.DurationOrBuilder getTtlOrBuilder() {
        if (ttlBuilder_ != null) {
          return ttlBuilder_.getMessageOrBuilder();
        } else {
          return ttl_ == null ?
              com.google.protobuf.Duration.getDefaultInstance() : ttl_;
        }
      }
      /**
       * 
       * Maximum age of cookies that are generated for sessions.
       * If set to `0`, session cookies are used, which are stored by clients in temporary memory and are deleted
       * on client restarts.
       * If not set, the balancer does not generate cookies and only uses incoming ones for establishing session affinity.
       * 
       *
       * .google.protobuf.Duration ttl = 2;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Duration, com.google.protobuf.Duration.Builder, com.google.protobuf.DurationOrBuilder> 
          getTtlFieldBuilder() {
        if (ttlBuilder_ == null) {
          ttlBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.protobuf.Duration, com.google.protobuf.Duration.Builder, com.google.protobuf.DurationOrBuilder>(
                  getTtl(),
                  getParentForChildren(),
                  isClean());
          ttl_ = null;
        }
        return ttlBuilder_;
      }
      @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:yandex.cloud.apploadbalancer.v1.CookieSessionAffinity)
    }
    // @@protoc_insertion_point(class_scope:yandex.cloud.apploadbalancer.v1.CookieSessionAffinity)
    private static final yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity();
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }
    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public CookieSessionAffinity parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new CookieSessionAffinity(input, extensionRegistry);
      }
    };
    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }
    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }
    @java.lang.Override
    public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.CookieSessionAffinity getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }
  }
  public interface ConnectionSessionAffinityOrBuilder extends
      // @@protoc_insertion_point(interface_extends:yandex.cloud.apploadbalancer.v1.ConnectionSessionAffinity)
      com.google.protobuf.MessageOrBuilder {
    /**
     * 
     * Specifies whether an IP address of the client is used to define a connection for session affinity.
     * 
     *
     * bool source_ip = 1;
     * @return The sourceIp.
     */
    boolean getSourceIp();
  }
  /**
   * 
   * A resource for connection-based session affinity configuration.
   * 
   *
   * Protobuf type {@code yandex.cloud.apploadbalancer.v1.ConnectionSessionAffinity}
   */
  public static final class ConnectionSessionAffinity extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:yandex.cloud.apploadbalancer.v1.ConnectionSessionAffinity)
      ConnectionSessionAffinityOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ConnectionSessionAffinity.newBuilder() to construct.
    private ConnectionSessionAffinity(com.google.protobuf.GeneratedMessageV3.Builder> builder) {
      super(builder);
    }
    private ConnectionSessionAffinity() {
    }
    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ConnectionSessionAffinity();
    }
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private ConnectionSessionAffinity(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 8: {
              sourceIp_ = input.readBool();
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_ConnectionSessionAffinity_descriptor;
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_ConnectionSessionAffinity_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity.class, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity.Builder.class);
    }
    public static final int SOURCE_IP_FIELD_NUMBER = 1;
    private boolean sourceIp_;
    /**
     * 
     * Specifies whether an IP address of the client is used to define a connection for session affinity.
     * 
     *
     * bool source_ip = 1;
     * @return The sourceIp.
     */
    @java.lang.Override
    public boolean getSourceIp() {
      return sourceIp_;
    }
    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 (sourceIp_ != false) {
        output.writeBool(1, sourceIp_);
      }
      unknownFields.writeTo(output);
    }
    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;
      size = 0;
      if (sourceIp_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(1, sourceIp_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity)) {
        return super.equals(obj);
      }
      yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity other = (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity) obj;
      if (getSourceIp()
          != other.getSourceIp()) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }
    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + SOURCE_IP_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getSourceIp());
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity 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 yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity 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 yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity 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(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity 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;
    }
    /**
     * 
     * A resource for connection-based session affinity configuration.
     * 
     *
     * Protobuf type {@code yandex.cloud.apploadbalancer.v1.ConnectionSessionAffinity}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:yandex.cloud.apploadbalancer.v1.ConnectionSessionAffinity)
        yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinityOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_ConnectionSessionAffinity_descriptor;
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_ConnectionSessionAffinity_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity.class, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity.Builder.class);
      }
      // Construct using yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        sourceIp_ = false;
        return this;
      }
      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_ConnectionSessionAffinity_descriptor;
      }
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity getDefaultInstanceForType() {
        return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity.getDefaultInstance();
      }
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity build() {
        yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity buildPartial() {
        yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity result = new yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity(this);
        result.sourceIp_ = sourceIp_;
        onBuilt();
        return result;
      }
      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity) {
          return mergeFrom((yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      public Builder mergeFrom(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity other) {
        if (other == yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity.getDefaultInstance()) return this;
        if (other.getSourceIp() != false) {
          setSourceIp(other.getSourceIp());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }
      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }
      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private boolean sourceIp_ ;
      /**
       * 
       * Specifies whether an IP address of the client is used to define a connection for session affinity.
       * 
       *
       * bool source_ip = 1;
       * @return The sourceIp.
       */
      @java.lang.Override
      public boolean getSourceIp() {
        return sourceIp_;
      }
      /**
       * 
       * Specifies whether an IP address of the client is used to define a connection for session affinity.
       * 
       *
       * bool source_ip = 1;
       * @param value The sourceIp to set.
       * @return This builder for chaining.
       */
      public Builder setSourceIp(boolean value) {
        
        sourceIp_ = value;
        onChanged();
        return this;
      }
      /**
       * 
       * Specifies whether an IP address of the client is used to define a connection for session affinity.
       * 
       *
       * bool source_ip = 1;
       * @return This builder for chaining.
       */
      public Builder clearSourceIp() {
        
        sourceIp_ = false;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }
      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }
      // @@protoc_insertion_point(builder_scope:yandex.cloud.apploadbalancer.v1.ConnectionSessionAffinity)
    }
    // @@protoc_insertion_point(class_scope:yandex.cloud.apploadbalancer.v1.ConnectionSessionAffinity)
    private static final yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity();
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }
    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public ConnectionSessionAffinity parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new ConnectionSessionAffinity(input, extensionRegistry);
      }
    };
    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }
    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }
    @java.lang.Override
    public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.ConnectionSessionAffinity getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }
  }
  public interface LoadBalancingConfigOrBuilder extends
      // @@protoc_insertion_point(interface_extends:yandex.cloud.apploadbalancer.v1.LoadBalancingConfig)
      com.google.protobuf.MessageOrBuilder {
    /**
     * 
     * Threshold for panic mode.
     * If percentage of healthy backends in the group drops below threshold,
     * panic mode will be activated and traffic will be routed to all backends, regardless of their health check status.
     * This helps to avoid overloading healthy backends.
     * For details about panic mode, see [documentation](/docs/application-load-balancer/concepts/backend-group#panic-mode).
     * If the value is `0`, panic mode will never be activated and traffic is routed only to healthy backends at all times.
     * Default value: `0`.
     * 
     *
     * int64 panic_threshold = 1 [(.yandex.cloud.value) = "0-100"];
     * @return The panicThreshold.
     */
    long getPanicThreshold();
    /**
     * 
     * Percentage of traffic that a load balancer node sends to healthy backends in its availability zone.
     * The rest is divided equally between other zones. For details about zone-aware routing, see
     * [documentation](/docs/application-load-balancer/concepts/backend-group#locality).
     * If there are no healthy backends in an availability zone, all the traffic is divided between other zones.
     * If [strict_locality] is `true`, the specified value is ignored.
     * A load balancer node sends all the traffic within its availability zone, regardless of backends' health.
     * Default value: `0`.
     * 
     *
     * int64 locality_aware_routing_percent = 2 [(.yandex.cloud.value) = "0-100"];
     * @return The localityAwareRoutingPercent.
     */
    long getLocalityAwareRoutingPercent();
    /**
     * 
     * Specifies whether a load balancer node should only send traffic to backends in its availability zone,
     * regardless of their health, and ignore backends in other zones.
     * If set to `true` and there are no healthy backends in the zone, the node in this zone will respond
     * to incoming traffic with errors.
     * For details about strict locality, see [documentation](/docs/application-load-balancer/concepts/backend-group#locality).
     * If `strict_locality` is `true`, the value specified in [locality_aware_routing_percent] is ignored.
     * Default value: `false`.
     * 
     *
     * bool strict_locality = 3;
     * @return The strictLocality.
     */
    boolean getStrictLocality();
    /**
     * 
     * Load balancing mode for the backend.
     * For details about load balancing modes, see
     * [documentation](/docs/application-load-balancer/concepts/backend-group#balancing-mode).
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.LoadBalancingMode mode = 4;
     * @return The enum numeric value on the wire for mode.
     */
    int getModeValue();
    /**
     * 
     * Load balancing mode for the backend.
     * For details about load balancing modes, see
     * [documentation](/docs/application-load-balancer/concepts/backend-group#balancing-mode).
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.LoadBalancingMode mode = 4;
     * @return The mode.
     */
    yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingMode getMode();
  }
  /**
   * 
   * A load balancing configuration resource.
   * 
   *
   * Protobuf type {@code yandex.cloud.apploadbalancer.v1.LoadBalancingConfig}
   */
  public static final class LoadBalancingConfig extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:yandex.cloud.apploadbalancer.v1.LoadBalancingConfig)
      LoadBalancingConfigOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use LoadBalancingConfig.newBuilder() to construct.
    private LoadBalancingConfig(com.google.protobuf.GeneratedMessageV3.Builder> builder) {
      super(builder);
    }
    private LoadBalancingConfig() {
      mode_ = 0;
    }
    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new LoadBalancingConfig();
    }
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private LoadBalancingConfig(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 8: {
              panicThreshold_ = input.readInt64();
              break;
            }
            case 16: {
              localityAwareRoutingPercent_ = input.readInt64();
              break;
            }
            case 24: {
              strictLocality_ = input.readBool();
              break;
            }
            case 32: {
              int rawValue = input.readEnum();
              mode_ = rawValue;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_LoadBalancingConfig_descriptor;
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_LoadBalancingConfig_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig.class, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig.Builder.class);
    }
    public static final int PANIC_THRESHOLD_FIELD_NUMBER = 1;
    private long panicThreshold_;
    /**
     * 
     * Threshold for panic mode.
     * If percentage of healthy backends in the group drops below threshold,
     * panic mode will be activated and traffic will be routed to all backends, regardless of their health check status.
     * This helps to avoid overloading healthy backends.
     * For details about panic mode, see [documentation](/docs/application-load-balancer/concepts/backend-group#panic-mode).
     * If the value is `0`, panic mode will never be activated and traffic is routed only to healthy backends at all times.
     * Default value: `0`.
     * 
     *
     * int64 panic_threshold = 1 [(.yandex.cloud.value) = "0-100"];
     * @return The panicThreshold.
     */
    @java.lang.Override
    public long getPanicThreshold() {
      return panicThreshold_;
    }
    public static final int LOCALITY_AWARE_ROUTING_PERCENT_FIELD_NUMBER = 2;
    private long localityAwareRoutingPercent_;
    /**
     * 
     * Percentage of traffic that a load balancer node sends to healthy backends in its availability zone.
     * The rest is divided equally between other zones. For details about zone-aware routing, see
     * [documentation](/docs/application-load-balancer/concepts/backend-group#locality).
     * If there are no healthy backends in an availability zone, all the traffic is divided between other zones.
     * If [strict_locality] is `true`, the specified value is ignored.
     * A load balancer node sends all the traffic within its availability zone, regardless of backends' health.
     * Default value: `0`.
     * 
     *
     * int64 locality_aware_routing_percent = 2 [(.yandex.cloud.value) = "0-100"];
     * @return The localityAwareRoutingPercent.
     */
    @java.lang.Override
    public long getLocalityAwareRoutingPercent() {
      return localityAwareRoutingPercent_;
    }
    public static final int STRICT_LOCALITY_FIELD_NUMBER = 3;
    private boolean strictLocality_;
    /**
     * 
     * Specifies whether a load balancer node should only send traffic to backends in its availability zone,
     * regardless of their health, and ignore backends in other zones.
     * If set to `true` and there are no healthy backends in the zone, the node in this zone will respond
     * to incoming traffic with errors.
     * For details about strict locality, see [documentation](/docs/application-load-balancer/concepts/backend-group#locality).
     * If `strict_locality` is `true`, the value specified in [locality_aware_routing_percent] is ignored.
     * Default value: `false`.
     * 
     *
     * bool strict_locality = 3;
     * @return The strictLocality.
     */
    @java.lang.Override
    public boolean getStrictLocality() {
      return strictLocality_;
    }
    public static final int MODE_FIELD_NUMBER = 4;
    private int mode_;
    /**
     * 
     * Load balancing mode for the backend.
     * For details about load balancing modes, see
     * [documentation](/docs/application-load-balancer/concepts/backend-group#balancing-mode).
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.LoadBalancingMode mode = 4;
     * @return The enum numeric value on the wire for mode.
     */
    @java.lang.Override public int getModeValue() {
      return mode_;
    }
    /**
     * 
     * Load balancing mode for the backend.
     * For details about load balancing modes, see
     * [documentation](/docs/application-load-balancer/concepts/backend-group#balancing-mode).
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.LoadBalancingMode mode = 4;
     * @return The mode.
     */
    @java.lang.Override public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingMode getMode() {
      @SuppressWarnings("deprecation")
      yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingMode result = yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingMode.valueOf(mode_);
      return result == null ? yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingMode.UNRECOGNIZED : result;
    }
    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 (panicThreshold_ != 0L) {
        output.writeInt64(1, panicThreshold_);
      }
      if (localityAwareRoutingPercent_ != 0L) {
        output.writeInt64(2, localityAwareRoutingPercent_);
      }
      if (strictLocality_ != false) {
        output.writeBool(3, strictLocality_);
      }
      if (mode_ != yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingMode.ROUND_ROBIN.getNumber()) {
        output.writeEnum(4, mode_);
      }
      unknownFields.writeTo(output);
    }
    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;
      size = 0;
      if (panicThreshold_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(1, panicThreshold_);
      }
      if (localityAwareRoutingPercent_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(2, localityAwareRoutingPercent_);
      }
      if (strictLocality_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(3, strictLocality_);
      }
      if (mode_ != yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingMode.ROUND_ROBIN.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(4, mode_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig)) {
        return super.equals(obj);
      }
      yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig other = (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig) obj;
      if (getPanicThreshold()
          != other.getPanicThreshold()) return false;
      if (getLocalityAwareRoutingPercent()
          != other.getLocalityAwareRoutingPercent()) return false;
      if (getStrictLocality()
          != other.getStrictLocality()) return false;
      if (mode_ != other.mode_) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }
    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + PANIC_THRESHOLD_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getPanicThreshold());
      hash = (37 * hash) + LOCALITY_AWARE_ROUTING_PERCENT_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getLocalityAwareRoutingPercent());
      hash = (37 * hash) + STRICT_LOCALITY_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getStrictLocality());
      hash = (37 * hash) + MODE_FIELD_NUMBER;
      hash = (53 * hash) + mode_;
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig 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 yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig 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 yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig 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(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig 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;
    }
    /**
     * 
     * A load balancing configuration resource.
     * 
     *
     * Protobuf type {@code yandex.cloud.apploadbalancer.v1.LoadBalancingConfig}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:yandex.cloud.apploadbalancer.v1.LoadBalancingConfig)
        yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfigOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_LoadBalancingConfig_descriptor;
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_LoadBalancingConfig_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig.class, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig.Builder.class);
      }
      // Construct using yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        panicThreshold_ = 0L;
        localityAwareRoutingPercent_ = 0L;
        strictLocality_ = false;
        mode_ = 0;
        return this;
      }
      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_LoadBalancingConfig_descriptor;
      }
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig getDefaultInstanceForType() {
        return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig.getDefaultInstance();
      }
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig build() {
        yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig buildPartial() {
        yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig result = new yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig(this);
        result.panicThreshold_ = panicThreshold_;
        result.localityAwareRoutingPercent_ = localityAwareRoutingPercent_;
        result.strictLocality_ = strictLocality_;
        result.mode_ = mode_;
        onBuilt();
        return result;
      }
      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig) {
          return mergeFrom((yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      public Builder mergeFrom(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig other) {
        if (other == yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig.getDefaultInstance()) return this;
        if (other.getPanicThreshold() != 0L) {
          setPanicThreshold(other.getPanicThreshold());
        }
        if (other.getLocalityAwareRoutingPercent() != 0L) {
          setLocalityAwareRoutingPercent(other.getLocalityAwareRoutingPercent());
        }
        if (other.getStrictLocality() != false) {
          setStrictLocality(other.getStrictLocality());
        }
        if (other.mode_ != 0) {
          setModeValue(other.getModeValue());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }
      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }
      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private long panicThreshold_ ;
      /**
       * 
       * Threshold for panic mode.
       * If percentage of healthy backends in the group drops below threshold,
       * panic mode will be activated and traffic will be routed to all backends, regardless of their health check status.
       * This helps to avoid overloading healthy backends.
       * For details about panic mode, see [documentation](/docs/application-load-balancer/concepts/backend-group#panic-mode).
       * If the value is `0`, panic mode will never be activated and traffic is routed only to healthy backends at all times.
       * Default value: `0`.
       * 
       *
       * int64 panic_threshold = 1 [(.yandex.cloud.value) = "0-100"];
       * @return The panicThreshold.
       */
      @java.lang.Override
      public long getPanicThreshold() {
        return panicThreshold_;
      }
      /**
       * 
       * Threshold for panic mode.
       * If percentage of healthy backends in the group drops below threshold,
       * panic mode will be activated and traffic will be routed to all backends, regardless of their health check status.
       * This helps to avoid overloading healthy backends.
       * For details about panic mode, see [documentation](/docs/application-load-balancer/concepts/backend-group#panic-mode).
       * If the value is `0`, panic mode will never be activated and traffic is routed only to healthy backends at all times.
       * Default value: `0`.
       * 
       *
       * int64 panic_threshold = 1 [(.yandex.cloud.value) = "0-100"];
       * @param value The panicThreshold to set.
       * @return This builder for chaining.
       */
      public Builder setPanicThreshold(long value) {
        
        panicThreshold_ = value;
        onChanged();
        return this;
      }
      /**
       * 
       * Threshold for panic mode.
       * If percentage of healthy backends in the group drops below threshold,
       * panic mode will be activated and traffic will be routed to all backends, regardless of their health check status.
       * This helps to avoid overloading healthy backends.
       * For details about panic mode, see [documentation](/docs/application-load-balancer/concepts/backend-group#panic-mode).
       * If the value is `0`, panic mode will never be activated and traffic is routed only to healthy backends at all times.
       * Default value: `0`.
       * 
       *
       * int64 panic_threshold = 1 [(.yandex.cloud.value) = "0-100"];
       * @return This builder for chaining.
       */
      public Builder clearPanicThreshold() {
        
        panicThreshold_ = 0L;
        onChanged();
        return this;
      }
      private long localityAwareRoutingPercent_ ;
      /**
       * 
       * Percentage of traffic that a load balancer node sends to healthy backends in its availability zone.
       * The rest is divided equally between other zones. For details about zone-aware routing, see
       * [documentation](/docs/application-load-balancer/concepts/backend-group#locality).
       * If there are no healthy backends in an availability zone, all the traffic is divided between other zones.
       * If [strict_locality] is `true`, the specified value is ignored.
       * A load balancer node sends all the traffic within its availability zone, regardless of backends' health.
       * Default value: `0`.
       * 
       *
       * int64 locality_aware_routing_percent = 2 [(.yandex.cloud.value) = "0-100"];
       * @return The localityAwareRoutingPercent.
       */
      @java.lang.Override
      public long getLocalityAwareRoutingPercent() {
        return localityAwareRoutingPercent_;
      }
      /**
       * 
       * Percentage of traffic that a load balancer node sends to healthy backends in its availability zone.
       * The rest is divided equally between other zones. For details about zone-aware routing, see
       * [documentation](/docs/application-load-balancer/concepts/backend-group#locality).
       * If there are no healthy backends in an availability zone, all the traffic is divided between other zones.
       * If [strict_locality] is `true`, the specified value is ignored.
       * A load balancer node sends all the traffic within its availability zone, regardless of backends' health.
       * Default value: `0`.
       * 
       *
       * int64 locality_aware_routing_percent = 2 [(.yandex.cloud.value) = "0-100"];
       * @param value The localityAwareRoutingPercent to set.
       * @return This builder for chaining.
       */
      public Builder setLocalityAwareRoutingPercent(long value) {
        
        localityAwareRoutingPercent_ = value;
        onChanged();
        return this;
      }
      /**
       * 
       * Percentage of traffic that a load balancer node sends to healthy backends in its availability zone.
       * The rest is divided equally between other zones. For details about zone-aware routing, see
       * [documentation](/docs/application-load-balancer/concepts/backend-group#locality).
       * If there are no healthy backends in an availability zone, all the traffic is divided between other zones.
       * If [strict_locality] is `true`, the specified value is ignored.
       * A load balancer node sends all the traffic within its availability zone, regardless of backends' health.
       * Default value: `0`.
       * 
       *
       * int64 locality_aware_routing_percent = 2 [(.yandex.cloud.value) = "0-100"];
       * @return This builder for chaining.
       */
      public Builder clearLocalityAwareRoutingPercent() {
        
        localityAwareRoutingPercent_ = 0L;
        onChanged();
        return this;
      }
      private boolean strictLocality_ ;
      /**
       * 
       * Specifies whether a load balancer node should only send traffic to backends in its availability zone,
       * regardless of their health, and ignore backends in other zones.
       * If set to `true` and there are no healthy backends in the zone, the node in this zone will respond
       * to incoming traffic with errors.
       * For details about strict locality, see [documentation](/docs/application-load-balancer/concepts/backend-group#locality).
       * If `strict_locality` is `true`, the value specified in [locality_aware_routing_percent] is ignored.
       * Default value: `false`.
       * 
       *
       * bool strict_locality = 3;
       * @return The strictLocality.
       */
      @java.lang.Override
      public boolean getStrictLocality() {
        return strictLocality_;
      }
      /**
       * 
       * Specifies whether a load balancer node should only send traffic to backends in its availability zone,
       * regardless of their health, and ignore backends in other zones.
       * If set to `true` and there are no healthy backends in the zone, the node in this zone will respond
       * to incoming traffic with errors.
       * For details about strict locality, see [documentation](/docs/application-load-balancer/concepts/backend-group#locality).
       * If `strict_locality` is `true`, the value specified in [locality_aware_routing_percent] is ignored.
       * Default value: `false`.
       * 
       *
       * bool strict_locality = 3;
       * @param value The strictLocality to set.
       * @return This builder for chaining.
       */
      public Builder setStrictLocality(boolean value) {
        
        strictLocality_ = value;
        onChanged();
        return this;
      }
      /**
       * 
       * Specifies whether a load balancer node should only send traffic to backends in its availability zone,
       * regardless of their health, and ignore backends in other zones.
       * If set to `true` and there are no healthy backends in the zone, the node in this zone will respond
       * to incoming traffic with errors.
       * For details about strict locality, see [documentation](/docs/application-load-balancer/concepts/backend-group#locality).
       * If `strict_locality` is `true`, the value specified in [locality_aware_routing_percent] is ignored.
       * Default value: `false`.
       * 
       *
       * bool strict_locality = 3;
       * @return This builder for chaining.
       */
      public Builder clearStrictLocality() {
        
        strictLocality_ = false;
        onChanged();
        return this;
      }
      private int mode_ = 0;
      /**
       * 
       * Load balancing mode for the backend.
       * For details about load balancing modes, see
       * [documentation](/docs/application-load-balancer/concepts/backend-group#balancing-mode).
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.LoadBalancingMode mode = 4;
       * @return The enum numeric value on the wire for mode.
       */
      @java.lang.Override public int getModeValue() {
        return mode_;
      }
      /**
       * 
       * Load balancing mode for the backend.
       * For details about load balancing modes, see
       * [documentation](/docs/application-load-balancer/concepts/backend-group#balancing-mode).
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.LoadBalancingMode mode = 4;
       * @param value The enum numeric value on the wire for mode to set.
       * @return This builder for chaining.
       */
      public Builder setModeValue(int value) {
        
        mode_ = value;
        onChanged();
        return this;
      }
      /**
       * 
       * Load balancing mode for the backend.
       * For details about load balancing modes, see
       * [documentation](/docs/application-load-balancer/concepts/backend-group#balancing-mode).
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.LoadBalancingMode mode = 4;
       * @return The mode.
       */
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingMode getMode() {
        @SuppressWarnings("deprecation")
        yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingMode result = yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingMode.valueOf(mode_);
        return result == null ? yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingMode.UNRECOGNIZED : result;
      }
      /**
       * 
       * Load balancing mode for the backend.
       * For details about load balancing modes, see
       * [documentation](/docs/application-load-balancer/concepts/backend-group#balancing-mode).
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.LoadBalancingMode mode = 4;
       * @param value The mode to set.
       * @return This builder for chaining.
       */
      public Builder setMode(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingMode value) {
        if (value == null) {
          throw new NullPointerException();
        }
        
        mode_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * 
       * Load balancing mode for the backend.
       * For details about load balancing modes, see
       * [documentation](/docs/application-load-balancer/concepts/backend-group#balancing-mode).
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.LoadBalancingMode mode = 4;
       * @return This builder for chaining.
       */
      public Builder clearMode() {
        
        mode_ = 0;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }
      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }
      // @@protoc_insertion_point(builder_scope:yandex.cloud.apploadbalancer.v1.LoadBalancingConfig)
    }
    // @@protoc_insertion_point(class_scope:yandex.cloud.apploadbalancer.v1.LoadBalancingConfig)
    private static final yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig();
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }
    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public LoadBalancingConfig parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new LoadBalancingConfig(input, extensionRegistry);
      }
    };
    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }
    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }
    @java.lang.Override
    public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }
  }
  public interface StreamBackendOrBuilder extends
      // @@protoc_insertion_point(interface_extends:yandex.cloud.apploadbalancer.v1.StreamBackend)
      com.google.protobuf.MessageOrBuilder {
    /**
     * 
     * Name of the backend.
     * 
     *
     * string name = 1 [(.yandex.cloud.pattern) = "[a-z][-a-z0-9]{1,61}[a-z0-9]"];
     * @return The name.
     */
    java.lang.String getName();
    /**
     * 
     * Name of the backend.
     * 
     *
     * string name = 1 [(.yandex.cloud.pattern) = "[a-z][-a-z0-9]{1,61}[a-z0-9]"];
     * @return The bytes for name.
     */
    com.google.protobuf.ByteString
        getNameBytes();
    /**
     * 
     * Backend weight. Traffic is distributed between backends of a backend group according to their weights.
     * Weights must be set either for all backends in a group or for none of them.
     * Setting no weights is the same as setting equal non-zero weights for all backends.
     * If the weight is non-positive, traffic is not sent to the backend.
     * 
     *
     * .google.protobuf.Int64Value backend_weight = 2;
     * @return Whether the backendWeight field is set.
     */
    boolean hasBackendWeight();
    /**
     * 
     * Backend weight. Traffic is distributed between backends of a backend group according to their weights.
     * Weights must be set either for all backends in a group or for none of them.
     * Setting no weights is the same as setting equal non-zero weights for all backends.
     * If the weight is non-positive, traffic is not sent to the backend.
     * 
     *
     * .google.protobuf.Int64Value backend_weight = 2;
     * @return The backendWeight.
     */
    com.google.protobuf.Int64Value getBackendWeight();
    /**
     * 
     * Backend weight. Traffic is distributed between backends of a backend group according to their weights.
     * Weights must be set either for all backends in a group or for none of them.
     * Setting no weights is the same as setting equal non-zero weights for all backends.
     * If the weight is non-positive, traffic is not sent to the backend.
     * 
     *
     * .google.protobuf.Int64Value backend_weight = 2;
     */
    com.google.protobuf.Int64ValueOrBuilder getBackendWeightOrBuilder();
    /**
     * 
     * Load balancing configuration for the backend.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.LoadBalancingConfig load_balancing_config = 3;
     * @return Whether the loadBalancingConfig field is set.
     */
    boolean hasLoadBalancingConfig();
    /**
     * 
     * Load balancing configuration for the backend.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.LoadBalancingConfig load_balancing_config = 3;
     * @return The loadBalancingConfig.
     */
    yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig getLoadBalancingConfig();
    /**
     * 
     * Load balancing configuration for the backend.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.LoadBalancingConfig load_balancing_config = 3;
     */
    yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfigOrBuilder getLoadBalancingConfigOrBuilder();
    /**
     * 
     * Port used by all targets to receive traffic.
     * 
     *
     * int64 port = 4 [(.yandex.cloud.value) = "0-65535"];
     * @return The port.
     */
    long getPort();
    /**
     * 
     * Target groups that belong to the backend. For details about target groups, see
     * [documentation](/docs/application-load-balancer/concepts/target-group).
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.TargetGroupsBackend target_groups = 5;
     * @return Whether the targetGroups field is set.
     */
    boolean hasTargetGroups();
    /**
     * 
     * Target groups that belong to the backend. For details about target groups, see
     * [documentation](/docs/application-load-balancer/concepts/target-group).
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.TargetGroupsBackend target_groups = 5;
     * @return The targetGroups.
     */
    yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend getTargetGroups();
    /**
     * 
     * Target groups that belong to the backend. For details about target groups, see
     * [documentation](/docs/application-load-balancer/concepts/target-group).
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.TargetGroupsBackend target_groups = 5;
     */
    yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackendOrBuilder getTargetGroupsOrBuilder();
    /**
     * 
     * Health checks to perform on targets from target groups.
     * For details about health checking, see [documentation](/docs/application-load-balancer/concepts/backend-group#health-checks).
     * If no health checks are specified, active health checking is not performed.
     * 
     *
     * repeated .yandex.cloud.apploadbalancer.v1.HealthCheck healthchecks = 6;
     */
    java.util.List 
        getHealthchecksList();
    /**
     * 
     * Health checks to perform on targets from target groups.
     * For details about health checking, see [documentation](/docs/application-load-balancer/concepts/backend-group#health-checks).
     * If no health checks are specified, active health checking is not performed.
     * 
     *
     * repeated .yandex.cloud.apploadbalancer.v1.HealthCheck healthchecks = 6;
     */
    yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck getHealthchecks(int index);
    /**
     * 
     * Health checks to perform on targets from target groups.
     * For details about health checking, see [documentation](/docs/application-load-balancer/concepts/backend-group#health-checks).
     * If no health checks are specified, active health checking is not performed.
     * 
     *
     * repeated .yandex.cloud.apploadbalancer.v1.HealthCheck healthchecks = 6;
     */
    int getHealthchecksCount();
    /**
     * 
     * Health checks to perform on targets from target groups.
     * For details about health checking, see [documentation](/docs/application-load-balancer/concepts/backend-group#health-checks).
     * If no health checks are specified, active health checking is not performed.
     * 
     *
     * repeated .yandex.cloud.apploadbalancer.v1.HealthCheck healthchecks = 6;
     */
    java.util.List extends yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheckOrBuilder> 
        getHealthchecksOrBuilderList();
    /**
     * 
     * Health checks to perform on targets from target groups.
     * For details about health checking, see [documentation](/docs/application-load-balancer/concepts/backend-group#health-checks).
     * If no health checks are specified, active health checking is not performed.
     * 
     *
     * repeated .yandex.cloud.apploadbalancer.v1.HealthCheck healthchecks = 6;
     */
    yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheckOrBuilder getHealthchecksOrBuilder(
        int index);
    /**
     * 
     * Settings for TLS connections between load balancer nodes and backend targets.
     * If specified, the load balancer establishes TLS-encrypted TCP connections with targets and compares received
     * certificates with the one specified in [BackendTls.validation_context].
     * If not specified, the load balancer establishes unencrypted TCP connections with targets.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.BackendTls tls = 7;
     * @return Whether the tls field is set.
     */
    boolean hasTls();
    /**
     * 
     * Settings for TLS connections between load balancer nodes and backend targets.
     * If specified, the load balancer establishes TLS-encrypted TCP connections with targets and compares received
     * certificates with the one specified in [BackendTls.validation_context].
     * If not specified, the load balancer establishes unencrypted TCP connections with targets.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.BackendTls tls = 7;
     * @return The tls.
     */
    yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls getTls();
    /**
     * 
     * Settings for TLS connections between load balancer nodes and backend targets.
     * If specified, the load balancer establishes TLS-encrypted TCP connections with targets and compares received
     * certificates with the one specified in [BackendTls.validation_context].
     * If not specified, the load balancer establishes unencrypted TCP connections with targets.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.BackendTls tls = 7;
     */
    yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTlsOrBuilder getTlsOrBuilder();
    /**
     * 
     * If set, proxy protocol will be enabled for this backend.
     * 
     *
     * bool enable_proxy_protocol = 8;
     * @return The enableProxyProtocol.
     */
    boolean getEnableProxyProtocol();
    public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackend.BackendTypeCase getBackendTypeCase();
  }
  /**
   * 
   * A stream (TCP) backend resource.
   * 
   *
   * Protobuf type {@code yandex.cloud.apploadbalancer.v1.StreamBackend}
   */
  public static final class StreamBackend extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:yandex.cloud.apploadbalancer.v1.StreamBackend)
      StreamBackendOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use StreamBackend.newBuilder() to construct.
    private StreamBackend(com.google.protobuf.GeneratedMessageV3.Builder> builder) {
      super(builder);
    }
    private StreamBackend() {
      name_ = "";
      healthchecks_ = java.util.Collections.emptyList();
    }
    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new StreamBackend();
    }
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private StreamBackend(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();
              name_ = s;
              break;
            }
            case 18: {
              com.google.protobuf.Int64Value.Builder subBuilder = null;
              if (backendWeight_ != null) {
                subBuilder = backendWeight_.toBuilder();
              }
              backendWeight_ = input.readMessage(com.google.protobuf.Int64Value.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(backendWeight_);
                backendWeight_ = subBuilder.buildPartial();
              }
              break;
            }
            case 26: {
              yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig.Builder subBuilder = null;
              if (loadBalancingConfig_ != null) {
                subBuilder = loadBalancingConfig_.toBuilder();
              }
              loadBalancingConfig_ = input.readMessage(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(loadBalancingConfig_);
                loadBalancingConfig_ = subBuilder.buildPartial();
              }
              break;
            }
            case 32: {
              port_ = input.readInt64();
              break;
            }
            case 42: {
              yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend.Builder subBuilder = null;
              if (backendTypeCase_ == 5) {
                subBuilder = ((yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend) backendType_).toBuilder();
              }
              backendType_ =
                  input.readMessage(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend) backendType_);
                backendType_ = subBuilder.buildPartial();
              }
              backendTypeCase_ = 5;
              break;
            }
            case 50: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                healthchecks_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000001;
              }
              healthchecks_.add(
                  input.readMessage(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.parser(), extensionRegistry));
              break;
            }
            case 58: {
              yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls.Builder subBuilder = null;
              if (tls_ != null) {
                subBuilder = tls_.toBuilder();
              }
              tls_ = input.readMessage(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(tls_);
                tls_ = subBuilder.buildPartial();
              }
              break;
            }
            case 64: {
              enableProxyProtocol_ = input.readBool();
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          healthchecks_ = java.util.Collections.unmodifiableList(healthchecks_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_StreamBackend_descriptor;
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_StreamBackend_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackend.class, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackend.Builder.class);
    }
    private int backendTypeCase_ = 0;
    private java.lang.Object backendType_;
    public enum BackendTypeCase
        implements com.google.protobuf.Internal.EnumLite,
            com.google.protobuf.AbstractMessage.InternalOneOfEnum {
      TARGET_GROUPS(5),
      BACKENDTYPE_NOT_SET(0);
      private final int value;
      private BackendTypeCase(int value) {
        this.value = value;
      }
      /**
       * @param value The number of the enum to look for.
       * @return The enum associated with the given number.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static BackendTypeCase valueOf(int value) {
        return forNumber(value);
      }
      public static BackendTypeCase forNumber(int value) {
        switch (value) {
          case 5: return TARGET_GROUPS;
          case 0: return BACKENDTYPE_NOT_SET;
          default: return null;
        }
      }
      public int getNumber() {
        return this.value;
      }
    };
    public BackendTypeCase
    getBackendTypeCase() {
      return BackendTypeCase.forNumber(
          backendTypeCase_);
    }
    public static final int NAME_FIELD_NUMBER = 1;
    private volatile java.lang.Object name_;
    /**
     * 
     * Name of the backend.
     * 
     *
     * string name = 1 [(.yandex.cloud.pattern) = "[a-z][-a-z0-9]{1,61}[a-z0-9]"];
     * @return The name.
     */
    @java.lang.Override
    public java.lang.String getName() {
      java.lang.Object ref = name_;
      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();
        name_ = s;
        return s;
      }
    }
    /**
     * 
     * Name of the backend.
     * 
     *
     * string name = 1 [(.yandex.cloud.pattern) = "[a-z][-a-z0-9]{1,61}[a-z0-9]"];
     * @return The bytes for name.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getNameBytes() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    public static final int BACKEND_WEIGHT_FIELD_NUMBER = 2;
    private com.google.protobuf.Int64Value backendWeight_;
    /**
     * 
     * Backend weight. Traffic is distributed between backends of a backend group according to their weights.
     * Weights must be set either for all backends in a group or for none of them.
     * Setting no weights is the same as setting equal non-zero weights for all backends.
     * If the weight is non-positive, traffic is not sent to the backend.
     * 
     *
     * .google.protobuf.Int64Value backend_weight = 2;
     * @return Whether the backendWeight field is set.
     */
    @java.lang.Override
    public boolean hasBackendWeight() {
      return backendWeight_ != null;
    }
    /**
     * 
     * Backend weight. Traffic is distributed between backends of a backend group according to their weights.
     * Weights must be set either for all backends in a group or for none of them.
     * Setting no weights is the same as setting equal non-zero weights for all backends.
     * If the weight is non-positive, traffic is not sent to the backend.
     * 
     *
     * .google.protobuf.Int64Value backend_weight = 2;
     * @return The backendWeight.
     */
    @java.lang.Override
    public com.google.protobuf.Int64Value getBackendWeight() {
      return backendWeight_ == null ? com.google.protobuf.Int64Value.getDefaultInstance() : backendWeight_;
    }
    /**
     * 
     * Backend weight. Traffic is distributed between backends of a backend group according to their weights.
     * Weights must be set either for all backends in a group or for none of them.
     * Setting no weights is the same as setting equal non-zero weights for all backends.
     * If the weight is non-positive, traffic is not sent to the backend.
     * 
     *
     * .google.protobuf.Int64Value backend_weight = 2;
     */
    @java.lang.Override
    public com.google.protobuf.Int64ValueOrBuilder getBackendWeightOrBuilder() {
      return getBackendWeight();
    }
    public static final int LOAD_BALANCING_CONFIG_FIELD_NUMBER = 3;
    private yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig loadBalancingConfig_;
    /**
     * 
     * Load balancing configuration for the backend.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.LoadBalancingConfig load_balancing_config = 3;
     * @return Whether the loadBalancingConfig field is set.
     */
    @java.lang.Override
    public boolean hasLoadBalancingConfig() {
      return loadBalancingConfig_ != null;
    }
    /**
     * 
     * Load balancing configuration for the backend.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.LoadBalancingConfig load_balancing_config = 3;
     * @return The loadBalancingConfig.
     */
    @java.lang.Override
    public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig getLoadBalancingConfig() {
      return loadBalancingConfig_ == null ? yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig.getDefaultInstance() : loadBalancingConfig_;
    }
    /**
     * 
     * Load balancing configuration for the backend.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.LoadBalancingConfig load_balancing_config = 3;
     */
    @java.lang.Override
    public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfigOrBuilder getLoadBalancingConfigOrBuilder() {
      return getLoadBalancingConfig();
    }
    public static final int PORT_FIELD_NUMBER = 4;
    private long port_;
    /**
     * 
     * Port used by all targets to receive traffic.
     * 
     *
     * int64 port = 4 [(.yandex.cloud.value) = "0-65535"];
     * @return The port.
     */
    @java.lang.Override
    public long getPort() {
      return port_;
    }
    public static final int TARGET_GROUPS_FIELD_NUMBER = 5;
    /**
     * 
     * Target groups that belong to the backend. For details about target groups, see
     * [documentation](/docs/application-load-balancer/concepts/target-group).
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.TargetGroupsBackend target_groups = 5;
     * @return Whether the targetGroups field is set.
     */
    @java.lang.Override
    public boolean hasTargetGroups() {
      return backendTypeCase_ == 5;
    }
    /**
     * 
     * Target groups that belong to the backend. For details about target groups, see
     * [documentation](/docs/application-load-balancer/concepts/target-group).
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.TargetGroupsBackend target_groups = 5;
     * @return The targetGroups.
     */
    @java.lang.Override
    public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend getTargetGroups() {
      if (backendTypeCase_ == 5) {
         return (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend) backendType_;
      }
      return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend.getDefaultInstance();
    }
    /**
     * 
     * Target groups that belong to the backend. For details about target groups, see
     * [documentation](/docs/application-load-balancer/concepts/target-group).
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.TargetGroupsBackend target_groups = 5;
     */
    @java.lang.Override
    public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackendOrBuilder getTargetGroupsOrBuilder() {
      if (backendTypeCase_ == 5) {
         return (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend) backendType_;
      }
      return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend.getDefaultInstance();
    }
    public static final int HEALTHCHECKS_FIELD_NUMBER = 6;
    private java.util.List healthchecks_;
    /**
     * 
     * Health checks to perform on targets from target groups.
     * For details about health checking, see [documentation](/docs/application-load-balancer/concepts/backend-group#health-checks).
     * If no health checks are specified, active health checking is not performed.
     * 
     *
     * repeated .yandex.cloud.apploadbalancer.v1.HealthCheck healthchecks = 6;
     */
    @java.lang.Override
    public java.util.List getHealthchecksList() {
      return healthchecks_;
    }
    /**
     * 
     * Health checks to perform on targets from target groups.
     * For details about health checking, see [documentation](/docs/application-load-balancer/concepts/backend-group#health-checks).
     * If no health checks are specified, active health checking is not performed.
     * 
     *
     * repeated .yandex.cloud.apploadbalancer.v1.HealthCheck healthchecks = 6;
     */
    @java.lang.Override
    public java.util.List extends yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheckOrBuilder> 
        getHealthchecksOrBuilderList() {
      return healthchecks_;
    }
    /**
     * 
     * Health checks to perform on targets from target groups.
     * For details about health checking, see [documentation](/docs/application-load-balancer/concepts/backend-group#health-checks).
     * If no health checks are specified, active health checking is not performed.
     * 
     *
     * repeated .yandex.cloud.apploadbalancer.v1.HealthCheck healthchecks = 6;
     */
    @java.lang.Override
    public int getHealthchecksCount() {
      return healthchecks_.size();
    }
    /**
     * 
     * Health checks to perform on targets from target groups.
     * For details about health checking, see [documentation](/docs/application-load-balancer/concepts/backend-group#health-checks).
     * If no health checks are specified, active health checking is not performed.
     * 
     *
     * repeated .yandex.cloud.apploadbalancer.v1.HealthCheck healthchecks = 6;
     */
    @java.lang.Override
    public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck getHealthchecks(int index) {
      return healthchecks_.get(index);
    }
    /**
     * 
     * Health checks to perform on targets from target groups.
     * For details about health checking, see [documentation](/docs/application-load-balancer/concepts/backend-group#health-checks).
     * If no health checks are specified, active health checking is not performed.
     * 
     *
     * repeated .yandex.cloud.apploadbalancer.v1.HealthCheck healthchecks = 6;
     */
    @java.lang.Override
    public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheckOrBuilder getHealthchecksOrBuilder(
        int index) {
      return healthchecks_.get(index);
    }
    public static final int TLS_FIELD_NUMBER = 7;
    private yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls tls_;
    /**
     * 
     * Settings for TLS connections between load balancer nodes and backend targets.
     * If specified, the load balancer establishes TLS-encrypted TCP connections with targets and compares received
     * certificates with the one specified in [BackendTls.validation_context].
     * If not specified, the load balancer establishes unencrypted TCP connections with targets.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.BackendTls tls = 7;
     * @return Whether the tls field is set.
     */
    @java.lang.Override
    public boolean hasTls() {
      return tls_ != null;
    }
    /**
     * 
     * Settings for TLS connections between load balancer nodes and backend targets.
     * If specified, the load balancer establishes TLS-encrypted TCP connections with targets and compares received
     * certificates with the one specified in [BackendTls.validation_context].
     * If not specified, the load balancer establishes unencrypted TCP connections with targets.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.BackendTls tls = 7;
     * @return The tls.
     */
    @java.lang.Override
    public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls getTls() {
      return tls_ == null ? yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls.getDefaultInstance() : tls_;
    }
    /**
     * 
     * Settings for TLS connections between load balancer nodes and backend targets.
     * If specified, the load balancer establishes TLS-encrypted TCP connections with targets and compares received
     * certificates with the one specified in [BackendTls.validation_context].
     * If not specified, the load balancer establishes unencrypted TCP connections with targets.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.BackendTls tls = 7;
     */
    @java.lang.Override
    public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTlsOrBuilder getTlsOrBuilder() {
      return getTls();
    }
    public static final int ENABLE_PROXY_PROTOCOL_FIELD_NUMBER = 8;
    private boolean enableProxyProtocol_;
    /**
     * 
     * If set, proxy protocol will be enabled for this backend.
     * 
     *
     * bool enable_proxy_protocol = 8;
     * @return The enableProxyProtocol.
     */
    @java.lang.Override
    public boolean getEnableProxyProtocol() {
      return enableProxyProtocol_;
    }
    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;
      memoizedIsInitialized = 1;
      return true;
    }
    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
      }
      if (backendWeight_ != null) {
        output.writeMessage(2, getBackendWeight());
      }
      if (loadBalancingConfig_ != null) {
        output.writeMessage(3, getLoadBalancingConfig());
      }
      if (port_ != 0L) {
        output.writeInt64(4, port_);
      }
      if (backendTypeCase_ == 5) {
        output.writeMessage(5, (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend) backendType_);
      }
      for (int i = 0; i < healthchecks_.size(); i++) {
        output.writeMessage(6, healthchecks_.get(i));
      }
      if (tls_ != null) {
        output.writeMessage(7, getTls());
      }
      if (enableProxyProtocol_ != false) {
        output.writeBool(8, enableProxyProtocol_);
      }
      unknownFields.writeTo(output);
    }
    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;
      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
      }
      if (backendWeight_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getBackendWeight());
      }
      if (loadBalancingConfig_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getLoadBalancingConfig());
      }
      if (port_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(4, port_);
      }
      if (backendTypeCase_ == 5) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend) backendType_);
      }
      for (int i = 0; i < healthchecks_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(6, healthchecks_.get(i));
      }
      if (tls_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(7, getTls());
      }
      if (enableProxyProtocol_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(8, enableProxyProtocol_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackend)) {
        return super.equals(obj);
      }
      yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackend other = (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackend) obj;
      if (!getName()
          .equals(other.getName())) return false;
      if (hasBackendWeight() != other.hasBackendWeight()) return false;
      if (hasBackendWeight()) {
        if (!getBackendWeight()
            .equals(other.getBackendWeight())) return false;
      }
      if (hasLoadBalancingConfig() != other.hasLoadBalancingConfig()) return false;
      if (hasLoadBalancingConfig()) {
        if (!getLoadBalancingConfig()
            .equals(other.getLoadBalancingConfig())) return false;
      }
      if (getPort()
          != other.getPort()) return false;
      if (!getHealthchecksList()
          .equals(other.getHealthchecksList())) return false;
      if (hasTls() != other.hasTls()) return false;
      if (hasTls()) {
        if (!getTls()
            .equals(other.getTls())) return false;
      }
      if (getEnableProxyProtocol()
          != other.getEnableProxyProtocol()) return false;
      if (!getBackendTypeCase().equals(other.getBackendTypeCase())) return false;
      switch (backendTypeCase_) {
        case 5:
          if (!getTargetGroups()
              .equals(other.getTargetGroups())) return false;
          break;
        case 0:
        default:
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }
    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + NAME_FIELD_NUMBER;
      hash = (53 * hash) + getName().hashCode();
      if (hasBackendWeight()) {
        hash = (37 * hash) + BACKEND_WEIGHT_FIELD_NUMBER;
        hash = (53 * hash) + getBackendWeight().hashCode();
      }
      if (hasLoadBalancingConfig()) {
        hash = (37 * hash) + LOAD_BALANCING_CONFIG_FIELD_NUMBER;
        hash = (53 * hash) + getLoadBalancingConfig().hashCode();
      }
      hash = (37 * hash) + PORT_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getPort());
      if (getHealthchecksCount() > 0) {
        hash = (37 * hash) + HEALTHCHECKS_FIELD_NUMBER;
        hash = (53 * hash) + getHealthchecksList().hashCode();
      }
      if (hasTls()) {
        hash = (37 * hash) + TLS_FIELD_NUMBER;
        hash = (53 * hash) + getTls().hashCode();
      }
      hash = (37 * hash) + ENABLE_PROXY_PROTOCOL_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getEnableProxyProtocol());
      switch (backendTypeCase_) {
        case 5:
          hash = (37 * hash) + TARGET_GROUPS_FIELD_NUMBER;
          hash = (53 * hash) + getTargetGroups().hashCode();
          break;
        case 0:
        default:
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackend parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackend parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackend parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackend parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackend parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackend parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackend parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackend 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 yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackend parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackend 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 yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackend parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackend 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(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackend 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;
    }
    /**
     * 
     * A stream (TCP) backend resource.
     * 
     *
     * Protobuf type {@code yandex.cloud.apploadbalancer.v1.StreamBackend}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:yandex.cloud.apploadbalancer.v1.StreamBackend)
        yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackendOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_StreamBackend_descriptor;
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_StreamBackend_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackend.class, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackend.Builder.class);
      }
      // Construct using yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackend.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getHealthchecksFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        name_ = "";
        if (backendWeightBuilder_ == null) {
          backendWeight_ = null;
        } else {
          backendWeight_ = null;
          backendWeightBuilder_ = null;
        }
        if (loadBalancingConfigBuilder_ == null) {
          loadBalancingConfig_ = null;
        } else {
          loadBalancingConfig_ = null;
          loadBalancingConfigBuilder_ = null;
        }
        port_ = 0L;
        if (healthchecksBuilder_ == null) {
          healthchecks_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          healthchecksBuilder_.clear();
        }
        if (tlsBuilder_ == null) {
          tls_ = null;
        } else {
          tls_ = null;
          tlsBuilder_ = null;
        }
        enableProxyProtocol_ = false;
        backendTypeCase_ = 0;
        backendType_ = null;
        return this;
      }
      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_StreamBackend_descriptor;
      }
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackend getDefaultInstanceForType() {
        return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackend.getDefaultInstance();
      }
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackend build() {
        yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackend result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackend buildPartial() {
        yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackend result = new yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackend(this);
        int from_bitField0_ = bitField0_;
        result.name_ = name_;
        if (backendWeightBuilder_ == null) {
          result.backendWeight_ = backendWeight_;
        } else {
          result.backendWeight_ = backendWeightBuilder_.build();
        }
        if (loadBalancingConfigBuilder_ == null) {
          result.loadBalancingConfig_ = loadBalancingConfig_;
        } else {
          result.loadBalancingConfig_ = loadBalancingConfigBuilder_.build();
        }
        result.port_ = port_;
        if (backendTypeCase_ == 5) {
          if (targetGroupsBuilder_ == null) {
            result.backendType_ = backendType_;
          } else {
            result.backendType_ = targetGroupsBuilder_.build();
          }
        }
        if (healthchecksBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            healthchecks_ = java.util.Collections.unmodifiableList(healthchecks_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.healthchecks_ = healthchecks_;
        } else {
          result.healthchecks_ = healthchecksBuilder_.build();
        }
        if (tlsBuilder_ == null) {
          result.tls_ = tls_;
        } else {
          result.tls_ = tlsBuilder_.build();
        }
        result.enableProxyProtocol_ = enableProxyProtocol_;
        result.backendTypeCase_ = backendTypeCase_;
        onBuilt();
        return result;
      }
      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackend) {
          return mergeFrom((yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackend)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      public Builder mergeFrom(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackend other) {
        if (other == yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackend.getDefaultInstance()) return this;
        if (!other.getName().isEmpty()) {
          name_ = other.name_;
          onChanged();
        }
        if (other.hasBackendWeight()) {
          mergeBackendWeight(other.getBackendWeight());
        }
        if (other.hasLoadBalancingConfig()) {
          mergeLoadBalancingConfig(other.getLoadBalancingConfig());
        }
        if (other.getPort() != 0L) {
          setPort(other.getPort());
        }
        if (healthchecksBuilder_ == null) {
          if (!other.healthchecks_.isEmpty()) {
            if (healthchecks_.isEmpty()) {
              healthchecks_ = other.healthchecks_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureHealthchecksIsMutable();
              healthchecks_.addAll(other.healthchecks_);
            }
            onChanged();
          }
        } else {
          if (!other.healthchecks_.isEmpty()) {
            if (healthchecksBuilder_.isEmpty()) {
              healthchecksBuilder_.dispose();
              healthchecksBuilder_ = null;
              healthchecks_ = other.healthchecks_;
              bitField0_ = (bitField0_ & ~0x00000001);
              healthchecksBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getHealthchecksFieldBuilder() : null;
            } else {
              healthchecksBuilder_.addAllMessages(other.healthchecks_);
            }
          }
        }
        if (other.hasTls()) {
          mergeTls(other.getTls());
        }
        if (other.getEnableProxyProtocol() != false) {
          setEnableProxyProtocol(other.getEnableProxyProtocol());
        }
        switch (other.getBackendTypeCase()) {
          case TARGET_GROUPS: {
            mergeTargetGroups(other.getTargetGroups());
            break;
          }
          case BACKENDTYPE_NOT_SET: {
            break;
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }
      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }
      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackend parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackend) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int backendTypeCase_ = 0;
      private java.lang.Object backendType_;
      public BackendTypeCase
          getBackendTypeCase() {
        return BackendTypeCase.forNumber(
            backendTypeCase_);
      }
      public Builder clearBackendType() {
        backendTypeCase_ = 0;
        backendType_ = null;
        onChanged();
        return this;
      }
      private int bitField0_;
      private java.lang.Object name_ = "";
      /**
       * 
       * Name of the backend.
       * 
       *
       * string name = 1 [(.yandex.cloud.pattern) = "[a-z][-a-z0-9]{1,61}[a-z0-9]"];
       * @return The name.
       */
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          name_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * 
       * Name of the backend.
       * 
       *
       * string name = 1 [(.yandex.cloud.pattern) = "[a-z][-a-z0-9]{1,61}[a-z0-9]"];
       * @return The bytes for name.
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * 
       * Name of the backend.
       * 
       *
       * string name = 1 [(.yandex.cloud.pattern) = "[a-z][-a-z0-9]{1,61}[a-z0-9]"];
       * @param value The name to set.
       * @return This builder for chaining.
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        name_ = value;
        onChanged();
        return this;
      }
      /**
       * 
       * Name of the backend.
       * 
       *
       * string name = 1 [(.yandex.cloud.pattern) = "[a-z][-a-z0-9]{1,61}[a-z0-9]"];
       * @return This builder for chaining.
       */
      public Builder clearName() {
        
        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      /**
       * 
       * Name of the backend.
       * 
       *
       * string name = 1 [(.yandex.cloud.pattern) = "[a-z][-a-z0-9]{1,61}[a-z0-9]"];
       * @param value The bytes for name to set.
       * @return This builder for chaining.
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        name_ = value;
        onChanged();
        return this;
      }
      private com.google.protobuf.Int64Value backendWeight_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Int64Value, com.google.protobuf.Int64Value.Builder, com.google.protobuf.Int64ValueOrBuilder> backendWeightBuilder_;
      /**
       * 
       * Backend weight. Traffic is distributed between backends of a backend group according to their weights.
       * Weights must be set either for all backends in a group or for none of them.
       * Setting no weights is the same as setting equal non-zero weights for all backends.
       * If the weight is non-positive, traffic is not sent to the backend.
       * 
       *
       * .google.protobuf.Int64Value backend_weight = 2;
       * @return Whether the backendWeight field is set.
       */
      public boolean hasBackendWeight() {
        return backendWeightBuilder_ != null || backendWeight_ != null;
      }
      /**
       * 
       * Backend weight. Traffic is distributed between backends of a backend group according to their weights.
       * Weights must be set either for all backends in a group or for none of them.
       * Setting no weights is the same as setting equal non-zero weights for all backends.
       * If the weight is non-positive, traffic is not sent to the backend.
       * 
       *
       * .google.protobuf.Int64Value backend_weight = 2;
       * @return The backendWeight.
       */
      public com.google.protobuf.Int64Value getBackendWeight() {
        if (backendWeightBuilder_ == null) {
          return backendWeight_ == null ? com.google.protobuf.Int64Value.getDefaultInstance() : backendWeight_;
        } else {
          return backendWeightBuilder_.getMessage();
        }
      }
      /**
       * 
       * Backend weight. Traffic is distributed between backends of a backend group according to their weights.
       * Weights must be set either for all backends in a group or for none of them.
       * Setting no weights is the same as setting equal non-zero weights for all backends.
       * If the weight is non-positive, traffic is not sent to the backend.
       * 
       *
       * .google.protobuf.Int64Value backend_weight = 2;
       */
      public Builder setBackendWeight(com.google.protobuf.Int64Value value) {
        if (backendWeightBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          backendWeight_ = value;
          onChanged();
        } else {
          backendWeightBuilder_.setMessage(value);
        }
        return this;
      }
      /**
       * 
       * Backend weight. Traffic is distributed between backends of a backend group according to their weights.
       * Weights must be set either for all backends in a group or for none of them.
       * Setting no weights is the same as setting equal non-zero weights for all backends.
       * If the weight is non-positive, traffic is not sent to the backend.
       * 
       *
       * .google.protobuf.Int64Value backend_weight = 2;
       */
      public Builder setBackendWeight(
          com.google.protobuf.Int64Value.Builder builderForValue) {
        if (backendWeightBuilder_ == null) {
          backendWeight_ = builderForValue.build();
          onChanged();
        } else {
          backendWeightBuilder_.setMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * 
       * Backend weight. Traffic is distributed between backends of a backend group according to their weights.
       * Weights must be set either for all backends in a group or for none of them.
       * Setting no weights is the same as setting equal non-zero weights for all backends.
       * If the weight is non-positive, traffic is not sent to the backend.
       * 
       *
       * .google.protobuf.Int64Value backend_weight = 2;
       */
      public Builder mergeBackendWeight(com.google.protobuf.Int64Value value) {
        if (backendWeightBuilder_ == null) {
          if (backendWeight_ != null) {
            backendWeight_ =
              com.google.protobuf.Int64Value.newBuilder(backendWeight_).mergeFrom(value).buildPartial();
          } else {
            backendWeight_ = value;
          }
          onChanged();
        } else {
          backendWeightBuilder_.mergeFrom(value);
        }
        return this;
      }
      /**
       * 
       * Backend weight. Traffic is distributed between backends of a backend group according to their weights.
       * Weights must be set either for all backends in a group or for none of them.
       * Setting no weights is the same as setting equal non-zero weights for all backends.
       * If the weight is non-positive, traffic is not sent to the backend.
       * 
       *
       * .google.protobuf.Int64Value backend_weight = 2;
       */
      public Builder clearBackendWeight() {
        if (backendWeightBuilder_ == null) {
          backendWeight_ = null;
          onChanged();
        } else {
          backendWeight_ = null;
          backendWeightBuilder_ = null;
        }
        return this;
      }
      /**
       * 
       * Backend weight. Traffic is distributed between backends of a backend group according to their weights.
       * Weights must be set either for all backends in a group or for none of them.
       * Setting no weights is the same as setting equal non-zero weights for all backends.
       * If the weight is non-positive, traffic is not sent to the backend.
       * 
       *
       * .google.protobuf.Int64Value backend_weight = 2;
       */
      public com.google.protobuf.Int64Value.Builder getBackendWeightBuilder() {
        
        onChanged();
        return getBackendWeightFieldBuilder().getBuilder();
      }
      /**
       * 
       * Backend weight. Traffic is distributed between backends of a backend group according to their weights.
       * Weights must be set either for all backends in a group or for none of them.
       * Setting no weights is the same as setting equal non-zero weights for all backends.
       * If the weight is non-positive, traffic is not sent to the backend.
       * 
       *
       * .google.protobuf.Int64Value backend_weight = 2;
       */
      public com.google.protobuf.Int64ValueOrBuilder getBackendWeightOrBuilder() {
        if (backendWeightBuilder_ != null) {
          return backendWeightBuilder_.getMessageOrBuilder();
        } else {
          return backendWeight_ == null ?
              com.google.protobuf.Int64Value.getDefaultInstance() : backendWeight_;
        }
      }
      /**
       * 
       * Backend weight. Traffic is distributed between backends of a backend group according to their weights.
       * Weights must be set either for all backends in a group or for none of them.
       * Setting no weights is the same as setting equal non-zero weights for all backends.
       * If the weight is non-positive, traffic is not sent to the backend.
       * 
       *
       * .google.protobuf.Int64Value backend_weight = 2;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Int64Value, com.google.protobuf.Int64Value.Builder, com.google.protobuf.Int64ValueOrBuilder> 
          getBackendWeightFieldBuilder() {
        if (backendWeightBuilder_ == null) {
          backendWeightBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.protobuf.Int64Value, com.google.protobuf.Int64Value.Builder, com.google.protobuf.Int64ValueOrBuilder>(
                  getBackendWeight(),
                  getParentForChildren(),
                  isClean());
          backendWeight_ = null;
        }
        return backendWeightBuilder_;
      }
      private yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig loadBalancingConfig_;
      private com.google.protobuf.SingleFieldBuilderV3<
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig.Builder, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfigOrBuilder> loadBalancingConfigBuilder_;
      /**
       * 
       * Load balancing configuration for the backend.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.LoadBalancingConfig load_balancing_config = 3;
       * @return Whether the loadBalancingConfig field is set.
       */
      public boolean hasLoadBalancingConfig() {
        return loadBalancingConfigBuilder_ != null || loadBalancingConfig_ != null;
      }
      /**
       * 
       * Load balancing configuration for the backend.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.LoadBalancingConfig load_balancing_config = 3;
       * @return The loadBalancingConfig.
       */
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig getLoadBalancingConfig() {
        if (loadBalancingConfigBuilder_ == null) {
          return loadBalancingConfig_ == null ? yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig.getDefaultInstance() : loadBalancingConfig_;
        } else {
          return loadBalancingConfigBuilder_.getMessage();
        }
      }
      /**
       * 
       * Load balancing configuration for the backend.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.LoadBalancingConfig load_balancing_config = 3;
       */
      public Builder setLoadBalancingConfig(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig value) {
        if (loadBalancingConfigBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          loadBalancingConfig_ = value;
          onChanged();
        } else {
          loadBalancingConfigBuilder_.setMessage(value);
        }
        return this;
      }
      /**
       * 
       * Load balancing configuration for the backend.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.LoadBalancingConfig load_balancing_config = 3;
       */
      public Builder setLoadBalancingConfig(
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig.Builder builderForValue) {
        if (loadBalancingConfigBuilder_ == null) {
          loadBalancingConfig_ = builderForValue.build();
          onChanged();
        } else {
          loadBalancingConfigBuilder_.setMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * 
       * Load balancing configuration for the backend.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.LoadBalancingConfig load_balancing_config = 3;
       */
      public Builder mergeLoadBalancingConfig(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig value) {
        if (loadBalancingConfigBuilder_ == null) {
          if (loadBalancingConfig_ != null) {
            loadBalancingConfig_ =
              yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig.newBuilder(loadBalancingConfig_).mergeFrom(value).buildPartial();
          } else {
            loadBalancingConfig_ = value;
          }
          onChanged();
        } else {
          loadBalancingConfigBuilder_.mergeFrom(value);
        }
        return this;
      }
      /**
       * 
       * Load balancing configuration for the backend.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.LoadBalancingConfig load_balancing_config = 3;
       */
      public Builder clearLoadBalancingConfig() {
        if (loadBalancingConfigBuilder_ == null) {
          loadBalancingConfig_ = null;
          onChanged();
        } else {
          loadBalancingConfig_ = null;
          loadBalancingConfigBuilder_ = null;
        }
        return this;
      }
      /**
       * 
       * Load balancing configuration for the backend.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.LoadBalancingConfig load_balancing_config = 3;
       */
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig.Builder getLoadBalancingConfigBuilder() {
        
        onChanged();
        return getLoadBalancingConfigFieldBuilder().getBuilder();
      }
      /**
       * 
       * Load balancing configuration for the backend.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.LoadBalancingConfig load_balancing_config = 3;
       */
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfigOrBuilder getLoadBalancingConfigOrBuilder() {
        if (loadBalancingConfigBuilder_ != null) {
          return loadBalancingConfigBuilder_.getMessageOrBuilder();
        } else {
          return loadBalancingConfig_ == null ?
              yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig.getDefaultInstance() : loadBalancingConfig_;
        }
      }
      /**
       * 
       * Load balancing configuration for the backend.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.LoadBalancingConfig load_balancing_config = 3;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig.Builder, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfigOrBuilder> 
          getLoadBalancingConfigFieldBuilder() {
        if (loadBalancingConfigBuilder_ == null) {
          loadBalancingConfigBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig.Builder, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfigOrBuilder>(
                  getLoadBalancingConfig(),
                  getParentForChildren(),
                  isClean());
          loadBalancingConfig_ = null;
        }
        return loadBalancingConfigBuilder_;
      }
      private long port_ ;
      /**
       * 
       * Port used by all targets to receive traffic.
       * 
       *
       * int64 port = 4 [(.yandex.cloud.value) = "0-65535"];
       * @return The port.
       */
      @java.lang.Override
      public long getPort() {
        return port_;
      }
      /**
       * 
       * Port used by all targets to receive traffic.
       * 
       *
       * int64 port = 4 [(.yandex.cloud.value) = "0-65535"];
       * @param value The port to set.
       * @return This builder for chaining.
       */
      public Builder setPort(long value) {
        
        port_ = value;
        onChanged();
        return this;
      }
      /**
       * 
       * Port used by all targets to receive traffic.
       * 
       *
       * int64 port = 4 [(.yandex.cloud.value) = "0-65535"];
       * @return This builder for chaining.
       */
      public Builder clearPort() {
        
        port_ = 0L;
        onChanged();
        return this;
      }
      private com.google.protobuf.SingleFieldBuilderV3<
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend.Builder, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackendOrBuilder> targetGroupsBuilder_;
      /**
       * 
       * Target groups that belong to the backend. For details about target groups, see
       * [documentation](/docs/application-load-balancer/concepts/target-group).
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.TargetGroupsBackend target_groups = 5;
       * @return Whether the targetGroups field is set.
       */
      @java.lang.Override
      public boolean hasTargetGroups() {
        return backendTypeCase_ == 5;
      }
      /**
       * 
       * Target groups that belong to the backend. For details about target groups, see
       * [documentation](/docs/application-load-balancer/concepts/target-group).
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.TargetGroupsBackend target_groups = 5;
       * @return The targetGroups.
       */
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend getTargetGroups() {
        if (targetGroupsBuilder_ == null) {
          if (backendTypeCase_ == 5) {
            return (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend) backendType_;
          }
          return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend.getDefaultInstance();
        } else {
          if (backendTypeCase_ == 5) {
            return targetGroupsBuilder_.getMessage();
          }
          return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend.getDefaultInstance();
        }
      }
      /**
       * 
       * Target groups that belong to the backend. For details about target groups, see
       * [documentation](/docs/application-load-balancer/concepts/target-group).
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.TargetGroupsBackend target_groups = 5;
       */
      public Builder setTargetGroups(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend value) {
        if (targetGroupsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          backendType_ = value;
          onChanged();
        } else {
          targetGroupsBuilder_.setMessage(value);
        }
        backendTypeCase_ = 5;
        return this;
      }
      /**
       * 
       * Target groups that belong to the backend. For details about target groups, see
       * [documentation](/docs/application-load-balancer/concepts/target-group).
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.TargetGroupsBackend target_groups = 5;
       */
      public Builder setTargetGroups(
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend.Builder builderForValue) {
        if (targetGroupsBuilder_ == null) {
          backendType_ = builderForValue.build();
          onChanged();
        } else {
          targetGroupsBuilder_.setMessage(builderForValue.build());
        }
        backendTypeCase_ = 5;
        return this;
      }
      /**
       * 
       * Target groups that belong to the backend. For details about target groups, see
       * [documentation](/docs/application-load-balancer/concepts/target-group).
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.TargetGroupsBackend target_groups = 5;
       */
      public Builder mergeTargetGroups(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend value) {
        if (targetGroupsBuilder_ == null) {
          if (backendTypeCase_ == 5 &&
              backendType_ != yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend.getDefaultInstance()) {
            backendType_ = yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend.newBuilder((yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend) backendType_)
                .mergeFrom(value).buildPartial();
          } else {
            backendType_ = value;
          }
          onChanged();
        } else {
          if (backendTypeCase_ == 5) {
            targetGroupsBuilder_.mergeFrom(value);
          }
          targetGroupsBuilder_.setMessage(value);
        }
        backendTypeCase_ = 5;
        return this;
      }
      /**
       * 
       * Target groups that belong to the backend. For details about target groups, see
       * [documentation](/docs/application-load-balancer/concepts/target-group).
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.TargetGroupsBackend target_groups = 5;
       */
      public Builder clearTargetGroups() {
        if (targetGroupsBuilder_ == null) {
          if (backendTypeCase_ == 5) {
            backendTypeCase_ = 0;
            backendType_ = null;
            onChanged();
          }
        } else {
          if (backendTypeCase_ == 5) {
            backendTypeCase_ = 0;
            backendType_ = null;
          }
          targetGroupsBuilder_.clear();
        }
        return this;
      }
      /**
       * 
       * Target groups that belong to the backend. For details about target groups, see
       * [documentation](/docs/application-load-balancer/concepts/target-group).
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.TargetGroupsBackend target_groups = 5;
       */
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend.Builder getTargetGroupsBuilder() {
        return getTargetGroupsFieldBuilder().getBuilder();
      }
      /**
       * 
       * Target groups that belong to the backend. For details about target groups, see
       * [documentation](/docs/application-load-balancer/concepts/target-group).
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.TargetGroupsBackend target_groups = 5;
       */
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackendOrBuilder getTargetGroupsOrBuilder() {
        if ((backendTypeCase_ == 5) && (targetGroupsBuilder_ != null)) {
          return targetGroupsBuilder_.getMessageOrBuilder();
        } else {
          if (backendTypeCase_ == 5) {
            return (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend) backendType_;
          }
          return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend.getDefaultInstance();
        }
      }
      /**
       * 
       * Target groups that belong to the backend. For details about target groups, see
       * [documentation](/docs/application-load-balancer/concepts/target-group).
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.TargetGroupsBackend target_groups = 5;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend.Builder, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackendOrBuilder> 
          getTargetGroupsFieldBuilder() {
        if (targetGroupsBuilder_ == null) {
          if (!(backendTypeCase_ == 5)) {
            backendType_ = yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend.getDefaultInstance();
          }
          targetGroupsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend.Builder, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackendOrBuilder>(
                  (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend) backendType_,
                  getParentForChildren(),
                  isClean());
          backendType_ = null;
        }
        backendTypeCase_ = 5;
        onChanged();;
        return targetGroupsBuilder_;
      }
      private java.util.List healthchecks_ =
        java.util.Collections.emptyList();
      private void ensureHealthchecksIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          healthchecks_ = new java.util.ArrayList(healthchecks_);
          bitField0_ |= 0x00000001;
         }
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.Builder, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheckOrBuilder> healthchecksBuilder_;
      /**
       * 
       * Health checks to perform on targets from target groups.
       * For details about health checking, see [documentation](/docs/application-load-balancer/concepts/backend-group#health-checks).
       * If no health checks are specified, active health checking is not performed.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.HealthCheck healthchecks = 6;
       */
      public java.util.List getHealthchecksList() {
        if (healthchecksBuilder_ == null) {
          return java.util.Collections.unmodifiableList(healthchecks_);
        } else {
          return healthchecksBuilder_.getMessageList();
        }
      }
      /**
       * 
       * Health checks to perform on targets from target groups.
       * For details about health checking, see [documentation](/docs/application-load-balancer/concepts/backend-group#health-checks).
       * If no health checks are specified, active health checking is not performed.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.HealthCheck healthchecks = 6;
       */
      public int getHealthchecksCount() {
        if (healthchecksBuilder_ == null) {
          return healthchecks_.size();
        } else {
          return healthchecksBuilder_.getCount();
        }
      }
      /**
       * 
       * Health checks to perform on targets from target groups.
       * For details about health checking, see [documentation](/docs/application-load-balancer/concepts/backend-group#health-checks).
       * If no health checks are specified, active health checking is not performed.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.HealthCheck healthchecks = 6;
       */
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck getHealthchecks(int index) {
        if (healthchecksBuilder_ == null) {
          return healthchecks_.get(index);
        } else {
          return healthchecksBuilder_.getMessage(index);
        }
      }
      /**
       * 
       * Health checks to perform on targets from target groups.
       * For details about health checking, see [documentation](/docs/application-load-balancer/concepts/backend-group#health-checks).
       * If no health checks are specified, active health checking is not performed.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.HealthCheck healthchecks = 6;
       */
      public Builder setHealthchecks(
          int index, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck value) {
        if (healthchecksBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureHealthchecksIsMutable();
          healthchecks_.set(index, value);
          onChanged();
        } else {
          healthchecksBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * 
       * Health checks to perform on targets from target groups.
       * For details about health checking, see [documentation](/docs/application-load-balancer/concepts/backend-group#health-checks).
       * If no health checks are specified, active health checking is not performed.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.HealthCheck healthchecks = 6;
       */
      public Builder setHealthchecks(
          int index, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.Builder builderForValue) {
        if (healthchecksBuilder_ == null) {
          ensureHealthchecksIsMutable();
          healthchecks_.set(index, builderForValue.build());
          onChanged();
        } else {
          healthchecksBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * 
       * Health checks to perform on targets from target groups.
       * For details about health checking, see [documentation](/docs/application-load-balancer/concepts/backend-group#health-checks).
       * If no health checks are specified, active health checking is not performed.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.HealthCheck healthchecks = 6;
       */
      public Builder addHealthchecks(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck value) {
        if (healthchecksBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureHealthchecksIsMutable();
          healthchecks_.add(value);
          onChanged();
        } else {
          healthchecksBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * 
       * Health checks to perform on targets from target groups.
       * For details about health checking, see [documentation](/docs/application-load-balancer/concepts/backend-group#health-checks).
       * If no health checks are specified, active health checking is not performed.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.HealthCheck healthchecks = 6;
       */
      public Builder addHealthchecks(
          int index, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck value) {
        if (healthchecksBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureHealthchecksIsMutable();
          healthchecks_.add(index, value);
          onChanged();
        } else {
          healthchecksBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * 
       * Health checks to perform on targets from target groups.
       * For details about health checking, see [documentation](/docs/application-load-balancer/concepts/backend-group#health-checks).
       * If no health checks are specified, active health checking is not performed.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.HealthCheck healthchecks = 6;
       */
      public Builder addHealthchecks(
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.Builder builderForValue) {
        if (healthchecksBuilder_ == null) {
          ensureHealthchecksIsMutable();
          healthchecks_.add(builderForValue.build());
          onChanged();
        } else {
          healthchecksBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * 
       * Health checks to perform on targets from target groups.
       * For details about health checking, see [documentation](/docs/application-load-balancer/concepts/backend-group#health-checks).
       * If no health checks are specified, active health checking is not performed.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.HealthCheck healthchecks = 6;
       */
      public Builder addHealthchecks(
          int index, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.Builder builderForValue) {
        if (healthchecksBuilder_ == null) {
          ensureHealthchecksIsMutable();
          healthchecks_.add(index, builderForValue.build());
          onChanged();
        } else {
          healthchecksBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * 
       * Health checks to perform on targets from target groups.
       * For details about health checking, see [documentation](/docs/application-load-balancer/concepts/backend-group#health-checks).
       * If no health checks are specified, active health checking is not performed.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.HealthCheck healthchecks = 6;
       */
      public Builder addAllHealthchecks(
          java.lang.Iterable extends yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck> values) {
        if (healthchecksBuilder_ == null) {
          ensureHealthchecksIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, healthchecks_);
          onChanged();
        } else {
          healthchecksBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * 
       * Health checks to perform on targets from target groups.
       * For details about health checking, see [documentation](/docs/application-load-balancer/concepts/backend-group#health-checks).
       * If no health checks are specified, active health checking is not performed.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.HealthCheck healthchecks = 6;
       */
      public Builder clearHealthchecks() {
        if (healthchecksBuilder_ == null) {
          healthchecks_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          healthchecksBuilder_.clear();
        }
        return this;
      }
      /**
       * 
       * Health checks to perform on targets from target groups.
       * For details about health checking, see [documentation](/docs/application-load-balancer/concepts/backend-group#health-checks).
       * If no health checks are specified, active health checking is not performed.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.HealthCheck healthchecks = 6;
       */
      public Builder removeHealthchecks(int index) {
        if (healthchecksBuilder_ == null) {
          ensureHealthchecksIsMutable();
          healthchecks_.remove(index);
          onChanged();
        } else {
          healthchecksBuilder_.remove(index);
        }
        return this;
      }
      /**
       * 
       * Health checks to perform on targets from target groups.
       * For details about health checking, see [documentation](/docs/application-load-balancer/concepts/backend-group#health-checks).
       * If no health checks are specified, active health checking is not performed.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.HealthCheck healthchecks = 6;
       */
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.Builder getHealthchecksBuilder(
          int index) {
        return getHealthchecksFieldBuilder().getBuilder(index);
      }
      /**
       * 
       * Health checks to perform on targets from target groups.
       * For details about health checking, see [documentation](/docs/application-load-balancer/concepts/backend-group#health-checks).
       * If no health checks are specified, active health checking is not performed.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.HealthCheck healthchecks = 6;
       */
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheckOrBuilder getHealthchecksOrBuilder(
          int index) {
        if (healthchecksBuilder_ == null) {
          return healthchecks_.get(index);  } else {
          return healthchecksBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * 
       * Health checks to perform on targets from target groups.
       * For details about health checking, see [documentation](/docs/application-load-balancer/concepts/backend-group#health-checks).
       * If no health checks are specified, active health checking is not performed.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.HealthCheck healthchecks = 6;
       */
      public java.util.List extends yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheckOrBuilder> 
           getHealthchecksOrBuilderList() {
        if (healthchecksBuilder_ != null) {
          return healthchecksBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(healthchecks_);
        }
      }
      /**
       * 
       * Health checks to perform on targets from target groups.
       * For details about health checking, see [documentation](/docs/application-load-balancer/concepts/backend-group#health-checks).
       * If no health checks are specified, active health checking is not performed.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.HealthCheck healthchecks = 6;
       */
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.Builder addHealthchecksBuilder() {
        return getHealthchecksFieldBuilder().addBuilder(
            yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.getDefaultInstance());
      }
      /**
       * 
       * Health checks to perform on targets from target groups.
       * For details about health checking, see [documentation](/docs/application-load-balancer/concepts/backend-group#health-checks).
       * If no health checks are specified, active health checking is not performed.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.HealthCheck healthchecks = 6;
       */
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.Builder addHealthchecksBuilder(
          int index) {
        return getHealthchecksFieldBuilder().addBuilder(
            index, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.getDefaultInstance());
      }
      /**
       * 
       * Health checks to perform on targets from target groups.
       * For details about health checking, see [documentation](/docs/application-load-balancer/concepts/backend-group#health-checks).
       * If no health checks are specified, active health checking is not performed.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.HealthCheck healthchecks = 6;
       */
      public java.util.List 
           getHealthchecksBuilderList() {
        return getHealthchecksFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.Builder, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheckOrBuilder> 
          getHealthchecksFieldBuilder() {
        if (healthchecksBuilder_ == null) {
          healthchecksBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.Builder, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheckOrBuilder>(
                  healthchecks_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          healthchecks_ = null;
        }
        return healthchecksBuilder_;
      }
      private yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls tls_;
      private com.google.protobuf.SingleFieldBuilderV3<
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls.Builder, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTlsOrBuilder> tlsBuilder_;
      /**
       * 
       * Settings for TLS connections between load balancer nodes and backend targets.
       * If specified, the load balancer establishes TLS-encrypted TCP connections with targets and compares received
       * certificates with the one specified in [BackendTls.validation_context].
       * If not specified, the load balancer establishes unencrypted TCP connections with targets.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.BackendTls tls = 7;
       * @return Whether the tls field is set.
       */
      public boolean hasTls() {
        return tlsBuilder_ != null || tls_ != null;
      }
      /**
       * 
       * Settings for TLS connections between load balancer nodes and backend targets.
       * If specified, the load balancer establishes TLS-encrypted TCP connections with targets and compares received
       * certificates with the one specified in [BackendTls.validation_context].
       * If not specified, the load balancer establishes unencrypted TCP connections with targets.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.BackendTls tls = 7;
       * @return The tls.
       */
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls getTls() {
        if (tlsBuilder_ == null) {
          return tls_ == null ? yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls.getDefaultInstance() : tls_;
        } else {
          return tlsBuilder_.getMessage();
        }
      }
      /**
       * 
       * Settings for TLS connections between load balancer nodes and backend targets.
       * If specified, the load balancer establishes TLS-encrypted TCP connections with targets and compares received
       * certificates with the one specified in [BackendTls.validation_context].
       * If not specified, the load balancer establishes unencrypted TCP connections with targets.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.BackendTls tls = 7;
       */
      public Builder setTls(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls value) {
        if (tlsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          tls_ = value;
          onChanged();
        } else {
          tlsBuilder_.setMessage(value);
        }
        return this;
      }
      /**
       * 
       * Settings for TLS connections between load balancer nodes and backend targets.
       * If specified, the load balancer establishes TLS-encrypted TCP connections with targets and compares received
       * certificates with the one specified in [BackendTls.validation_context].
       * If not specified, the load balancer establishes unencrypted TCP connections with targets.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.BackendTls tls = 7;
       */
      public Builder setTls(
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls.Builder builderForValue) {
        if (tlsBuilder_ == null) {
          tls_ = builderForValue.build();
          onChanged();
        } else {
          tlsBuilder_.setMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * 
       * Settings for TLS connections between load balancer nodes and backend targets.
       * If specified, the load balancer establishes TLS-encrypted TCP connections with targets and compares received
       * certificates with the one specified in [BackendTls.validation_context].
       * If not specified, the load balancer establishes unencrypted TCP connections with targets.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.BackendTls tls = 7;
       */
      public Builder mergeTls(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls value) {
        if (tlsBuilder_ == null) {
          if (tls_ != null) {
            tls_ =
              yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls.newBuilder(tls_).mergeFrom(value).buildPartial();
          } else {
            tls_ = value;
          }
          onChanged();
        } else {
          tlsBuilder_.mergeFrom(value);
        }
        return this;
      }
      /**
       * 
       * Settings for TLS connections between load balancer nodes and backend targets.
       * If specified, the load balancer establishes TLS-encrypted TCP connections with targets and compares received
       * certificates with the one specified in [BackendTls.validation_context].
       * If not specified, the load balancer establishes unencrypted TCP connections with targets.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.BackendTls tls = 7;
       */
      public Builder clearTls() {
        if (tlsBuilder_ == null) {
          tls_ = null;
          onChanged();
        } else {
          tls_ = null;
          tlsBuilder_ = null;
        }
        return this;
      }
      /**
       * 
       * Settings for TLS connections between load balancer nodes and backend targets.
       * If specified, the load balancer establishes TLS-encrypted TCP connections with targets and compares received
       * certificates with the one specified in [BackendTls.validation_context].
       * If not specified, the load balancer establishes unencrypted TCP connections with targets.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.BackendTls tls = 7;
       */
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls.Builder getTlsBuilder() {
        
        onChanged();
        return getTlsFieldBuilder().getBuilder();
      }
      /**
       * 
       * Settings for TLS connections between load balancer nodes and backend targets.
       * If specified, the load balancer establishes TLS-encrypted TCP connections with targets and compares received
       * certificates with the one specified in [BackendTls.validation_context].
       * If not specified, the load balancer establishes unencrypted TCP connections with targets.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.BackendTls tls = 7;
       */
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTlsOrBuilder getTlsOrBuilder() {
        if (tlsBuilder_ != null) {
          return tlsBuilder_.getMessageOrBuilder();
        } else {
          return tls_ == null ?
              yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls.getDefaultInstance() : tls_;
        }
      }
      /**
       * 
       * Settings for TLS connections between load balancer nodes and backend targets.
       * If specified, the load balancer establishes TLS-encrypted TCP connections with targets and compares received
       * certificates with the one specified in [BackendTls.validation_context].
       * If not specified, the load balancer establishes unencrypted TCP connections with targets.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.BackendTls tls = 7;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls.Builder, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTlsOrBuilder> 
          getTlsFieldBuilder() {
        if (tlsBuilder_ == null) {
          tlsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls.Builder, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTlsOrBuilder>(
                  getTls(),
                  getParentForChildren(),
                  isClean());
          tls_ = null;
        }
        return tlsBuilder_;
      }
      private boolean enableProxyProtocol_ ;
      /**
       * 
       * If set, proxy protocol will be enabled for this backend.
       * 
       *
       * bool enable_proxy_protocol = 8;
       * @return The enableProxyProtocol.
       */
      @java.lang.Override
      public boolean getEnableProxyProtocol() {
        return enableProxyProtocol_;
      }
      /**
       * 
       * If set, proxy protocol will be enabled for this backend.
       * 
       *
       * bool enable_proxy_protocol = 8;
       * @param value The enableProxyProtocol to set.
       * @return This builder for chaining.
       */
      public Builder setEnableProxyProtocol(boolean value) {
        
        enableProxyProtocol_ = value;
        onChanged();
        return this;
      }
      /**
       * 
       * If set, proxy protocol will be enabled for this backend.
       * 
       *
       * bool enable_proxy_protocol = 8;
       * @return This builder for chaining.
       */
      public Builder clearEnableProxyProtocol() {
        
        enableProxyProtocol_ = false;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }
      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }
      // @@protoc_insertion_point(builder_scope:yandex.cloud.apploadbalancer.v1.StreamBackend)
    }
    // @@protoc_insertion_point(class_scope:yandex.cloud.apploadbalancer.v1.StreamBackend)
    private static final yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackend DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackend();
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackend getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }
    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public StreamBackend parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new StreamBackend(input, extensionRegistry);
      }
    };
    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }
    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }
    @java.lang.Override
    public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StreamBackend getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }
  }
  public interface HttpBackendOrBuilder extends
      // @@protoc_insertion_point(interface_extends:yandex.cloud.apploadbalancer.v1.HttpBackend)
      com.google.protobuf.MessageOrBuilder {
    /**
     * 
     * Name of the backend.
     * 
     *
     * string name = 1 [(.yandex.cloud.required) = true, (.yandex.cloud.pattern) = "[a-z][-a-z0-9]{1,61}[a-z0-9]"];
     * @return The name.
     */
    java.lang.String getName();
    /**
     * 
     * Name of the backend.
     * 
     *
     * string name = 1 [(.yandex.cloud.required) = true, (.yandex.cloud.pattern) = "[a-z][-a-z0-9]{1,61}[a-z0-9]"];
     * @return The bytes for name.
     */
    com.google.protobuf.ByteString
        getNameBytes();
    /**
     * 
     * Backend weight. Traffic is distributed between backends of a backend group according to their weights.
     * Weights must be set either for all backends in a group or for none of them.
     * Setting no weights is the same as setting equal non-zero weights for all backends.
     * If the weight is non-positive, traffic is not sent to the backend.
     * 
     *
     * .google.protobuf.Int64Value backend_weight = 2;
     * @return Whether the backendWeight field is set.
     */
    boolean hasBackendWeight();
    /**
     * 
     * Backend weight. Traffic is distributed between backends of a backend group according to their weights.
     * Weights must be set either for all backends in a group or for none of them.
     * Setting no weights is the same as setting equal non-zero weights for all backends.
     * If the weight is non-positive, traffic is not sent to the backend.
     * 
     *
     * .google.protobuf.Int64Value backend_weight = 2;
     * @return The backendWeight.
     */
    com.google.protobuf.Int64Value getBackendWeight();
    /**
     * 
     * Backend weight. Traffic is distributed between backends of a backend group according to their weights.
     * Weights must be set either for all backends in a group or for none of them.
     * Setting no weights is the same as setting equal non-zero weights for all backends.
     * If the weight is non-positive, traffic is not sent to the backend.
     * 
     *
     * .google.protobuf.Int64Value backend_weight = 2;
     */
    com.google.protobuf.Int64ValueOrBuilder getBackendWeightOrBuilder();
    /**
     * 
     * Load balancing configuration for the backend.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.LoadBalancingConfig load_balancing_config = 3;
     * @return Whether the loadBalancingConfig field is set.
     */
    boolean hasLoadBalancingConfig();
    /**
     * 
     * Load balancing configuration for the backend.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.LoadBalancingConfig load_balancing_config = 3;
     * @return The loadBalancingConfig.
     */
    yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig getLoadBalancingConfig();
    /**
     * 
     * Load balancing configuration for the backend.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.LoadBalancingConfig load_balancing_config = 3;
     */
    yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfigOrBuilder getLoadBalancingConfigOrBuilder();
    /**
     * 
     * Port used by all targets to receive traffic.
     * 
     *
     * int64 port = 4 [(.yandex.cloud.value) = "0-65535"];
     * @return The port.
     */
    long getPort();
    /**
     * 
     * Target groups that belong to the backend. For details about target groups, see
     * [documentation](/docs/application-load-balancer/concepts/target-group).
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.TargetGroupsBackend target_groups = 5;
     * @return Whether the targetGroups field is set.
     */
    boolean hasTargetGroups();
    /**
     * 
     * Target groups that belong to the backend. For details about target groups, see
     * [documentation](/docs/application-load-balancer/concepts/target-group).
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.TargetGroupsBackend target_groups = 5;
     * @return The targetGroups.
     */
    yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend getTargetGroups();
    /**
     * 
     * Target groups that belong to the backend. For details about target groups, see
     * [documentation](/docs/application-load-balancer/concepts/target-group).
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.TargetGroupsBackend target_groups = 5;
     */
    yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackendOrBuilder getTargetGroupsOrBuilder();
    /**
     * 
     * Object Storage bucket to use as the backend. For details about buckets, see
     * [documentation](/docs/storage/concepts/bucket).
     * If a bucket is used as a backend, the list of bucket objects and the objects themselves must be publicly
     * accessible. For instructions, see [documentation](/docs/storage/operations/buckets/bucket-availability).
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.StorageBucketBackend storage_bucket = 9;
     * @return Whether the storageBucket field is set.
     */
    boolean hasStorageBucket();
    /**
     * 
     * Object Storage bucket to use as the backend. For details about buckets, see
     * [documentation](/docs/storage/concepts/bucket).
     * If a bucket is used as a backend, the list of bucket objects and the objects themselves must be publicly
     * accessible. For instructions, see [documentation](/docs/storage/operations/buckets/bucket-availability).
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.StorageBucketBackend storage_bucket = 9;
     * @return The storageBucket.
     */
    yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StorageBucketBackend getStorageBucket();
    /**
     * 
     * Object Storage bucket to use as the backend. For details about buckets, see
     * [documentation](/docs/storage/concepts/bucket).
     * If a bucket is used as a backend, the list of bucket objects and the objects themselves must be publicly
     * accessible. For instructions, see [documentation](/docs/storage/operations/buckets/bucket-availability).
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.StorageBucketBackend storage_bucket = 9;
     */
    yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StorageBucketBackendOrBuilder getStorageBucketOrBuilder();
    /**
     * 
     * Health checks to perform on targets from target groups.
     * For details about health checking, see [documentation](/docs/application-load-balancer/concepts/backend-group#health-checks).
     * If no health checks are specified, active health checking is not performed.
     * 
     *
     * repeated .yandex.cloud.apploadbalancer.v1.HealthCheck healthchecks = 6;
     */
    java.util.List 
        getHealthchecksList();
    /**
     * 
     * Health checks to perform on targets from target groups.
     * For details about health checking, see [documentation](/docs/application-load-balancer/concepts/backend-group#health-checks).
     * If no health checks are specified, active health checking is not performed.
     * 
     *
     * repeated .yandex.cloud.apploadbalancer.v1.HealthCheck healthchecks = 6;
     */
    yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck getHealthchecks(int index);
    /**
     * 
     * Health checks to perform on targets from target groups.
     * For details about health checking, see [documentation](/docs/application-load-balancer/concepts/backend-group#health-checks).
     * If no health checks are specified, active health checking is not performed.
     * 
     *
     * repeated .yandex.cloud.apploadbalancer.v1.HealthCheck healthchecks = 6;
     */
    int getHealthchecksCount();
    /**
     * 
     * Health checks to perform on targets from target groups.
     * For details about health checking, see [documentation](/docs/application-load-balancer/concepts/backend-group#health-checks).
     * If no health checks are specified, active health checking is not performed.
     * 
     *
     * repeated .yandex.cloud.apploadbalancer.v1.HealthCheck healthchecks = 6;
     */
    java.util.List extends yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheckOrBuilder> 
        getHealthchecksOrBuilderList();
    /**
     * 
     * Health checks to perform on targets from target groups.
     * For details about health checking, see [documentation](/docs/application-load-balancer/concepts/backend-group#health-checks).
     * If no health checks are specified, active health checking is not performed.
     * 
     *
     * repeated .yandex.cloud.apploadbalancer.v1.HealthCheck healthchecks = 6;
     */
    yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheckOrBuilder getHealthchecksOrBuilder(
        int index);
    /**
     * 
     * Settings for TLS connections between load balancer nodes and backend targets.
     * If specified, the load balancer establishes HTTPS (HTTP over TLS) connections with targets
     * and compares received certificates with the one specified in [BackendTls.validation_context].
     * If not specified, the load balancer establishes unencrypted HTTP connections with targets.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.BackendTls tls = 7;
     * @return Whether the tls field is set.
     */
    boolean hasTls();
    /**
     * 
     * Settings for TLS connections between load balancer nodes and backend targets.
     * If specified, the load balancer establishes HTTPS (HTTP over TLS) connections with targets
     * and compares received certificates with the one specified in [BackendTls.validation_context].
     * If not specified, the load balancer establishes unencrypted HTTP connections with targets.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.BackendTls tls = 7;
     * @return The tls.
     */
    yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls getTls();
    /**
     * 
     * Settings for TLS connections between load balancer nodes and backend targets.
     * If specified, the load balancer establishes HTTPS (HTTP over TLS) connections with targets
     * and compares received certificates with the one specified in [BackendTls.validation_context].
     * If not specified, the load balancer establishes unencrypted HTTP connections with targets.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.BackendTls tls = 7;
     */
    yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTlsOrBuilder getTlsOrBuilder();
    /**
     * 
     * Enables HTTP/2 usage in connections between load balancer nodes and backend targets.
     * Default value: `false`, HTTP/1.1 is used.
     * 
     *
     * bool use_http2 = 8;
     * @return The useHttp2.
     */
    boolean getUseHttp2();
    public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackend.BackendTypeCase getBackendTypeCase();
  }
  /**
   * 
   * An HTTP backend resource.
   * 
   *
   * Protobuf type {@code yandex.cloud.apploadbalancer.v1.HttpBackend}
   */
  public static final class HttpBackend extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:yandex.cloud.apploadbalancer.v1.HttpBackend)
      HttpBackendOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use HttpBackend.newBuilder() to construct.
    private HttpBackend(com.google.protobuf.GeneratedMessageV3.Builder> builder) {
      super(builder);
    }
    private HttpBackend() {
      name_ = "";
      healthchecks_ = java.util.Collections.emptyList();
    }
    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new HttpBackend();
    }
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private HttpBackend(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();
              name_ = s;
              break;
            }
            case 18: {
              com.google.protobuf.Int64Value.Builder subBuilder = null;
              if (backendWeight_ != null) {
                subBuilder = backendWeight_.toBuilder();
              }
              backendWeight_ = input.readMessage(com.google.protobuf.Int64Value.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(backendWeight_);
                backendWeight_ = subBuilder.buildPartial();
              }
              break;
            }
            case 26: {
              yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig.Builder subBuilder = null;
              if (loadBalancingConfig_ != null) {
                subBuilder = loadBalancingConfig_.toBuilder();
              }
              loadBalancingConfig_ = input.readMessage(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(loadBalancingConfig_);
                loadBalancingConfig_ = subBuilder.buildPartial();
              }
              break;
            }
            case 32: {
              port_ = input.readInt64();
              break;
            }
            case 42: {
              yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend.Builder subBuilder = null;
              if (backendTypeCase_ == 5) {
                subBuilder = ((yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend) backendType_).toBuilder();
              }
              backendType_ =
                  input.readMessage(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend) backendType_);
                backendType_ = subBuilder.buildPartial();
              }
              backendTypeCase_ = 5;
              break;
            }
            case 50: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                healthchecks_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000001;
              }
              healthchecks_.add(
                  input.readMessage(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.parser(), extensionRegistry));
              break;
            }
            case 58: {
              yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls.Builder subBuilder = null;
              if (tls_ != null) {
                subBuilder = tls_.toBuilder();
              }
              tls_ = input.readMessage(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(tls_);
                tls_ = subBuilder.buildPartial();
              }
              break;
            }
            case 64: {
              useHttp2_ = input.readBool();
              break;
            }
            case 74: {
              yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StorageBucketBackend.Builder subBuilder = null;
              if (backendTypeCase_ == 9) {
                subBuilder = ((yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StorageBucketBackend) backendType_).toBuilder();
              }
              backendType_ =
                  input.readMessage(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StorageBucketBackend.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StorageBucketBackend) backendType_);
                backendType_ = subBuilder.buildPartial();
              }
              backendTypeCase_ = 9;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          healthchecks_ = java.util.Collections.unmodifiableList(healthchecks_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_HttpBackend_descriptor;
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_HttpBackend_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackend.class, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackend.Builder.class);
    }
    private int backendTypeCase_ = 0;
    private java.lang.Object backendType_;
    public enum BackendTypeCase
        implements com.google.protobuf.Internal.EnumLite,
            com.google.protobuf.AbstractMessage.InternalOneOfEnum {
      TARGET_GROUPS(5),
      STORAGE_BUCKET(9),
      BACKENDTYPE_NOT_SET(0);
      private final int value;
      private BackendTypeCase(int value) {
        this.value = value;
      }
      /**
       * @param value The number of the enum to look for.
       * @return The enum associated with the given number.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static BackendTypeCase valueOf(int value) {
        return forNumber(value);
      }
      public static BackendTypeCase forNumber(int value) {
        switch (value) {
          case 5: return TARGET_GROUPS;
          case 9: return STORAGE_BUCKET;
          case 0: return BACKENDTYPE_NOT_SET;
          default: return null;
        }
      }
      public int getNumber() {
        return this.value;
      }
    };
    public BackendTypeCase
    getBackendTypeCase() {
      return BackendTypeCase.forNumber(
          backendTypeCase_);
    }
    public static final int NAME_FIELD_NUMBER = 1;
    private volatile java.lang.Object name_;
    /**
     * 
     * Name of the backend.
     * 
     *
     * string name = 1 [(.yandex.cloud.required) = true, (.yandex.cloud.pattern) = "[a-z][-a-z0-9]{1,61}[a-z0-9]"];
     * @return The name.
     */
    @java.lang.Override
    public java.lang.String getName() {
      java.lang.Object ref = name_;
      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();
        name_ = s;
        return s;
      }
    }
    /**
     * 
     * Name of the backend.
     * 
     *
     * string name = 1 [(.yandex.cloud.required) = true, (.yandex.cloud.pattern) = "[a-z][-a-z0-9]{1,61}[a-z0-9]"];
     * @return The bytes for name.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getNameBytes() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    public static final int BACKEND_WEIGHT_FIELD_NUMBER = 2;
    private com.google.protobuf.Int64Value backendWeight_;
    /**
     * 
     * Backend weight. Traffic is distributed between backends of a backend group according to their weights.
     * Weights must be set either for all backends in a group or for none of them.
     * Setting no weights is the same as setting equal non-zero weights for all backends.
     * If the weight is non-positive, traffic is not sent to the backend.
     * 
     *
     * .google.protobuf.Int64Value backend_weight = 2;
     * @return Whether the backendWeight field is set.
     */
    @java.lang.Override
    public boolean hasBackendWeight() {
      return backendWeight_ != null;
    }
    /**
     * 
     * Backend weight. Traffic is distributed between backends of a backend group according to their weights.
     * Weights must be set either for all backends in a group or for none of them.
     * Setting no weights is the same as setting equal non-zero weights for all backends.
     * If the weight is non-positive, traffic is not sent to the backend.
     * 
     *
     * .google.protobuf.Int64Value backend_weight = 2;
     * @return The backendWeight.
     */
    @java.lang.Override
    public com.google.protobuf.Int64Value getBackendWeight() {
      return backendWeight_ == null ? com.google.protobuf.Int64Value.getDefaultInstance() : backendWeight_;
    }
    /**
     * 
     * Backend weight. Traffic is distributed between backends of a backend group according to their weights.
     * Weights must be set either for all backends in a group or for none of them.
     * Setting no weights is the same as setting equal non-zero weights for all backends.
     * If the weight is non-positive, traffic is not sent to the backend.
     * 
     *
     * .google.protobuf.Int64Value backend_weight = 2;
     */
    @java.lang.Override
    public com.google.protobuf.Int64ValueOrBuilder getBackendWeightOrBuilder() {
      return getBackendWeight();
    }
    public static final int LOAD_BALANCING_CONFIG_FIELD_NUMBER = 3;
    private yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig loadBalancingConfig_;
    /**
     * 
     * Load balancing configuration for the backend.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.LoadBalancingConfig load_balancing_config = 3;
     * @return Whether the loadBalancingConfig field is set.
     */
    @java.lang.Override
    public boolean hasLoadBalancingConfig() {
      return loadBalancingConfig_ != null;
    }
    /**
     * 
     * Load balancing configuration for the backend.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.LoadBalancingConfig load_balancing_config = 3;
     * @return The loadBalancingConfig.
     */
    @java.lang.Override
    public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig getLoadBalancingConfig() {
      return loadBalancingConfig_ == null ? yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig.getDefaultInstance() : loadBalancingConfig_;
    }
    /**
     * 
     * Load balancing configuration for the backend.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.LoadBalancingConfig load_balancing_config = 3;
     */
    @java.lang.Override
    public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfigOrBuilder getLoadBalancingConfigOrBuilder() {
      return getLoadBalancingConfig();
    }
    public static final int PORT_FIELD_NUMBER = 4;
    private long port_;
    /**
     * 
     * Port used by all targets to receive traffic.
     * 
     *
     * int64 port = 4 [(.yandex.cloud.value) = "0-65535"];
     * @return The port.
     */
    @java.lang.Override
    public long getPort() {
      return port_;
    }
    public static final int TARGET_GROUPS_FIELD_NUMBER = 5;
    /**
     * 
     * Target groups that belong to the backend. For details about target groups, see
     * [documentation](/docs/application-load-balancer/concepts/target-group).
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.TargetGroupsBackend target_groups = 5;
     * @return Whether the targetGroups field is set.
     */
    @java.lang.Override
    public boolean hasTargetGroups() {
      return backendTypeCase_ == 5;
    }
    /**
     * 
     * Target groups that belong to the backend. For details about target groups, see
     * [documentation](/docs/application-load-balancer/concepts/target-group).
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.TargetGroupsBackend target_groups = 5;
     * @return The targetGroups.
     */
    @java.lang.Override
    public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend getTargetGroups() {
      if (backendTypeCase_ == 5) {
         return (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend) backendType_;
      }
      return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend.getDefaultInstance();
    }
    /**
     * 
     * Target groups that belong to the backend. For details about target groups, see
     * [documentation](/docs/application-load-balancer/concepts/target-group).
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.TargetGroupsBackend target_groups = 5;
     */
    @java.lang.Override
    public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackendOrBuilder getTargetGroupsOrBuilder() {
      if (backendTypeCase_ == 5) {
         return (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend) backendType_;
      }
      return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend.getDefaultInstance();
    }
    public static final int STORAGE_BUCKET_FIELD_NUMBER = 9;
    /**
     * 
     * Object Storage bucket to use as the backend. For details about buckets, see
     * [documentation](/docs/storage/concepts/bucket).
     * If a bucket is used as a backend, the list of bucket objects and the objects themselves must be publicly
     * accessible. For instructions, see [documentation](/docs/storage/operations/buckets/bucket-availability).
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.StorageBucketBackend storage_bucket = 9;
     * @return Whether the storageBucket field is set.
     */
    @java.lang.Override
    public boolean hasStorageBucket() {
      return backendTypeCase_ == 9;
    }
    /**
     * 
     * Object Storage bucket to use as the backend. For details about buckets, see
     * [documentation](/docs/storage/concepts/bucket).
     * If a bucket is used as a backend, the list of bucket objects and the objects themselves must be publicly
     * accessible. For instructions, see [documentation](/docs/storage/operations/buckets/bucket-availability).
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.StorageBucketBackend storage_bucket = 9;
     * @return The storageBucket.
     */
    @java.lang.Override
    public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StorageBucketBackend getStorageBucket() {
      if (backendTypeCase_ == 9) {
         return (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StorageBucketBackend) backendType_;
      }
      return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StorageBucketBackend.getDefaultInstance();
    }
    /**
     * 
     * Object Storage bucket to use as the backend. For details about buckets, see
     * [documentation](/docs/storage/concepts/bucket).
     * If a bucket is used as a backend, the list of bucket objects and the objects themselves must be publicly
     * accessible. For instructions, see [documentation](/docs/storage/operations/buckets/bucket-availability).
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.StorageBucketBackend storage_bucket = 9;
     */
    @java.lang.Override
    public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StorageBucketBackendOrBuilder getStorageBucketOrBuilder() {
      if (backendTypeCase_ == 9) {
         return (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StorageBucketBackend) backendType_;
      }
      return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StorageBucketBackend.getDefaultInstance();
    }
    public static final int HEALTHCHECKS_FIELD_NUMBER = 6;
    private java.util.List healthchecks_;
    /**
     * 
     * Health checks to perform on targets from target groups.
     * For details about health checking, see [documentation](/docs/application-load-balancer/concepts/backend-group#health-checks).
     * If no health checks are specified, active health checking is not performed.
     * 
     *
     * repeated .yandex.cloud.apploadbalancer.v1.HealthCheck healthchecks = 6;
     */
    @java.lang.Override
    public java.util.List getHealthchecksList() {
      return healthchecks_;
    }
    /**
     * 
     * Health checks to perform on targets from target groups.
     * For details about health checking, see [documentation](/docs/application-load-balancer/concepts/backend-group#health-checks).
     * If no health checks are specified, active health checking is not performed.
     * 
     *
     * repeated .yandex.cloud.apploadbalancer.v1.HealthCheck healthchecks = 6;
     */
    @java.lang.Override
    public java.util.List extends yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheckOrBuilder> 
        getHealthchecksOrBuilderList() {
      return healthchecks_;
    }
    /**
     * 
     * Health checks to perform on targets from target groups.
     * For details about health checking, see [documentation](/docs/application-load-balancer/concepts/backend-group#health-checks).
     * If no health checks are specified, active health checking is not performed.
     * 
     *
     * repeated .yandex.cloud.apploadbalancer.v1.HealthCheck healthchecks = 6;
     */
    @java.lang.Override
    public int getHealthchecksCount() {
      return healthchecks_.size();
    }
    /**
     * 
     * Health checks to perform on targets from target groups.
     * For details about health checking, see [documentation](/docs/application-load-balancer/concepts/backend-group#health-checks).
     * If no health checks are specified, active health checking is not performed.
     * 
     *
     * repeated .yandex.cloud.apploadbalancer.v1.HealthCheck healthchecks = 6;
     */
    @java.lang.Override
    public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck getHealthchecks(int index) {
      return healthchecks_.get(index);
    }
    /**
     * 
     * Health checks to perform on targets from target groups.
     * For details about health checking, see [documentation](/docs/application-load-balancer/concepts/backend-group#health-checks).
     * If no health checks are specified, active health checking is not performed.
     * 
     *
     * repeated .yandex.cloud.apploadbalancer.v1.HealthCheck healthchecks = 6;
     */
    @java.lang.Override
    public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheckOrBuilder getHealthchecksOrBuilder(
        int index) {
      return healthchecks_.get(index);
    }
    public static final int TLS_FIELD_NUMBER = 7;
    private yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls tls_;
    /**
     * 
     * Settings for TLS connections between load balancer nodes and backend targets.
     * If specified, the load balancer establishes HTTPS (HTTP over TLS) connections with targets
     * and compares received certificates with the one specified in [BackendTls.validation_context].
     * If not specified, the load balancer establishes unencrypted HTTP connections with targets.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.BackendTls tls = 7;
     * @return Whether the tls field is set.
     */
    @java.lang.Override
    public boolean hasTls() {
      return tls_ != null;
    }
    /**
     * 
     * Settings for TLS connections between load balancer nodes and backend targets.
     * If specified, the load balancer establishes HTTPS (HTTP over TLS) connections with targets
     * and compares received certificates with the one specified in [BackendTls.validation_context].
     * If not specified, the load balancer establishes unencrypted HTTP connections with targets.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.BackendTls tls = 7;
     * @return The tls.
     */
    @java.lang.Override
    public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls getTls() {
      return tls_ == null ? yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls.getDefaultInstance() : tls_;
    }
    /**
     * 
     * Settings for TLS connections between load balancer nodes and backend targets.
     * If specified, the load balancer establishes HTTPS (HTTP over TLS) connections with targets
     * and compares received certificates with the one specified in [BackendTls.validation_context].
     * If not specified, the load balancer establishes unencrypted HTTP connections with targets.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.BackendTls tls = 7;
     */
    @java.lang.Override
    public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTlsOrBuilder getTlsOrBuilder() {
      return getTls();
    }
    public static final int USE_HTTP2_FIELD_NUMBER = 8;
    private boolean useHttp2_;
    /**
     * 
     * Enables HTTP/2 usage in connections between load balancer nodes and backend targets.
     * Default value: `false`, HTTP/1.1 is used.
     * 
     *
     * bool use_http2 = 8;
     * @return The useHttp2.
     */
    @java.lang.Override
    public boolean getUseHttp2() {
      return useHttp2_;
    }
    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;
      memoizedIsInitialized = 1;
      return true;
    }
    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
      }
      if (backendWeight_ != null) {
        output.writeMessage(2, getBackendWeight());
      }
      if (loadBalancingConfig_ != null) {
        output.writeMessage(3, getLoadBalancingConfig());
      }
      if (port_ != 0L) {
        output.writeInt64(4, port_);
      }
      if (backendTypeCase_ == 5) {
        output.writeMessage(5, (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend) backendType_);
      }
      for (int i = 0; i < healthchecks_.size(); i++) {
        output.writeMessage(6, healthchecks_.get(i));
      }
      if (tls_ != null) {
        output.writeMessage(7, getTls());
      }
      if (useHttp2_ != false) {
        output.writeBool(8, useHttp2_);
      }
      if (backendTypeCase_ == 9) {
        output.writeMessage(9, (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StorageBucketBackend) backendType_);
      }
      unknownFields.writeTo(output);
    }
    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;
      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
      }
      if (backendWeight_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getBackendWeight());
      }
      if (loadBalancingConfig_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getLoadBalancingConfig());
      }
      if (port_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(4, port_);
      }
      if (backendTypeCase_ == 5) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend) backendType_);
      }
      for (int i = 0; i < healthchecks_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(6, healthchecks_.get(i));
      }
      if (tls_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(7, getTls());
      }
      if (useHttp2_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(8, useHttp2_);
      }
      if (backendTypeCase_ == 9) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(9, (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StorageBucketBackend) backendType_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackend)) {
        return super.equals(obj);
      }
      yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackend other = (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackend) obj;
      if (!getName()
          .equals(other.getName())) return false;
      if (hasBackendWeight() != other.hasBackendWeight()) return false;
      if (hasBackendWeight()) {
        if (!getBackendWeight()
            .equals(other.getBackendWeight())) return false;
      }
      if (hasLoadBalancingConfig() != other.hasLoadBalancingConfig()) return false;
      if (hasLoadBalancingConfig()) {
        if (!getLoadBalancingConfig()
            .equals(other.getLoadBalancingConfig())) return false;
      }
      if (getPort()
          != other.getPort()) return false;
      if (!getHealthchecksList()
          .equals(other.getHealthchecksList())) return false;
      if (hasTls() != other.hasTls()) return false;
      if (hasTls()) {
        if (!getTls()
            .equals(other.getTls())) return false;
      }
      if (getUseHttp2()
          != other.getUseHttp2()) return false;
      if (!getBackendTypeCase().equals(other.getBackendTypeCase())) return false;
      switch (backendTypeCase_) {
        case 5:
          if (!getTargetGroups()
              .equals(other.getTargetGroups())) return false;
          break;
        case 9:
          if (!getStorageBucket()
              .equals(other.getStorageBucket())) return false;
          break;
        case 0:
        default:
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }
    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + NAME_FIELD_NUMBER;
      hash = (53 * hash) + getName().hashCode();
      if (hasBackendWeight()) {
        hash = (37 * hash) + BACKEND_WEIGHT_FIELD_NUMBER;
        hash = (53 * hash) + getBackendWeight().hashCode();
      }
      if (hasLoadBalancingConfig()) {
        hash = (37 * hash) + LOAD_BALANCING_CONFIG_FIELD_NUMBER;
        hash = (53 * hash) + getLoadBalancingConfig().hashCode();
      }
      hash = (37 * hash) + PORT_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getPort());
      if (getHealthchecksCount() > 0) {
        hash = (37 * hash) + HEALTHCHECKS_FIELD_NUMBER;
        hash = (53 * hash) + getHealthchecksList().hashCode();
      }
      if (hasTls()) {
        hash = (37 * hash) + TLS_FIELD_NUMBER;
        hash = (53 * hash) + getTls().hashCode();
      }
      hash = (37 * hash) + USE_HTTP2_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getUseHttp2());
      switch (backendTypeCase_) {
        case 5:
          hash = (37 * hash) + TARGET_GROUPS_FIELD_NUMBER;
          hash = (53 * hash) + getTargetGroups().hashCode();
          break;
        case 9:
          hash = (37 * hash) + STORAGE_BUCKET_FIELD_NUMBER;
          hash = (53 * hash) + getStorageBucket().hashCode();
          break;
        case 0:
        default:
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackend parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackend parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackend parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackend parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackend parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackend parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackend parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackend 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 yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackend parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackend 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 yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackend parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackend 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(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackend 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;
    }
    /**
     * 
     * An HTTP backend resource.
     * 
     *
     * Protobuf type {@code yandex.cloud.apploadbalancer.v1.HttpBackend}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:yandex.cloud.apploadbalancer.v1.HttpBackend)
        yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackendOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_HttpBackend_descriptor;
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_HttpBackend_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackend.class, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackend.Builder.class);
      }
      // Construct using yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackend.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getHealthchecksFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        name_ = "";
        if (backendWeightBuilder_ == null) {
          backendWeight_ = null;
        } else {
          backendWeight_ = null;
          backendWeightBuilder_ = null;
        }
        if (loadBalancingConfigBuilder_ == null) {
          loadBalancingConfig_ = null;
        } else {
          loadBalancingConfig_ = null;
          loadBalancingConfigBuilder_ = null;
        }
        port_ = 0L;
        if (healthchecksBuilder_ == null) {
          healthchecks_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          healthchecksBuilder_.clear();
        }
        if (tlsBuilder_ == null) {
          tls_ = null;
        } else {
          tls_ = null;
          tlsBuilder_ = null;
        }
        useHttp2_ = false;
        backendTypeCase_ = 0;
        backendType_ = null;
        return this;
      }
      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_HttpBackend_descriptor;
      }
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackend getDefaultInstanceForType() {
        return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackend.getDefaultInstance();
      }
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackend build() {
        yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackend result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackend buildPartial() {
        yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackend result = new yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackend(this);
        int from_bitField0_ = bitField0_;
        result.name_ = name_;
        if (backendWeightBuilder_ == null) {
          result.backendWeight_ = backendWeight_;
        } else {
          result.backendWeight_ = backendWeightBuilder_.build();
        }
        if (loadBalancingConfigBuilder_ == null) {
          result.loadBalancingConfig_ = loadBalancingConfig_;
        } else {
          result.loadBalancingConfig_ = loadBalancingConfigBuilder_.build();
        }
        result.port_ = port_;
        if (backendTypeCase_ == 5) {
          if (targetGroupsBuilder_ == null) {
            result.backendType_ = backendType_;
          } else {
            result.backendType_ = targetGroupsBuilder_.build();
          }
        }
        if (backendTypeCase_ == 9) {
          if (storageBucketBuilder_ == null) {
            result.backendType_ = backendType_;
          } else {
            result.backendType_ = storageBucketBuilder_.build();
          }
        }
        if (healthchecksBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            healthchecks_ = java.util.Collections.unmodifiableList(healthchecks_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.healthchecks_ = healthchecks_;
        } else {
          result.healthchecks_ = healthchecksBuilder_.build();
        }
        if (tlsBuilder_ == null) {
          result.tls_ = tls_;
        } else {
          result.tls_ = tlsBuilder_.build();
        }
        result.useHttp2_ = useHttp2_;
        result.backendTypeCase_ = backendTypeCase_;
        onBuilt();
        return result;
      }
      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackend) {
          return mergeFrom((yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackend)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      public Builder mergeFrom(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackend other) {
        if (other == yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackend.getDefaultInstance()) return this;
        if (!other.getName().isEmpty()) {
          name_ = other.name_;
          onChanged();
        }
        if (other.hasBackendWeight()) {
          mergeBackendWeight(other.getBackendWeight());
        }
        if (other.hasLoadBalancingConfig()) {
          mergeLoadBalancingConfig(other.getLoadBalancingConfig());
        }
        if (other.getPort() != 0L) {
          setPort(other.getPort());
        }
        if (healthchecksBuilder_ == null) {
          if (!other.healthchecks_.isEmpty()) {
            if (healthchecks_.isEmpty()) {
              healthchecks_ = other.healthchecks_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureHealthchecksIsMutable();
              healthchecks_.addAll(other.healthchecks_);
            }
            onChanged();
          }
        } else {
          if (!other.healthchecks_.isEmpty()) {
            if (healthchecksBuilder_.isEmpty()) {
              healthchecksBuilder_.dispose();
              healthchecksBuilder_ = null;
              healthchecks_ = other.healthchecks_;
              bitField0_ = (bitField0_ & ~0x00000001);
              healthchecksBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getHealthchecksFieldBuilder() : null;
            } else {
              healthchecksBuilder_.addAllMessages(other.healthchecks_);
            }
          }
        }
        if (other.hasTls()) {
          mergeTls(other.getTls());
        }
        if (other.getUseHttp2() != false) {
          setUseHttp2(other.getUseHttp2());
        }
        switch (other.getBackendTypeCase()) {
          case TARGET_GROUPS: {
            mergeTargetGroups(other.getTargetGroups());
            break;
          }
          case STORAGE_BUCKET: {
            mergeStorageBucket(other.getStorageBucket());
            break;
          }
          case BACKENDTYPE_NOT_SET: {
            break;
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }
      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }
      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackend parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackend) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int backendTypeCase_ = 0;
      private java.lang.Object backendType_;
      public BackendTypeCase
          getBackendTypeCase() {
        return BackendTypeCase.forNumber(
            backendTypeCase_);
      }
      public Builder clearBackendType() {
        backendTypeCase_ = 0;
        backendType_ = null;
        onChanged();
        return this;
      }
      private int bitField0_;
      private java.lang.Object name_ = "";
      /**
       * 
       * Name of the backend.
       * 
       *
       * string name = 1 [(.yandex.cloud.required) = true, (.yandex.cloud.pattern) = "[a-z][-a-z0-9]{1,61}[a-z0-9]"];
       * @return The name.
       */
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          name_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * 
       * Name of the backend.
       * 
       *
       * string name = 1 [(.yandex.cloud.required) = true, (.yandex.cloud.pattern) = "[a-z][-a-z0-9]{1,61}[a-z0-9]"];
       * @return The bytes for name.
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * 
       * Name of the backend.
       * 
       *
       * string name = 1 [(.yandex.cloud.required) = true, (.yandex.cloud.pattern) = "[a-z][-a-z0-9]{1,61}[a-z0-9]"];
       * @param value The name to set.
       * @return This builder for chaining.
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        name_ = value;
        onChanged();
        return this;
      }
      /**
       * 
       * Name of the backend.
       * 
       *
       * string name = 1 [(.yandex.cloud.required) = true, (.yandex.cloud.pattern) = "[a-z][-a-z0-9]{1,61}[a-z0-9]"];
       * @return This builder for chaining.
       */
      public Builder clearName() {
        
        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      /**
       * 
       * Name of the backend.
       * 
       *
       * string name = 1 [(.yandex.cloud.required) = true, (.yandex.cloud.pattern) = "[a-z][-a-z0-9]{1,61}[a-z0-9]"];
       * @param value The bytes for name to set.
       * @return This builder for chaining.
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        name_ = value;
        onChanged();
        return this;
      }
      private com.google.protobuf.Int64Value backendWeight_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Int64Value, com.google.protobuf.Int64Value.Builder, com.google.protobuf.Int64ValueOrBuilder> backendWeightBuilder_;
      /**
       * 
       * Backend weight. Traffic is distributed between backends of a backend group according to their weights.
       * Weights must be set either for all backends in a group or for none of them.
       * Setting no weights is the same as setting equal non-zero weights for all backends.
       * If the weight is non-positive, traffic is not sent to the backend.
       * 
       *
       * .google.protobuf.Int64Value backend_weight = 2;
       * @return Whether the backendWeight field is set.
       */
      public boolean hasBackendWeight() {
        return backendWeightBuilder_ != null || backendWeight_ != null;
      }
      /**
       * 
       * Backend weight. Traffic is distributed between backends of a backend group according to their weights.
       * Weights must be set either for all backends in a group or for none of them.
       * Setting no weights is the same as setting equal non-zero weights for all backends.
       * If the weight is non-positive, traffic is not sent to the backend.
       * 
       *
       * .google.protobuf.Int64Value backend_weight = 2;
       * @return The backendWeight.
       */
      public com.google.protobuf.Int64Value getBackendWeight() {
        if (backendWeightBuilder_ == null) {
          return backendWeight_ == null ? com.google.protobuf.Int64Value.getDefaultInstance() : backendWeight_;
        } else {
          return backendWeightBuilder_.getMessage();
        }
      }
      /**
       * 
       * Backend weight. Traffic is distributed between backends of a backend group according to their weights.
       * Weights must be set either for all backends in a group or for none of them.
       * Setting no weights is the same as setting equal non-zero weights for all backends.
       * If the weight is non-positive, traffic is not sent to the backend.
       * 
       *
       * .google.protobuf.Int64Value backend_weight = 2;
       */
      public Builder setBackendWeight(com.google.protobuf.Int64Value value) {
        if (backendWeightBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          backendWeight_ = value;
          onChanged();
        } else {
          backendWeightBuilder_.setMessage(value);
        }
        return this;
      }
      /**
       * 
       * Backend weight. Traffic is distributed between backends of a backend group according to their weights.
       * Weights must be set either for all backends in a group or for none of them.
       * Setting no weights is the same as setting equal non-zero weights for all backends.
       * If the weight is non-positive, traffic is not sent to the backend.
       * 
       *
       * .google.protobuf.Int64Value backend_weight = 2;
       */
      public Builder setBackendWeight(
          com.google.protobuf.Int64Value.Builder builderForValue) {
        if (backendWeightBuilder_ == null) {
          backendWeight_ = builderForValue.build();
          onChanged();
        } else {
          backendWeightBuilder_.setMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * 
       * Backend weight. Traffic is distributed between backends of a backend group according to their weights.
       * Weights must be set either for all backends in a group or for none of them.
       * Setting no weights is the same as setting equal non-zero weights for all backends.
       * If the weight is non-positive, traffic is not sent to the backend.
       * 
       *
       * .google.protobuf.Int64Value backend_weight = 2;
       */
      public Builder mergeBackendWeight(com.google.protobuf.Int64Value value) {
        if (backendWeightBuilder_ == null) {
          if (backendWeight_ != null) {
            backendWeight_ =
              com.google.protobuf.Int64Value.newBuilder(backendWeight_).mergeFrom(value).buildPartial();
          } else {
            backendWeight_ = value;
          }
          onChanged();
        } else {
          backendWeightBuilder_.mergeFrom(value);
        }
        return this;
      }
      /**
       * 
       * Backend weight. Traffic is distributed between backends of a backend group according to their weights.
       * Weights must be set either for all backends in a group or for none of them.
       * Setting no weights is the same as setting equal non-zero weights for all backends.
       * If the weight is non-positive, traffic is not sent to the backend.
       * 
       *
       * .google.protobuf.Int64Value backend_weight = 2;
       */
      public Builder clearBackendWeight() {
        if (backendWeightBuilder_ == null) {
          backendWeight_ = null;
          onChanged();
        } else {
          backendWeight_ = null;
          backendWeightBuilder_ = null;
        }
        return this;
      }
      /**
       * 
       * Backend weight. Traffic is distributed between backends of a backend group according to their weights.
       * Weights must be set either for all backends in a group or for none of them.
       * Setting no weights is the same as setting equal non-zero weights for all backends.
       * If the weight is non-positive, traffic is not sent to the backend.
       * 
       *
       * .google.protobuf.Int64Value backend_weight = 2;
       */
      public com.google.protobuf.Int64Value.Builder getBackendWeightBuilder() {
        
        onChanged();
        return getBackendWeightFieldBuilder().getBuilder();
      }
      /**
       * 
       * Backend weight. Traffic is distributed between backends of a backend group according to their weights.
       * Weights must be set either for all backends in a group or for none of them.
       * Setting no weights is the same as setting equal non-zero weights for all backends.
       * If the weight is non-positive, traffic is not sent to the backend.
       * 
       *
       * .google.protobuf.Int64Value backend_weight = 2;
       */
      public com.google.protobuf.Int64ValueOrBuilder getBackendWeightOrBuilder() {
        if (backendWeightBuilder_ != null) {
          return backendWeightBuilder_.getMessageOrBuilder();
        } else {
          return backendWeight_ == null ?
              com.google.protobuf.Int64Value.getDefaultInstance() : backendWeight_;
        }
      }
      /**
       * 
       * Backend weight. Traffic is distributed between backends of a backend group according to their weights.
       * Weights must be set either for all backends in a group or for none of them.
       * Setting no weights is the same as setting equal non-zero weights for all backends.
       * If the weight is non-positive, traffic is not sent to the backend.
       * 
       *
       * .google.protobuf.Int64Value backend_weight = 2;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Int64Value, com.google.protobuf.Int64Value.Builder, com.google.protobuf.Int64ValueOrBuilder> 
          getBackendWeightFieldBuilder() {
        if (backendWeightBuilder_ == null) {
          backendWeightBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.protobuf.Int64Value, com.google.protobuf.Int64Value.Builder, com.google.protobuf.Int64ValueOrBuilder>(
                  getBackendWeight(),
                  getParentForChildren(),
                  isClean());
          backendWeight_ = null;
        }
        return backendWeightBuilder_;
      }
      private yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig loadBalancingConfig_;
      private com.google.protobuf.SingleFieldBuilderV3<
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig.Builder, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfigOrBuilder> loadBalancingConfigBuilder_;
      /**
       * 
       * Load balancing configuration for the backend.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.LoadBalancingConfig load_balancing_config = 3;
       * @return Whether the loadBalancingConfig field is set.
       */
      public boolean hasLoadBalancingConfig() {
        return loadBalancingConfigBuilder_ != null || loadBalancingConfig_ != null;
      }
      /**
       * 
       * Load balancing configuration for the backend.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.LoadBalancingConfig load_balancing_config = 3;
       * @return The loadBalancingConfig.
       */
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig getLoadBalancingConfig() {
        if (loadBalancingConfigBuilder_ == null) {
          return loadBalancingConfig_ == null ? yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig.getDefaultInstance() : loadBalancingConfig_;
        } else {
          return loadBalancingConfigBuilder_.getMessage();
        }
      }
      /**
       * 
       * Load balancing configuration for the backend.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.LoadBalancingConfig load_balancing_config = 3;
       */
      public Builder setLoadBalancingConfig(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig value) {
        if (loadBalancingConfigBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          loadBalancingConfig_ = value;
          onChanged();
        } else {
          loadBalancingConfigBuilder_.setMessage(value);
        }
        return this;
      }
      /**
       * 
       * Load balancing configuration for the backend.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.LoadBalancingConfig load_balancing_config = 3;
       */
      public Builder setLoadBalancingConfig(
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig.Builder builderForValue) {
        if (loadBalancingConfigBuilder_ == null) {
          loadBalancingConfig_ = builderForValue.build();
          onChanged();
        } else {
          loadBalancingConfigBuilder_.setMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * 
       * Load balancing configuration for the backend.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.LoadBalancingConfig load_balancing_config = 3;
       */
      public Builder mergeLoadBalancingConfig(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig value) {
        if (loadBalancingConfigBuilder_ == null) {
          if (loadBalancingConfig_ != null) {
            loadBalancingConfig_ =
              yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig.newBuilder(loadBalancingConfig_).mergeFrom(value).buildPartial();
          } else {
            loadBalancingConfig_ = value;
          }
          onChanged();
        } else {
          loadBalancingConfigBuilder_.mergeFrom(value);
        }
        return this;
      }
      /**
       * 
       * Load balancing configuration for the backend.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.LoadBalancingConfig load_balancing_config = 3;
       */
      public Builder clearLoadBalancingConfig() {
        if (loadBalancingConfigBuilder_ == null) {
          loadBalancingConfig_ = null;
          onChanged();
        } else {
          loadBalancingConfig_ = null;
          loadBalancingConfigBuilder_ = null;
        }
        return this;
      }
      /**
       * 
       * Load balancing configuration for the backend.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.LoadBalancingConfig load_balancing_config = 3;
       */
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig.Builder getLoadBalancingConfigBuilder() {
        
        onChanged();
        return getLoadBalancingConfigFieldBuilder().getBuilder();
      }
      /**
       * 
       * Load balancing configuration for the backend.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.LoadBalancingConfig load_balancing_config = 3;
       */
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfigOrBuilder getLoadBalancingConfigOrBuilder() {
        if (loadBalancingConfigBuilder_ != null) {
          return loadBalancingConfigBuilder_.getMessageOrBuilder();
        } else {
          return loadBalancingConfig_ == null ?
              yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig.getDefaultInstance() : loadBalancingConfig_;
        }
      }
      /**
       * 
       * Load balancing configuration for the backend.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.LoadBalancingConfig load_balancing_config = 3;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig.Builder, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfigOrBuilder> 
          getLoadBalancingConfigFieldBuilder() {
        if (loadBalancingConfigBuilder_ == null) {
          loadBalancingConfigBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig.Builder, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfigOrBuilder>(
                  getLoadBalancingConfig(),
                  getParentForChildren(),
                  isClean());
          loadBalancingConfig_ = null;
        }
        return loadBalancingConfigBuilder_;
      }
      private long port_ ;
      /**
       * 
       * Port used by all targets to receive traffic.
       * 
       *
       * int64 port = 4 [(.yandex.cloud.value) = "0-65535"];
       * @return The port.
       */
      @java.lang.Override
      public long getPort() {
        return port_;
      }
      /**
       * 
       * Port used by all targets to receive traffic.
       * 
       *
       * int64 port = 4 [(.yandex.cloud.value) = "0-65535"];
       * @param value The port to set.
       * @return This builder for chaining.
       */
      public Builder setPort(long value) {
        
        port_ = value;
        onChanged();
        return this;
      }
      /**
       * 
       * Port used by all targets to receive traffic.
       * 
       *
       * int64 port = 4 [(.yandex.cloud.value) = "0-65535"];
       * @return This builder for chaining.
       */
      public Builder clearPort() {
        
        port_ = 0L;
        onChanged();
        return this;
      }
      private com.google.protobuf.SingleFieldBuilderV3<
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend.Builder, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackendOrBuilder> targetGroupsBuilder_;
      /**
       * 
       * Target groups that belong to the backend. For details about target groups, see
       * [documentation](/docs/application-load-balancer/concepts/target-group).
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.TargetGroupsBackend target_groups = 5;
       * @return Whether the targetGroups field is set.
       */
      @java.lang.Override
      public boolean hasTargetGroups() {
        return backendTypeCase_ == 5;
      }
      /**
       * 
       * Target groups that belong to the backend. For details about target groups, see
       * [documentation](/docs/application-load-balancer/concepts/target-group).
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.TargetGroupsBackend target_groups = 5;
       * @return The targetGroups.
       */
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend getTargetGroups() {
        if (targetGroupsBuilder_ == null) {
          if (backendTypeCase_ == 5) {
            return (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend) backendType_;
          }
          return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend.getDefaultInstance();
        } else {
          if (backendTypeCase_ == 5) {
            return targetGroupsBuilder_.getMessage();
          }
          return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend.getDefaultInstance();
        }
      }
      /**
       * 
       * Target groups that belong to the backend. For details about target groups, see
       * [documentation](/docs/application-load-balancer/concepts/target-group).
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.TargetGroupsBackend target_groups = 5;
       */
      public Builder setTargetGroups(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend value) {
        if (targetGroupsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          backendType_ = value;
          onChanged();
        } else {
          targetGroupsBuilder_.setMessage(value);
        }
        backendTypeCase_ = 5;
        return this;
      }
      /**
       * 
       * Target groups that belong to the backend. For details about target groups, see
       * [documentation](/docs/application-load-balancer/concepts/target-group).
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.TargetGroupsBackend target_groups = 5;
       */
      public Builder setTargetGroups(
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend.Builder builderForValue) {
        if (targetGroupsBuilder_ == null) {
          backendType_ = builderForValue.build();
          onChanged();
        } else {
          targetGroupsBuilder_.setMessage(builderForValue.build());
        }
        backendTypeCase_ = 5;
        return this;
      }
      /**
       * 
       * Target groups that belong to the backend. For details about target groups, see
       * [documentation](/docs/application-load-balancer/concepts/target-group).
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.TargetGroupsBackend target_groups = 5;
       */
      public Builder mergeTargetGroups(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend value) {
        if (targetGroupsBuilder_ == null) {
          if (backendTypeCase_ == 5 &&
              backendType_ != yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend.getDefaultInstance()) {
            backendType_ = yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend.newBuilder((yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend) backendType_)
                .mergeFrom(value).buildPartial();
          } else {
            backendType_ = value;
          }
          onChanged();
        } else {
          if (backendTypeCase_ == 5) {
            targetGroupsBuilder_.mergeFrom(value);
          }
          targetGroupsBuilder_.setMessage(value);
        }
        backendTypeCase_ = 5;
        return this;
      }
      /**
       * 
       * Target groups that belong to the backend. For details about target groups, see
       * [documentation](/docs/application-load-balancer/concepts/target-group).
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.TargetGroupsBackend target_groups = 5;
       */
      public Builder clearTargetGroups() {
        if (targetGroupsBuilder_ == null) {
          if (backendTypeCase_ == 5) {
            backendTypeCase_ = 0;
            backendType_ = null;
            onChanged();
          }
        } else {
          if (backendTypeCase_ == 5) {
            backendTypeCase_ = 0;
            backendType_ = null;
          }
          targetGroupsBuilder_.clear();
        }
        return this;
      }
      /**
       * 
       * Target groups that belong to the backend. For details about target groups, see
       * [documentation](/docs/application-load-balancer/concepts/target-group).
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.TargetGroupsBackend target_groups = 5;
       */
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend.Builder getTargetGroupsBuilder() {
        return getTargetGroupsFieldBuilder().getBuilder();
      }
      /**
       * 
       * Target groups that belong to the backend. For details about target groups, see
       * [documentation](/docs/application-load-balancer/concepts/target-group).
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.TargetGroupsBackend target_groups = 5;
       */
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackendOrBuilder getTargetGroupsOrBuilder() {
        if ((backendTypeCase_ == 5) && (targetGroupsBuilder_ != null)) {
          return targetGroupsBuilder_.getMessageOrBuilder();
        } else {
          if (backendTypeCase_ == 5) {
            return (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend) backendType_;
          }
          return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend.getDefaultInstance();
        }
      }
      /**
       * 
       * Target groups that belong to the backend. For details about target groups, see
       * [documentation](/docs/application-load-balancer/concepts/target-group).
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.TargetGroupsBackend target_groups = 5;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend.Builder, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackendOrBuilder> 
          getTargetGroupsFieldBuilder() {
        if (targetGroupsBuilder_ == null) {
          if (!(backendTypeCase_ == 5)) {
            backendType_ = yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend.getDefaultInstance();
          }
          targetGroupsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend.Builder, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackendOrBuilder>(
                  (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend) backendType_,
                  getParentForChildren(),
                  isClean());
          backendType_ = null;
        }
        backendTypeCase_ = 5;
        onChanged();;
        return targetGroupsBuilder_;
      }
      private com.google.protobuf.SingleFieldBuilderV3<
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StorageBucketBackend, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StorageBucketBackend.Builder, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StorageBucketBackendOrBuilder> storageBucketBuilder_;
      /**
       * 
       * Object Storage bucket to use as the backend. For details about buckets, see
       * [documentation](/docs/storage/concepts/bucket).
       * If a bucket is used as a backend, the list of bucket objects and the objects themselves must be publicly
       * accessible. For instructions, see [documentation](/docs/storage/operations/buckets/bucket-availability).
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.StorageBucketBackend storage_bucket = 9;
       * @return Whether the storageBucket field is set.
       */
      @java.lang.Override
      public boolean hasStorageBucket() {
        return backendTypeCase_ == 9;
      }
      /**
       * 
       * Object Storage bucket to use as the backend. For details about buckets, see
       * [documentation](/docs/storage/concepts/bucket).
       * If a bucket is used as a backend, the list of bucket objects and the objects themselves must be publicly
       * accessible. For instructions, see [documentation](/docs/storage/operations/buckets/bucket-availability).
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.StorageBucketBackend storage_bucket = 9;
       * @return The storageBucket.
       */
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StorageBucketBackend getStorageBucket() {
        if (storageBucketBuilder_ == null) {
          if (backendTypeCase_ == 9) {
            return (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StorageBucketBackend) backendType_;
          }
          return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StorageBucketBackend.getDefaultInstance();
        } else {
          if (backendTypeCase_ == 9) {
            return storageBucketBuilder_.getMessage();
          }
          return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StorageBucketBackend.getDefaultInstance();
        }
      }
      /**
       * 
       * Object Storage bucket to use as the backend. For details about buckets, see
       * [documentation](/docs/storage/concepts/bucket).
       * If a bucket is used as a backend, the list of bucket objects and the objects themselves must be publicly
       * accessible. For instructions, see [documentation](/docs/storage/operations/buckets/bucket-availability).
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.StorageBucketBackend storage_bucket = 9;
       */
      public Builder setStorageBucket(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StorageBucketBackend value) {
        if (storageBucketBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          backendType_ = value;
          onChanged();
        } else {
          storageBucketBuilder_.setMessage(value);
        }
        backendTypeCase_ = 9;
        return this;
      }
      /**
       * 
       * Object Storage bucket to use as the backend. For details about buckets, see
       * [documentation](/docs/storage/concepts/bucket).
       * If a bucket is used as a backend, the list of bucket objects and the objects themselves must be publicly
       * accessible. For instructions, see [documentation](/docs/storage/operations/buckets/bucket-availability).
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.StorageBucketBackend storage_bucket = 9;
       */
      public Builder setStorageBucket(
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StorageBucketBackend.Builder builderForValue) {
        if (storageBucketBuilder_ == null) {
          backendType_ = builderForValue.build();
          onChanged();
        } else {
          storageBucketBuilder_.setMessage(builderForValue.build());
        }
        backendTypeCase_ = 9;
        return this;
      }
      /**
       * 
       * Object Storage bucket to use as the backend. For details about buckets, see
       * [documentation](/docs/storage/concepts/bucket).
       * If a bucket is used as a backend, the list of bucket objects and the objects themselves must be publicly
       * accessible. For instructions, see [documentation](/docs/storage/operations/buckets/bucket-availability).
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.StorageBucketBackend storage_bucket = 9;
       */
      public Builder mergeStorageBucket(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StorageBucketBackend value) {
        if (storageBucketBuilder_ == null) {
          if (backendTypeCase_ == 9 &&
              backendType_ != yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StorageBucketBackend.getDefaultInstance()) {
            backendType_ = yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StorageBucketBackend.newBuilder((yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StorageBucketBackend) backendType_)
                .mergeFrom(value).buildPartial();
          } else {
            backendType_ = value;
          }
          onChanged();
        } else {
          if (backendTypeCase_ == 9) {
            storageBucketBuilder_.mergeFrom(value);
          }
          storageBucketBuilder_.setMessage(value);
        }
        backendTypeCase_ = 9;
        return this;
      }
      /**
       * 
       * Object Storage bucket to use as the backend. For details about buckets, see
       * [documentation](/docs/storage/concepts/bucket).
       * If a bucket is used as a backend, the list of bucket objects and the objects themselves must be publicly
       * accessible. For instructions, see [documentation](/docs/storage/operations/buckets/bucket-availability).
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.StorageBucketBackend storage_bucket = 9;
       */
      public Builder clearStorageBucket() {
        if (storageBucketBuilder_ == null) {
          if (backendTypeCase_ == 9) {
            backendTypeCase_ = 0;
            backendType_ = null;
            onChanged();
          }
        } else {
          if (backendTypeCase_ == 9) {
            backendTypeCase_ = 0;
            backendType_ = null;
          }
          storageBucketBuilder_.clear();
        }
        return this;
      }
      /**
       * 
       * Object Storage bucket to use as the backend. For details about buckets, see
       * [documentation](/docs/storage/concepts/bucket).
       * If a bucket is used as a backend, the list of bucket objects and the objects themselves must be publicly
       * accessible. For instructions, see [documentation](/docs/storage/operations/buckets/bucket-availability).
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.StorageBucketBackend storage_bucket = 9;
       */
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StorageBucketBackend.Builder getStorageBucketBuilder() {
        return getStorageBucketFieldBuilder().getBuilder();
      }
      /**
       * 
       * Object Storage bucket to use as the backend. For details about buckets, see
       * [documentation](/docs/storage/concepts/bucket).
       * If a bucket is used as a backend, the list of bucket objects and the objects themselves must be publicly
       * accessible. For instructions, see [documentation](/docs/storage/operations/buckets/bucket-availability).
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.StorageBucketBackend storage_bucket = 9;
       */
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StorageBucketBackendOrBuilder getStorageBucketOrBuilder() {
        if ((backendTypeCase_ == 9) && (storageBucketBuilder_ != null)) {
          return storageBucketBuilder_.getMessageOrBuilder();
        } else {
          if (backendTypeCase_ == 9) {
            return (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StorageBucketBackend) backendType_;
          }
          return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StorageBucketBackend.getDefaultInstance();
        }
      }
      /**
       * 
       * Object Storage bucket to use as the backend. For details about buckets, see
       * [documentation](/docs/storage/concepts/bucket).
       * If a bucket is used as a backend, the list of bucket objects and the objects themselves must be publicly
       * accessible. For instructions, see [documentation](/docs/storage/operations/buckets/bucket-availability).
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.StorageBucketBackend storage_bucket = 9;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StorageBucketBackend, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StorageBucketBackend.Builder, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StorageBucketBackendOrBuilder> 
          getStorageBucketFieldBuilder() {
        if (storageBucketBuilder_ == null) {
          if (!(backendTypeCase_ == 9)) {
            backendType_ = yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StorageBucketBackend.getDefaultInstance();
          }
          storageBucketBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StorageBucketBackend, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StorageBucketBackend.Builder, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StorageBucketBackendOrBuilder>(
                  (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StorageBucketBackend) backendType_,
                  getParentForChildren(),
                  isClean());
          backendType_ = null;
        }
        backendTypeCase_ = 9;
        onChanged();;
        return storageBucketBuilder_;
      }
      private java.util.List healthchecks_ =
        java.util.Collections.emptyList();
      private void ensureHealthchecksIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          healthchecks_ = new java.util.ArrayList(healthchecks_);
          bitField0_ |= 0x00000001;
         }
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.Builder, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheckOrBuilder> healthchecksBuilder_;
      /**
       * 
       * Health checks to perform on targets from target groups.
       * For details about health checking, see [documentation](/docs/application-load-balancer/concepts/backend-group#health-checks).
       * If no health checks are specified, active health checking is not performed.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.HealthCheck healthchecks = 6;
       */
      public java.util.List getHealthchecksList() {
        if (healthchecksBuilder_ == null) {
          return java.util.Collections.unmodifiableList(healthchecks_);
        } else {
          return healthchecksBuilder_.getMessageList();
        }
      }
      /**
       * 
       * Health checks to perform on targets from target groups.
       * For details about health checking, see [documentation](/docs/application-load-balancer/concepts/backend-group#health-checks).
       * If no health checks are specified, active health checking is not performed.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.HealthCheck healthchecks = 6;
       */
      public int getHealthchecksCount() {
        if (healthchecksBuilder_ == null) {
          return healthchecks_.size();
        } else {
          return healthchecksBuilder_.getCount();
        }
      }
      /**
       * 
       * Health checks to perform on targets from target groups.
       * For details about health checking, see [documentation](/docs/application-load-balancer/concepts/backend-group#health-checks).
       * If no health checks are specified, active health checking is not performed.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.HealthCheck healthchecks = 6;
       */
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck getHealthchecks(int index) {
        if (healthchecksBuilder_ == null) {
          return healthchecks_.get(index);
        } else {
          return healthchecksBuilder_.getMessage(index);
        }
      }
      /**
       * 
       * Health checks to perform on targets from target groups.
       * For details about health checking, see [documentation](/docs/application-load-balancer/concepts/backend-group#health-checks).
       * If no health checks are specified, active health checking is not performed.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.HealthCheck healthchecks = 6;
       */
      public Builder setHealthchecks(
          int index, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck value) {
        if (healthchecksBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureHealthchecksIsMutable();
          healthchecks_.set(index, value);
          onChanged();
        } else {
          healthchecksBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * 
       * Health checks to perform on targets from target groups.
       * For details about health checking, see [documentation](/docs/application-load-balancer/concepts/backend-group#health-checks).
       * If no health checks are specified, active health checking is not performed.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.HealthCheck healthchecks = 6;
       */
      public Builder setHealthchecks(
          int index, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.Builder builderForValue) {
        if (healthchecksBuilder_ == null) {
          ensureHealthchecksIsMutable();
          healthchecks_.set(index, builderForValue.build());
          onChanged();
        } else {
          healthchecksBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * 
       * Health checks to perform on targets from target groups.
       * For details about health checking, see [documentation](/docs/application-load-balancer/concepts/backend-group#health-checks).
       * If no health checks are specified, active health checking is not performed.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.HealthCheck healthchecks = 6;
       */
      public Builder addHealthchecks(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck value) {
        if (healthchecksBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureHealthchecksIsMutable();
          healthchecks_.add(value);
          onChanged();
        } else {
          healthchecksBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * 
       * Health checks to perform on targets from target groups.
       * For details about health checking, see [documentation](/docs/application-load-balancer/concepts/backend-group#health-checks).
       * If no health checks are specified, active health checking is not performed.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.HealthCheck healthchecks = 6;
       */
      public Builder addHealthchecks(
          int index, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck value) {
        if (healthchecksBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureHealthchecksIsMutable();
          healthchecks_.add(index, value);
          onChanged();
        } else {
          healthchecksBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * 
       * Health checks to perform on targets from target groups.
       * For details about health checking, see [documentation](/docs/application-load-balancer/concepts/backend-group#health-checks).
       * If no health checks are specified, active health checking is not performed.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.HealthCheck healthchecks = 6;
       */
      public Builder addHealthchecks(
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.Builder builderForValue) {
        if (healthchecksBuilder_ == null) {
          ensureHealthchecksIsMutable();
          healthchecks_.add(builderForValue.build());
          onChanged();
        } else {
          healthchecksBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * 
       * Health checks to perform on targets from target groups.
       * For details about health checking, see [documentation](/docs/application-load-balancer/concepts/backend-group#health-checks).
       * If no health checks are specified, active health checking is not performed.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.HealthCheck healthchecks = 6;
       */
      public Builder addHealthchecks(
          int index, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.Builder builderForValue) {
        if (healthchecksBuilder_ == null) {
          ensureHealthchecksIsMutable();
          healthchecks_.add(index, builderForValue.build());
          onChanged();
        } else {
          healthchecksBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * 
       * Health checks to perform on targets from target groups.
       * For details about health checking, see [documentation](/docs/application-load-balancer/concepts/backend-group#health-checks).
       * If no health checks are specified, active health checking is not performed.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.HealthCheck healthchecks = 6;
       */
      public Builder addAllHealthchecks(
          java.lang.Iterable extends yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck> values) {
        if (healthchecksBuilder_ == null) {
          ensureHealthchecksIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, healthchecks_);
          onChanged();
        } else {
          healthchecksBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * 
       * Health checks to perform on targets from target groups.
       * For details about health checking, see [documentation](/docs/application-load-balancer/concepts/backend-group#health-checks).
       * If no health checks are specified, active health checking is not performed.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.HealthCheck healthchecks = 6;
       */
      public Builder clearHealthchecks() {
        if (healthchecksBuilder_ == null) {
          healthchecks_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          healthchecksBuilder_.clear();
        }
        return this;
      }
      /**
       * 
       * Health checks to perform on targets from target groups.
       * For details about health checking, see [documentation](/docs/application-load-balancer/concepts/backend-group#health-checks).
       * If no health checks are specified, active health checking is not performed.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.HealthCheck healthchecks = 6;
       */
      public Builder removeHealthchecks(int index) {
        if (healthchecksBuilder_ == null) {
          ensureHealthchecksIsMutable();
          healthchecks_.remove(index);
          onChanged();
        } else {
          healthchecksBuilder_.remove(index);
        }
        return this;
      }
      /**
       * 
       * Health checks to perform on targets from target groups.
       * For details about health checking, see [documentation](/docs/application-load-balancer/concepts/backend-group#health-checks).
       * If no health checks are specified, active health checking is not performed.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.HealthCheck healthchecks = 6;
       */
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.Builder getHealthchecksBuilder(
          int index) {
        return getHealthchecksFieldBuilder().getBuilder(index);
      }
      /**
       * 
       * Health checks to perform on targets from target groups.
       * For details about health checking, see [documentation](/docs/application-load-balancer/concepts/backend-group#health-checks).
       * If no health checks are specified, active health checking is not performed.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.HealthCheck healthchecks = 6;
       */
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheckOrBuilder getHealthchecksOrBuilder(
          int index) {
        if (healthchecksBuilder_ == null) {
          return healthchecks_.get(index);  } else {
          return healthchecksBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * 
       * Health checks to perform on targets from target groups.
       * For details about health checking, see [documentation](/docs/application-load-balancer/concepts/backend-group#health-checks).
       * If no health checks are specified, active health checking is not performed.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.HealthCheck healthchecks = 6;
       */
      public java.util.List extends yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheckOrBuilder> 
           getHealthchecksOrBuilderList() {
        if (healthchecksBuilder_ != null) {
          return healthchecksBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(healthchecks_);
        }
      }
      /**
       * 
       * Health checks to perform on targets from target groups.
       * For details about health checking, see [documentation](/docs/application-load-balancer/concepts/backend-group#health-checks).
       * If no health checks are specified, active health checking is not performed.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.HealthCheck healthchecks = 6;
       */
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.Builder addHealthchecksBuilder() {
        return getHealthchecksFieldBuilder().addBuilder(
            yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.getDefaultInstance());
      }
      /**
       * 
       * Health checks to perform on targets from target groups.
       * For details about health checking, see [documentation](/docs/application-load-balancer/concepts/backend-group#health-checks).
       * If no health checks are specified, active health checking is not performed.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.HealthCheck healthchecks = 6;
       */
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.Builder addHealthchecksBuilder(
          int index) {
        return getHealthchecksFieldBuilder().addBuilder(
            index, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.getDefaultInstance());
      }
      /**
       * 
       * Health checks to perform on targets from target groups.
       * For details about health checking, see [documentation](/docs/application-load-balancer/concepts/backend-group#health-checks).
       * If no health checks are specified, active health checking is not performed.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.HealthCheck healthchecks = 6;
       */
      public java.util.List 
           getHealthchecksBuilderList() {
        return getHealthchecksFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.Builder, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheckOrBuilder> 
          getHealthchecksFieldBuilder() {
        if (healthchecksBuilder_ == null) {
          healthchecksBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.Builder, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheckOrBuilder>(
                  healthchecks_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          healthchecks_ = null;
        }
        return healthchecksBuilder_;
      }
      private yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls tls_;
      private com.google.protobuf.SingleFieldBuilderV3<
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls.Builder, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTlsOrBuilder> tlsBuilder_;
      /**
       * 
       * Settings for TLS connections between load balancer nodes and backend targets.
       * If specified, the load balancer establishes HTTPS (HTTP over TLS) connections with targets
       * and compares received certificates with the one specified in [BackendTls.validation_context].
       * If not specified, the load balancer establishes unencrypted HTTP connections with targets.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.BackendTls tls = 7;
       * @return Whether the tls field is set.
       */
      public boolean hasTls() {
        return tlsBuilder_ != null || tls_ != null;
      }
      /**
       * 
       * Settings for TLS connections between load balancer nodes and backend targets.
       * If specified, the load balancer establishes HTTPS (HTTP over TLS) connections with targets
       * and compares received certificates with the one specified in [BackendTls.validation_context].
       * If not specified, the load balancer establishes unencrypted HTTP connections with targets.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.BackendTls tls = 7;
       * @return The tls.
       */
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls getTls() {
        if (tlsBuilder_ == null) {
          return tls_ == null ? yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls.getDefaultInstance() : tls_;
        } else {
          return tlsBuilder_.getMessage();
        }
      }
      /**
       * 
       * Settings for TLS connections between load balancer nodes and backend targets.
       * If specified, the load balancer establishes HTTPS (HTTP over TLS) connections with targets
       * and compares received certificates with the one specified in [BackendTls.validation_context].
       * If not specified, the load balancer establishes unencrypted HTTP connections with targets.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.BackendTls tls = 7;
       */
      public Builder setTls(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls value) {
        if (tlsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          tls_ = value;
          onChanged();
        } else {
          tlsBuilder_.setMessage(value);
        }
        return this;
      }
      /**
       * 
       * Settings for TLS connections between load balancer nodes and backend targets.
       * If specified, the load balancer establishes HTTPS (HTTP over TLS) connections with targets
       * and compares received certificates with the one specified in [BackendTls.validation_context].
       * If not specified, the load balancer establishes unencrypted HTTP connections with targets.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.BackendTls tls = 7;
       */
      public Builder setTls(
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls.Builder builderForValue) {
        if (tlsBuilder_ == null) {
          tls_ = builderForValue.build();
          onChanged();
        } else {
          tlsBuilder_.setMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * 
       * Settings for TLS connections between load balancer nodes and backend targets.
       * If specified, the load balancer establishes HTTPS (HTTP over TLS) connections with targets
       * and compares received certificates with the one specified in [BackendTls.validation_context].
       * If not specified, the load balancer establishes unencrypted HTTP connections with targets.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.BackendTls tls = 7;
       */
      public Builder mergeTls(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls value) {
        if (tlsBuilder_ == null) {
          if (tls_ != null) {
            tls_ =
              yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls.newBuilder(tls_).mergeFrom(value).buildPartial();
          } else {
            tls_ = value;
          }
          onChanged();
        } else {
          tlsBuilder_.mergeFrom(value);
        }
        return this;
      }
      /**
       * 
       * Settings for TLS connections between load balancer nodes and backend targets.
       * If specified, the load balancer establishes HTTPS (HTTP over TLS) connections with targets
       * and compares received certificates with the one specified in [BackendTls.validation_context].
       * If not specified, the load balancer establishes unencrypted HTTP connections with targets.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.BackendTls tls = 7;
       */
      public Builder clearTls() {
        if (tlsBuilder_ == null) {
          tls_ = null;
          onChanged();
        } else {
          tls_ = null;
          tlsBuilder_ = null;
        }
        return this;
      }
      /**
       * 
       * Settings for TLS connections between load balancer nodes and backend targets.
       * If specified, the load balancer establishes HTTPS (HTTP over TLS) connections with targets
       * and compares received certificates with the one specified in [BackendTls.validation_context].
       * If not specified, the load balancer establishes unencrypted HTTP connections with targets.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.BackendTls tls = 7;
       */
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls.Builder getTlsBuilder() {
        
        onChanged();
        return getTlsFieldBuilder().getBuilder();
      }
      /**
       * 
       * Settings for TLS connections between load balancer nodes and backend targets.
       * If specified, the load balancer establishes HTTPS (HTTP over TLS) connections with targets
       * and compares received certificates with the one specified in [BackendTls.validation_context].
       * If not specified, the load balancer establishes unencrypted HTTP connections with targets.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.BackendTls tls = 7;
       */
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTlsOrBuilder getTlsOrBuilder() {
        if (tlsBuilder_ != null) {
          return tlsBuilder_.getMessageOrBuilder();
        } else {
          return tls_ == null ?
              yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls.getDefaultInstance() : tls_;
        }
      }
      /**
       * 
       * Settings for TLS connections between load balancer nodes and backend targets.
       * If specified, the load balancer establishes HTTPS (HTTP over TLS) connections with targets
       * and compares received certificates with the one specified in [BackendTls.validation_context].
       * If not specified, the load balancer establishes unencrypted HTTP connections with targets.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.BackendTls tls = 7;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls.Builder, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTlsOrBuilder> 
          getTlsFieldBuilder() {
        if (tlsBuilder_ == null) {
          tlsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls.Builder, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTlsOrBuilder>(
                  getTls(),
                  getParentForChildren(),
                  isClean());
          tls_ = null;
        }
        return tlsBuilder_;
      }
      private boolean useHttp2_ ;
      /**
       * 
       * Enables HTTP/2 usage in connections between load balancer nodes and backend targets.
       * Default value: `false`, HTTP/1.1 is used.
       * 
       *
       * bool use_http2 = 8;
       * @return The useHttp2.
       */
      @java.lang.Override
      public boolean getUseHttp2() {
        return useHttp2_;
      }
      /**
       * 
       * Enables HTTP/2 usage in connections between load balancer nodes and backend targets.
       * Default value: `false`, HTTP/1.1 is used.
       * 
       *
       * bool use_http2 = 8;
       * @param value The useHttp2 to set.
       * @return This builder for chaining.
       */
      public Builder setUseHttp2(boolean value) {
        
        useHttp2_ = value;
        onChanged();
        return this;
      }
      /**
       * 
       * Enables HTTP/2 usage in connections between load balancer nodes and backend targets.
       * Default value: `false`, HTTP/1.1 is used.
       * 
       *
       * bool use_http2 = 8;
       * @return This builder for chaining.
       */
      public Builder clearUseHttp2() {
        
        useHttp2_ = false;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }
      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }
      // @@protoc_insertion_point(builder_scope:yandex.cloud.apploadbalancer.v1.HttpBackend)
    }
    // @@protoc_insertion_point(class_scope:yandex.cloud.apploadbalancer.v1.HttpBackend)
    private static final yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackend DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackend();
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackend getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }
    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public HttpBackend parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new HttpBackend(input, extensionRegistry);
      }
    };
    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }
    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }
    @java.lang.Override
    public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HttpBackend getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }
  }
  public interface GrpcBackendOrBuilder extends
      // @@protoc_insertion_point(interface_extends:yandex.cloud.apploadbalancer.v1.GrpcBackend)
      com.google.protobuf.MessageOrBuilder {
    /**
     * 
     * Name of the backend.
     * 
     *
     * string name = 1 [(.yandex.cloud.required) = true, (.yandex.cloud.pattern) = "[a-z][-a-z0-9]{1,61}[a-z0-9]"];
     * @return The name.
     */
    java.lang.String getName();
    /**
     * 
     * Name of the backend.
     * 
     *
     * string name = 1 [(.yandex.cloud.required) = true, (.yandex.cloud.pattern) = "[a-z][-a-z0-9]{1,61}[a-z0-9]"];
     * @return The bytes for name.
     */
    com.google.protobuf.ByteString
        getNameBytes();
    /**
     * 
     * Backend weight. Traffic is distributed between backends of a backend group according to their weights.
     * Weights must be set either for all backends of a group or for none of them.
     * Setting no weights is the same as setting equal non-zero weights for all backends.
     * If the weight is non-positive, traffic is not sent to the backend.
     * 
     *
     * .google.protobuf.Int64Value backend_weight = 2;
     * @return Whether the backendWeight field is set.
     */
    boolean hasBackendWeight();
    /**
     * 
     * Backend weight. Traffic is distributed between backends of a backend group according to their weights.
     * Weights must be set either for all backends of a group or for none of them.
     * Setting no weights is the same as setting equal non-zero weights for all backends.
     * If the weight is non-positive, traffic is not sent to the backend.
     * 
     *
     * .google.protobuf.Int64Value backend_weight = 2;
     * @return The backendWeight.
     */
    com.google.protobuf.Int64Value getBackendWeight();
    /**
     * 
     * Backend weight. Traffic is distributed between backends of a backend group according to their weights.
     * Weights must be set either for all backends of a group or for none of them.
     * Setting no weights is the same as setting equal non-zero weights for all backends.
     * If the weight is non-positive, traffic is not sent to the backend.
     * 
     *
     * .google.protobuf.Int64Value backend_weight = 2;
     */
    com.google.protobuf.Int64ValueOrBuilder getBackendWeightOrBuilder();
    /**
     * 
     * Load balancing configuration for the backend.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.LoadBalancingConfig load_balancing_config = 3;
     * @return Whether the loadBalancingConfig field is set.
     */
    boolean hasLoadBalancingConfig();
    /**
     * 
     * Load balancing configuration for the backend.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.LoadBalancingConfig load_balancing_config = 3;
     * @return The loadBalancingConfig.
     */
    yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig getLoadBalancingConfig();
    /**
     * 
     * Load balancing configuration for the backend.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.LoadBalancingConfig load_balancing_config = 3;
     */
    yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfigOrBuilder getLoadBalancingConfigOrBuilder();
    /**
     * 
     * Port used by all targets to receive traffic.
     * 
     *
     * int64 port = 4 [(.yandex.cloud.value) = "0-65535"];
     * @return The port.
     */
    long getPort();
    /**
     * 
     * Target groups that belong to the backend.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.TargetGroupsBackend target_groups = 5;
     * @return Whether the targetGroups field is set.
     */
    boolean hasTargetGroups();
    /**
     * 
     * Target groups that belong to the backend.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.TargetGroupsBackend target_groups = 5;
     * @return The targetGroups.
     */
    yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend getTargetGroups();
    /**
     * 
     * Target groups that belong to the backend.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.TargetGroupsBackend target_groups = 5;
     */
    yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackendOrBuilder getTargetGroupsOrBuilder();
    /**
     * 
     * Health checks to perform on targets from target groups.
     * For details about health checking, see [documentation](/docs/application-load-balancer/concepts/backend-group#health-checks).
     * If no health checks are specified, active health checking is not performed.
     * 
     *
     * repeated .yandex.cloud.apploadbalancer.v1.HealthCheck healthchecks = 7;
     */
    java.util.List 
        getHealthchecksList();
    /**
     * 
     * Health checks to perform on targets from target groups.
     * For details about health checking, see [documentation](/docs/application-load-balancer/concepts/backend-group#health-checks).
     * If no health checks are specified, active health checking is not performed.
     * 
     *
     * repeated .yandex.cloud.apploadbalancer.v1.HealthCheck healthchecks = 7;
     */
    yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck getHealthchecks(int index);
    /**
     * 
     * Health checks to perform on targets from target groups.
     * For details about health checking, see [documentation](/docs/application-load-balancer/concepts/backend-group#health-checks).
     * If no health checks are specified, active health checking is not performed.
     * 
     *
     * repeated .yandex.cloud.apploadbalancer.v1.HealthCheck healthchecks = 7;
     */
    int getHealthchecksCount();
    /**
     * 
     * Health checks to perform on targets from target groups.
     * For details about health checking, see [documentation](/docs/application-load-balancer/concepts/backend-group#health-checks).
     * If no health checks are specified, active health checking is not performed.
     * 
     *
     * repeated .yandex.cloud.apploadbalancer.v1.HealthCheck healthchecks = 7;
     */
    java.util.List extends yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheckOrBuilder> 
        getHealthchecksOrBuilderList();
    /**
     * 
     * Health checks to perform on targets from target groups.
     * For details about health checking, see [documentation](/docs/application-load-balancer/concepts/backend-group#health-checks).
     * If no health checks are specified, active health checking is not performed.
     * 
     *
     * repeated .yandex.cloud.apploadbalancer.v1.HealthCheck healthchecks = 7;
     */
    yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheckOrBuilder getHealthchecksOrBuilder(
        int index);
    /**
     * 
     * Settings for TLS connections between load balancer nodes and backend targets.
     * If specified, the load balancer establishes HTTPS (HTTP over TLS) connections with targets
     * and compares received certificates with the one specified in [BackendTls.validation_context].
     * If not specified, the load balancer establishes unencrypted HTTP connections with targets.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.BackendTls tls = 8;
     * @return Whether the tls field is set.
     */
    boolean hasTls();
    /**
     * 
     * Settings for TLS connections between load balancer nodes and backend targets.
     * If specified, the load balancer establishes HTTPS (HTTP over TLS) connections with targets
     * and compares received certificates with the one specified in [BackendTls.validation_context].
     * If not specified, the load balancer establishes unencrypted HTTP connections with targets.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.BackendTls tls = 8;
     * @return The tls.
     */
    yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls getTls();
    /**
     * 
     * Settings for TLS connections between load balancer nodes and backend targets.
     * If specified, the load balancer establishes HTTPS (HTTP over TLS) connections with targets
     * and compares received certificates with the one specified in [BackendTls.validation_context].
     * If not specified, the load balancer establishes unencrypted HTTP connections with targets.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.BackendTls tls = 8;
     */
    yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTlsOrBuilder getTlsOrBuilder();
    public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackend.BackendTypeCase getBackendTypeCase();
  }
  /**
   * 
   * A gRPC backend resource.
   * 
   *
   * Protobuf type {@code yandex.cloud.apploadbalancer.v1.GrpcBackend}
   */
  public static final class GrpcBackend extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:yandex.cloud.apploadbalancer.v1.GrpcBackend)
      GrpcBackendOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use GrpcBackend.newBuilder() to construct.
    private GrpcBackend(com.google.protobuf.GeneratedMessageV3.Builder> builder) {
      super(builder);
    }
    private GrpcBackend() {
      name_ = "";
      healthchecks_ = java.util.Collections.emptyList();
    }
    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new GrpcBackend();
    }
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private GrpcBackend(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();
              name_ = s;
              break;
            }
            case 18: {
              com.google.protobuf.Int64Value.Builder subBuilder = null;
              if (backendWeight_ != null) {
                subBuilder = backendWeight_.toBuilder();
              }
              backendWeight_ = input.readMessage(com.google.protobuf.Int64Value.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(backendWeight_);
                backendWeight_ = subBuilder.buildPartial();
              }
              break;
            }
            case 26: {
              yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig.Builder subBuilder = null;
              if (loadBalancingConfig_ != null) {
                subBuilder = loadBalancingConfig_.toBuilder();
              }
              loadBalancingConfig_ = input.readMessage(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(loadBalancingConfig_);
                loadBalancingConfig_ = subBuilder.buildPartial();
              }
              break;
            }
            case 32: {
              port_ = input.readInt64();
              break;
            }
            case 42: {
              yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend.Builder subBuilder = null;
              if (backendTypeCase_ == 5) {
                subBuilder = ((yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend) backendType_).toBuilder();
              }
              backendType_ =
                  input.readMessage(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend) backendType_);
                backendType_ = subBuilder.buildPartial();
              }
              backendTypeCase_ = 5;
              break;
            }
            case 58: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                healthchecks_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000001;
              }
              healthchecks_.add(
                  input.readMessage(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.parser(), extensionRegistry));
              break;
            }
            case 66: {
              yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls.Builder subBuilder = null;
              if (tls_ != null) {
                subBuilder = tls_.toBuilder();
              }
              tls_ = input.readMessage(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(tls_);
                tls_ = subBuilder.buildPartial();
              }
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          healthchecks_ = java.util.Collections.unmodifiableList(healthchecks_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_GrpcBackend_descriptor;
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_GrpcBackend_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackend.class, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackend.Builder.class);
    }
    private int backendTypeCase_ = 0;
    private java.lang.Object backendType_;
    public enum BackendTypeCase
        implements com.google.protobuf.Internal.EnumLite,
            com.google.protobuf.AbstractMessage.InternalOneOfEnum {
      TARGET_GROUPS(5),
      BACKENDTYPE_NOT_SET(0);
      private final int value;
      private BackendTypeCase(int value) {
        this.value = value;
      }
      /**
       * @param value The number of the enum to look for.
       * @return The enum associated with the given number.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static BackendTypeCase valueOf(int value) {
        return forNumber(value);
      }
      public static BackendTypeCase forNumber(int value) {
        switch (value) {
          case 5: return TARGET_GROUPS;
          case 0: return BACKENDTYPE_NOT_SET;
          default: return null;
        }
      }
      public int getNumber() {
        return this.value;
      }
    };
    public BackendTypeCase
    getBackendTypeCase() {
      return BackendTypeCase.forNumber(
          backendTypeCase_);
    }
    public static final int NAME_FIELD_NUMBER = 1;
    private volatile java.lang.Object name_;
    /**
     * 
     * Name of the backend.
     * 
     *
     * string name = 1 [(.yandex.cloud.required) = true, (.yandex.cloud.pattern) = "[a-z][-a-z0-9]{1,61}[a-z0-9]"];
     * @return The name.
     */
    @java.lang.Override
    public java.lang.String getName() {
      java.lang.Object ref = name_;
      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();
        name_ = s;
        return s;
      }
    }
    /**
     * 
     * Name of the backend.
     * 
     *
     * string name = 1 [(.yandex.cloud.required) = true, (.yandex.cloud.pattern) = "[a-z][-a-z0-9]{1,61}[a-z0-9]"];
     * @return The bytes for name.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getNameBytes() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    public static final int BACKEND_WEIGHT_FIELD_NUMBER = 2;
    private com.google.protobuf.Int64Value backendWeight_;
    /**
     * 
     * Backend weight. Traffic is distributed between backends of a backend group according to their weights.
     * Weights must be set either for all backends of a group or for none of them.
     * Setting no weights is the same as setting equal non-zero weights for all backends.
     * If the weight is non-positive, traffic is not sent to the backend.
     * 
     *
     * .google.protobuf.Int64Value backend_weight = 2;
     * @return Whether the backendWeight field is set.
     */
    @java.lang.Override
    public boolean hasBackendWeight() {
      return backendWeight_ != null;
    }
    /**
     * 
     * Backend weight. Traffic is distributed between backends of a backend group according to their weights.
     * Weights must be set either for all backends of a group or for none of them.
     * Setting no weights is the same as setting equal non-zero weights for all backends.
     * If the weight is non-positive, traffic is not sent to the backend.
     * 
     *
     * .google.protobuf.Int64Value backend_weight = 2;
     * @return The backendWeight.
     */
    @java.lang.Override
    public com.google.protobuf.Int64Value getBackendWeight() {
      return backendWeight_ == null ? com.google.protobuf.Int64Value.getDefaultInstance() : backendWeight_;
    }
    /**
     * 
     * Backend weight. Traffic is distributed between backends of a backend group according to their weights.
     * Weights must be set either for all backends of a group or for none of them.
     * Setting no weights is the same as setting equal non-zero weights for all backends.
     * If the weight is non-positive, traffic is not sent to the backend.
     * 
     *
     * .google.protobuf.Int64Value backend_weight = 2;
     */
    @java.lang.Override
    public com.google.protobuf.Int64ValueOrBuilder getBackendWeightOrBuilder() {
      return getBackendWeight();
    }
    public static final int LOAD_BALANCING_CONFIG_FIELD_NUMBER = 3;
    private yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig loadBalancingConfig_;
    /**
     * 
     * Load balancing configuration for the backend.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.LoadBalancingConfig load_balancing_config = 3;
     * @return Whether the loadBalancingConfig field is set.
     */
    @java.lang.Override
    public boolean hasLoadBalancingConfig() {
      return loadBalancingConfig_ != null;
    }
    /**
     * 
     * Load balancing configuration for the backend.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.LoadBalancingConfig load_balancing_config = 3;
     * @return The loadBalancingConfig.
     */
    @java.lang.Override
    public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig getLoadBalancingConfig() {
      return loadBalancingConfig_ == null ? yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig.getDefaultInstance() : loadBalancingConfig_;
    }
    /**
     * 
     * Load balancing configuration for the backend.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.LoadBalancingConfig load_balancing_config = 3;
     */
    @java.lang.Override
    public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfigOrBuilder getLoadBalancingConfigOrBuilder() {
      return getLoadBalancingConfig();
    }
    public static final int PORT_FIELD_NUMBER = 4;
    private long port_;
    /**
     * 
     * Port used by all targets to receive traffic.
     * 
     *
     * int64 port = 4 [(.yandex.cloud.value) = "0-65535"];
     * @return The port.
     */
    @java.lang.Override
    public long getPort() {
      return port_;
    }
    public static final int TARGET_GROUPS_FIELD_NUMBER = 5;
    /**
     * 
     * Target groups that belong to the backend.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.TargetGroupsBackend target_groups = 5;
     * @return Whether the targetGroups field is set.
     */
    @java.lang.Override
    public boolean hasTargetGroups() {
      return backendTypeCase_ == 5;
    }
    /**
     * 
     * Target groups that belong to the backend.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.TargetGroupsBackend target_groups = 5;
     * @return The targetGroups.
     */
    @java.lang.Override
    public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend getTargetGroups() {
      if (backendTypeCase_ == 5) {
         return (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend) backendType_;
      }
      return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend.getDefaultInstance();
    }
    /**
     * 
     * Target groups that belong to the backend.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.TargetGroupsBackend target_groups = 5;
     */
    @java.lang.Override
    public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackendOrBuilder getTargetGroupsOrBuilder() {
      if (backendTypeCase_ == 5) {
         return (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend) backendType_;
      }
      return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend.getDefaultInstance();
    }
    public static final int HEALTHCHECKS_FIELD_NUMBER = 7;
    private java.util.List healthchecks_;
    /**
     * 
     * Health checks to perform on targets from target groups.
     * For details about health checking, see [documentation](/docs/application-load-balancer/concepts/backend-group#health-checks).
     * If no health checks are specified, active health checking is not performed.
     * 
     *
     * repeated .yandex.cloud.apploadbalancer.v1.HealthCheck healthchecks = 7;
     */
    @java.lang.Override
    public java.util.List getHealthchecksList() {
      return healthchecks_;
    }
    /**
     * 
     * Health checks to perform on targets from target groups.
     * For details about health checking, see [documentation](/docs/application-load-balancer/concepts/backend-group#health-checks).
     * If no health checks are specified, active health checking is not performed.
     * 
     *
     * repeated .yandex.cloud.apploadbalancer.v1.HealthCheck healthchecks = 7;
     */
    @java.lang.Override
    public java.util.List extends yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheckOrBuilder> 
        getHealthchecksOrBuilderList() {
      return healthchecks_;
    }
    /**
     * 
     * Health checks to perform on targets from target groups.
     * For details about health checking, see [documentation](/docs/application-load-balancer/concepts/backend-group#health-checks).
     * If no health checks are specified, active health checking is not performed.
     * 
     *
     * repeated .yandex.cloud.apploadbalancer.v1.HealthCheck healthchecks = 7;
     */
    @java.lang.Override
    public int getHealthchecksCount() {
      return healthchecks_.size();
    }
    /**
     * 
     * Health checks to perform on targets from target groups.
     * For details about health checking, see [documentation](/docs/application-load-balancer/concepts/backend-group#health-checks).
     * If no health checks are specified, active health checking is not performed.
     * 
     *
     * repeated .yandex.cloud.apploadbalancer.v1.HealthCheck healthchecks = 7;
     */
    @java.lang.Override
    public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck getHealthchecks(int index) {
      return healthchecks_.get(index);
    }
    /**
     * 
     * Health checks to perform on targets from target groups.
     * For details about health checking, see [documentation](/docs/application-load-balancer/concepts/backend-group#health-checks).
     * If no health checks are specified, active health checking is not performed.
     * 
     *
     * repeated .yandex.cloud.apploadbalancer.v1.HealthCheck healthchecks = 7;
     */
    @java.lang.Override
    public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheckOrBuilder getHealthchecksOrBuilder(
        int index) {
      return healthchecks_.get(index);
    }
    public static final int TLS_FIELD_NUMBER = 8;
    private yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls tls_;
    /**
     * 
     * Settings for TLS connections between load balancer nodes and backend targets.
     * If specified, the load balancer establishes HTTPS (HTTP over TLS) connections with targets
     * and compares received certificates with the one specified in [BackendTls.validation_context].
     * If not specified, the load balancer establishes unencrypted HTTP connections with targets.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.BackendTls tls = 8;
     * @return Whether the tls field is set.
     */
    @java.lang.Override
    public boolean hasTls() {
      return tls_ != null;
    }
    /**
     * 
     * Settings for TLS connections between load balancer nodes and backend targets.
     * If specified, the load balancer establishes HTTPS (HTTP over TLS) connections with targets
     * and compares received certificates with the one specified in [BackendTls.validation_context].
     * If not specified, the load balancer establishes unencrypted HTTP connections with targets.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.BackendTls tls = 8;
     * @return The tls.
     */
    @java.lang.Override
    public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls getTls() {
      return tls_ == null ? yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls.getDefaultInstance() : tls_;
    }
    /**
     * 
     * Settings for TLS connections between load balancer nodes and backend targets.
     * If specified, the load balancer establishes HTTPS (HTTP over TLS) connections with targets
     * and compares received certificates with the one specified in [BackendTls.validation_context].
     * If not specified, the load balancer establishes unencrypted HTTP connections with targets.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.BackendTls tls = 8;
     */
    @java.lang.Override
    public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTlsOrBuilder getTlsOrBuilder() {
      return getTls();
    }
    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;
      memoizedIsInitialized = 1;
      return true;
    }
    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
      }
      if (backendWeight_ != null) {
        output.writeMessage(2, getBackendWeight());
      }
      if (loadBalancingConfig_ != null) {
        output.writeMessage(3, getLoadBalancingConfig());
      }
      if (port_ != 0L) {
        output.writeInt64(4, port_);
      }
      if (backendTypeCase_ == 5) {
        output.writeMessage(5, (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend) backendType_);
      }
      for (int i = 0; i < healthchecks_.size(); i++) {
        output.writeMessage(7, healthchecks_.get(i));
      }
      if (tls_ != null) {
        output.writeMessage(8, getTls());
      }
      unknownFields.writeTo(output);
    }
    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;
      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
      }
      if (backendWeight_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getBackendWeight());
      }
      if (loadBalancingConfig_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getLoadBalancingConfig());
      }
      if (port_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(4, port_);
      }
      if (backendTypeCase_ == 5) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend) backendType_);
      }
      for (int i = 0; i < healthchecks_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(7, healthchecks_.get(i));
      }
      if (tls_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(8, getTls());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackend)) {
        return super.equals(obj);
      }
      yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackend other = (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackend) obj;
      if (!getName()
          .equals(other.getName())) return false;
      if (hasBackendWeight() != other.hasBackendWeight()) return false;
      if (hasBackendWeight()) {
        if (!getBackendWeight()
            .equals(other.getBackendWeight())) return false;
      }
      if (hasLoadBalancingConfig() != other.hasLoadBalancingConfig()) return false;
      if (hasLoadBalancingConfig()) {
        if (!getLoadBalancingConfig()
            .equals(other.getLoadBalancingConfig())) return false;
      }
      if (getPort()
          != other.getPort()) return false;
      if (!getHealthchecksList()
          .equals(other.getHealthchecksList())) return false;
      if (hasTls() != other.hasTls()) return false;
      if (hasTls()) {
        if (!getTls()
            .equals(other.getTls())) return false;
      }
      if (!getBackendTypeCase().equals(other.getBackendTypeCase())) return false;
      switch (backendTypeCase_) {
        case 5:
          if (!getTargetGroups()
              .equals(other.getTargetGroups())) return false;
          break;
        case 0:
        default:
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }
    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + NAME_FIELD_NUMBER;
      hash = (53 * hash) + getName().hashCode();
      if (hasBackendWeight()) {
        hash = (37 * hash) + BACKEND_WEIGHT_FIELD_NUMBER;
        hash = (53 * hash) + getBackendWeight().hashCode();
      }
      if (hasLoadBalancingConfig()) {
        hash = (37 * hash) + LOAD_BALANCING_CONFIG_FIELD_NUMBER;
        hash = (53 * hash) + getLoadBalancingConfig().hashCode();
      }
      hash = (37 * hash) + PORT_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getPort());
      if (getHealthchecksCount() > 0) {
        hash = (37 * hash) + HEALTHCHECKS_FIELD_NUMBER;
        hash = (53 * hash) + getHealthchecksList().hashCode();
      }
      if (hasTls()) {
        hash = (37 * hash) + TLS_FIELD_NUMBER;
        hash = (53 * hash) + getTls().hashCode();
      }
      switch (backendTypeCase_) {
        case 5:
          hash = (37 * hash) + TARGET_GROUPS_FIELD_NUMBER;
          hash = (53 * hash) + getTargetGroups().hashCode();
          break;
        case 0:
        default:
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackend parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackend parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackend parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackend parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackend parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackend parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackend parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackend 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 yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackend parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackend 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 yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackend parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackend 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(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackend 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;
    }
    /**
     * 
     * A gRPC backend resource.
     * 
     *
     * Protobuf type {@code yandex.cloud.apploadbalancer.v1.GrpcBackend}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:yandex.cloud.apploadbalancer.v1.GrpcBackend)
        yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackendOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_GrpcBackend_descriptor;
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_GrpcBackend_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackend.class, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackend.Builder.class);
      }
      // Construct using yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackend.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getHealthchecksFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        name_ = "";
        if (backendWeightBuilder_ == null) {
          backendWeight_ = null;
        } else {
          backendWeight_ = null;
          backendWeightBuilder_ = null;
        }
        if (loadBalancingConfigBuilder_ == null) {
          loadBalancingConfig_ = null;
        } else {
          loadBalancingConfig_ = null;
          loadBalancingConfigBuilder_ = null;
        }
        port_ = 0L;
        if (healthchecksBuilder_ == null) {
          healthchecks_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          healthchecksBuilder_.clear();
        }
        if (tlsBuilder_ == null) {
          tls_ = null;
        } else {
          tls_ = null;
          tlsBuilder_ = null;
        }
        backendTypeCase_ = 0;
        backendType_ = null;
        return this;
      }
      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_GrpcBackend_descriptor;
      }
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackend getDefaultInstanceForType() {
        return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackend.getDefaultInstance();
      }
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackend build() {
        yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackend result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackend buildPartial() {
        yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackend result = new yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackend(this);
        int from_bitField0_ = bitField0_;
        result.name_ = name_;
        if (backendWeightBuilder_ == null) {
          result.backendWeight_ = backendWeight_;
        } else {
          result.backendWeight_ = backendWeightBuilder_.build();
        }
        if (loadBalancingConfigBuilder_ == null) {
          result.loadBalancingConfig_ = loadBalancingConfig_;
        } else {
          result.loadBalancingConfig_ = loadBalancingConfigBuilder_.build();
        }
        result.port_ = port_;
        if (backendTypeCase_ == 5) {
          if (targetGroupsBuilder_ == null) {
            result.backendType_ = backendType_;
          } else {
            result.backendType_ = targetGroupsBuilder_.build();
          }
        }
        if (healthchecksBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            healthchecks_ = java.util.Collections.unmodifiableList(healthchecks_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.healthchecks_ = healthchecks_;
        } else {
          result.healthchecks_ = healthchecksBuilder_.build();
        }
        if (tlsBuilder_ == null) {
          result.tls_ = tls_;
        } else {
          result.tls_ = tlsBuilder_.build();
        }
        result.backendTypeCase_ = backendTypeCase_;
        onBuilt();
        return result;
      }
      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackend) {
          return mergeFrom((yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackend)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      public Builder mergeFrom(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackend other) {
        if (other == yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackend.getDefaultInstance()) return this;
        if (!other.getName().isEmpty()) {
          name_ = other.name_;
          onChanged();
        }
        if (other.hasBackendWeight()) {
          mergeBackendWeight(other.getBackendWeight());
        }
        if (other.hasLoadBalancingConfig()) {
          mergeLoadBalancingConfig(other.getLoadBalancingConfig());
        }
        if (other.getPort() != 0L) {
          setPort(other.getPort());
        }
        if (healthchecksBuilder_ == null) {
          if (!other.healthchecks_.isEmpty()) {
            if (healthchecks_.isEmpty()) {
              healthchecks_ = other.healthchecks_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureHealthchecksIsMutable();
              healthchecks_.addAll(other.healthchecks_);
            }
            onChanged();
          }
        } else {
          if (!other.healthchecks_.isEmpty()) {
            if (healthchecksBuilder_.isEmpty()) {
              healthchecksBuilder_.dispose();
              healthchecksBuilder_ = null;
              healthchecks_ = other.healthchecks_;
              bitField0_ = (bitField0_ & ~0x00000001);
              healthchecksBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getHealthchecksFieldBuilder() : null;
            } else {
              healthchecksBuilder_.addAllMessages(other.healthchecks_);
            }
          }
        }
        if (other.hasTls()) {
          mergeTls(other.getTls());
        }
        switch (other.getBackendTypeCase()) {
          case TARGET_GROUPS: {
            mergeTargetGroups(other.getTargetGroups());
            break;
          }
          case BACKENDTYPE_NOT_SET: {
            break;
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }
      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }
      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackend parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackend) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int backendTypeCase_ = 0;
      private java.lang.Object backendType_;
      public BackendTypeCase
          getBackendTypeCase() {
        return BackendTypeCase.forNumber(
            backendTypeCase_);
      }
      public Builder clearBackendType() {
        backendTypeCase_ = 0;
        backendType_ = null;
        onChanged();
        return this;
      }
      private int bitField0_;
      private java.lang.Object name_ = "";
      /**
       * 
       * Name of the backend.
       * 
       *
       * string name = 1 [(.yandex.cloud.required) = true, (.yandex.cloud.pattern) = "[a-z][-a-z0-9]{1,61}[a-z0-9]"];
       * @return The name.
       */
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          name_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * 
       * Name of the backend.
       * 
       *
       * string name = 1 [(.yandex.cloud.required) = true, (.yandex.cloud.pattern) = "[a-z][-a-z0-9]{1,61}[a-z0-9]"];
       * @return The bytes for name.
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * 
       * Name of the backend.
       * 
       *
       * string name = 1 [(.yandex.cloud.required) = true, (.yandex.cloud.pattern) = "[a-z][-a-z0-9]{1,61}[a-z0-9]"];
       * @param value The name to set.
       * @return This builder for chaining.
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        name_ = value;
        onChanged();
        return this;
      }
      /**
       * 
       * Name of the backend.
       * 
       *
       * string name = 1 [(.yandex.cloud.required) = true, (.yandex.cloud.pattern) = "[a-z][-a-z0-9]{1,61}[a-z0-9]"];
       * @return This builder for chaining.
       */
      public Builder clearName() {
        
        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      /**
       * 
       * Name of the backend.
       * 
       *
       * string name = 1 [(.yandex.cloud.required) = true, (.yandex.cloud.pattern) = "[a-z][-a-z0-9]{1,61}[a-z0-9]"];
       * @param value The bytes for name to set.
       * @return This builder for chaining.
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        name_ = value;
        onChanged();
        return this;
      }
      private com.google.protobuf.Int64Value backendWeight_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Int64Value, com.google.protobuf.Int64Value.Builder, com.google.protobuf.Int64ValueOrBuilder> backendWeightBuilder_;
      /**
       * 
       * Backend weight. Traffic is distributed between backends of a backend group according to their weights.
       * Weights must be set either for all backends of a group or for none of them.
       * Setting no weights is the same as setting equal non-zero weights for all backends.
       * If the weight is non-positive, traffic is not sent to the backend.
       * 
       *
       * .google.protobuf.Int64Value backend_weight = 2;
       * @return Whether the backendWeight field is set.
       */
      public boolean hasBackendWeight() {
        return backendWeightBuilder_ != null || backendWeight_ != null;
      }
      /**
       * 
       * Backend weight. Traffic is distributed between backends of a backend group according to their weights.
       * Weights must be set either for all backends of a group or for none of them.
       * Setting no weights is the same as setting equal non-zero weights for all backends.
       * If the weight is non-positive, traffic is not sent to the backend.
       * 
       *
       * .google.protobuf.Int64Value backend_weight = 2;
       * @return The backendWeight.
       */
      public com.google.protobuf.Int64Value getBackendWeight() {
        if (backendWeightBuilder_ == null) {
          return backendWeight_ == null ? com.google.protobuf.Int64Value.getDefaultInstance() : backendWeight_;
        } else {
          return backendWeightBuilder_.getMessage();
        }
      }
      /**
       * 
       * Backend weight. Traffic is distributed between backends of a backend group according to their weights.
       * Weights must be set either for all backends of a group or for none of them.
       * Setting no weights is the same as setting equal non-zero weights for all backends.
       * If the weight is non-positive, traffic is not sent to the backend.
       * 
       *
       * .google.protobuf.Int64Value backend_weight = 2;
       */
      public Builder setBackendWeight(com.google.protobuf.Int64Value value) {
        if (backendWeightBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          backendWeight_ = value;
          onChanged();
        } else {
          backendWeightBuilder_.setMessage(value);
        }
        return this;
      }
      /**
       * 
       * Backend weight. Traffic is distributed between backends of a backend group according to their weights.
       * Weights must be set either for all backends of a group or for none of them.
       * Setting no weights is the same as setting equal non-zero weights for all backends.
       * If the weight is non-positive, traffic is not sent to the backend.
       * 
       *
       * .google.protobuf.Int64Value backend_weight = 2;
       */
      public Builder setBackendWeight(
          com.google.protobuf.Int64Value.Builder builderForValue) {
        if (backendWeightBuilder_ == null) {
          backendWeight_ = builderForValue.build();
          onChanged();
        } else {
          backendWeightBuilder_.setMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * 
       * Backend weight. Traffic is distributed between backends of a backend group according to their weights.
       * Weights must be set either for all backends of a group or for none of them.
       * Setting no weights is the same as setting equal non-zero weights for all backends.
       * If the weight is non-positive, traffic is not sent to the backend.
       * 
       *
       * .google.protobuf.Int64Value backend_weight = 2;
       */
      public Builder mergeBackendWeight(com.google.protobuf.Int64Value value) {
        if (backendWeightBuilder_ == null) {
          if (backendWeight_ != null) {
            backendWeight_ =
              com.google.protobuf.Int64Value.newBuilder(backendWeight_).mergeFrom(value).buildPartial();
          } else {
            backendWeight_ = value;
          }
          onChanged();
        } else {
          backendWeightBuilder_.mergeFrom(value);
        }
        return this;
      }
      /**
       * 
       * Backend weight. Traffic is distributed between backends of a backend group according to their weights.
       * Weights must be set either for all backends of a group or for none of them.
       * Setting no weights is the same as setting equal non-zero weights for all backends.
       * If the weight is non-positive, traffic is not sent to the backend.
       * 
       *
       * .google.protobuf.Int64Value backend_weight = 2;
       */
      public Builder clearBackendWeight() {
        if (backendWeightBuilder_ == null) {
          backendWeight_ = null;
          onChanged();
        } else {
          backendWeight_ = null;
          backendWeightBuilder_ = null;
        }
        return this;
      }
      /**
       * 
       * Backend weight. Traffic is distributed between backends of a backend group according to their weights.
       * Weights must be set either for all backends of a group or for none of them.
       * Setting no weights is the same as setting equal non-zero weights for all backends.
       * If the weight is non-positive, traffic is not sent to the backend.
       * 
       *
       * .google.protobuf.Int64Value backend_weight = 2;
       */
      public com.google.protobuf.Int64Value.Builder getBackendWeightBuilder() {
        
        onChanged();
        return getBackendWeightFieldBuilder().getBuilder();
      }
      /**
       * 
       * Backend weight. Traffic is distributed between backends of a backend group according to their weights.
       * Weights must be set either for all backends of a group or for none of them.
       * Setting no weights is the same as setting equal non-zero weights for all backends.
       * If the weight is non-positive, traffic is not sent to the backend.
       * 
       *
       * .google.protobuf.Int64Value backend_weight = 2;
       */
      public com.google.protobuf.Int64ValueOrBuilder getBackendWeightOrBuilder() {
        if (backendWeightBuilder_ != null) {
          return backendWeightBuilder_.getMessageOrBuilder();
        } else {
          return backendWeight_ == null ?
              com.google.protobuf.Int64Value.getDefaultInstance() : backendWeight_;
        }
      }
      /**
       * 
       * Backend weight. Traffic is distributed between backends of a backend group according to their weights.
       * Weights must be set either for all backends of a group or for none of them.
       * Setting no weights is the same as setting equal non-zero weights for all backends.
       * If the weight is non-positive, traffic is not sent to the backend.
       * 
       *
       * .google.protobuf.Int64Value backend_weight = 2;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Int64Value, com.google.protobuf.Int64Value.Builder, com.google.protobuf.Int64ValueOrBuilder> 
          getBackendWeightFieldBuilder() {
        if (backendWeightBuilder_ == null) {
          backendWeightBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.protobuf.Int64Value, com.google.protobuf.Int64Value.Builder, com.google.protobuf.Int64ValueOrBuilder>(
                  getBackendWeight(),
                  getParentForChildren(),
                  isClean());
          backendWeight_ = null;
        }
        return backendWeightBuilder_;
      }
      private yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig loadBalancingConfig_;
      private com.google.protobuf.SingleFieldBuilderV3<
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig.Builder, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfigOrBuilder> loadBalancingConfigBuilder_;
      /**
       * 
       * Load balancing configuration for the backend.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.LoadBalancingConfig load_balancing_config = 3;
       * @return Whether the loadBalancingConfig field is set.
       */
      public boolean hasLoadBalancingConfig() {
        return loadBalancingConfigBuilder_ != null || loadBalancingConfig_ != null;
      }
      /**
       * 
       * Load balancing configuration for the backend.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.LoadBalancingConfig load_balancing_config = 3;
       * @return The loadBalancingConfig.
       */
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig getLoadBalancingConfig() {
        if (loadBalancingConfigBuilder_ == null) {
          return loadBalancingConfig_ == null ? yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig.getDefaultInstance() : loadBalancingConfig_;
        } else {
          return loadBalancingConfigBuilder_.getMessage();
        }
      }
      /**
       * 
       * Load balancing configuration for the backend.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.LoadBalancingConfig load_balancing_config = 3;
       */
      public Builder setLoadBalancingConfig(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig value) {
        if (loadBalancingConfigBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          loadBalancingConfig_ = value;
          onChanged();
        } else {
          loadBalancingConfigBuilder_.setMessage(value);
        }
        return this;
      }
      /**
       * 
       * Load balancing configuration for the backend.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.LoadBalancingConfig load_balancing_config = 3;
       */
      public Builder setLoadBalancingConfig(
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig.Builder builderForValue) {
        if (loadBalancingConfigBuilder_ == null) {
          loadBalancingConfig_ = builderForValue.build();
          onChanged();
        } else {
          loadBalancingConfigBuilder_.setMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * 
       * Load balancing configuration for the backend.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.LoadBalancingConfig load_balancing_config = 3;
       */
      public Builder mergeLoadBalancingConfig(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig value) {
        if (loadBalancingConfigBuilder_ == null) {
          if (loadBalancingConfig_ != null) {
            loadBalancingConfig_ =
              yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig.newBuilder(loadBalancingConfig_).mergeFrom(value).buildPartial();
          } else {
            loadBalancingConfig_ = value;
          }
          onChanged();
        } else {
          loadBalancingConfigBuilder_.mergeFrom(value);
        }
        return this;
      }
      /**
       * 
       * Load balancing configuration for the backend.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.LoadBalancingConfig load_balancing_config = 3;
       */
      public Builder clearLoadBalancingConfig() {
        if (loadBalancingConfigBuilder_ == null) {
          loadBalancingConfig_ = null;
          onChanged();
        } else {
          loadBalancingConfig_ = null;
          loadBalancingConfigBuilder_ = null;
        }
        return this;
      }
      /**
       * 
       * Load balancing configuration for the backend.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.LoadBalancingConfig load_balancing_config = 3;
       */
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig.Builder getLoadBalancingConfigBuilder() {
        
        onChanged();
        return getLoadBalancingConfigFieldBuilder().getBuilder();
      }
      /**
       * 
       * Load balancing configuration for the backend.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.LoadBalancingConfig load_balancing_config = 3;
       */
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfigOrBuilder getLoadBalancingConfigOrBuilder() {
        if (loadBalancingConfigBuilder_ != null) {
          return loadBalancingConfigBuilder_.getMessageOrBuilder();
        } else {
          return loadBalancingConfig_ == null ?
              yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig.getDefaultInstance() : loadBalancingConfig_;
        }
      }
      /**
       * 
       * Load balancing configuration for the backend.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.LoadBalancingConfig load_balancing_config = 3;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig.Builder, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfigOrBuilder> 
          getLoadBalancingConfigFieldBuilder() {
        if (loadBalancingConfigBuilder_ == null) {
          loadBalancingConfigBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfig.Builder, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.LoadBalancingConfigOrBuilder>(
                  getLoadBalancingConfig(),
                  getParentForChildren(),
                  isClean());
          loadBalancingConfig_ = null;
        }
        return loadBalancingConfigBuilder_;
      }
      private long port_ ;
      /**
       * 
       * Port used by all targets to receive traffic.
       * 
       *
       * int64 port = 4 [(.yandex.cloud.value) = "0-65535"];
       * @return The port.
       */
      @java.lang.Override
      public long getPort() {
        return port_;
      }
      /**
       * 
       * Port used by all targets to receive traffic.
       * 
       *
       * int64 port = 4 [(.yandex.cloud.value) = "0-65535"];
       * @param value The port to set.
       * @return This builder for chaining.
       */
      public Builder setPort(long value) {
        
        port_ = value;
        onChanged();
        return this;
      }
      /**
       * 
       * Port used by all targets to receive traffic.
       * 
       *
       * int64 port = 4 [(.yandex.cloud.value) = "0-65535"];
       * @return This builder for chaining.
       */
      public Builder clearPort() {
        
        port_ = 0L;
        onChanged();
        return this;
      }
      private com.google.protobuf.SingleFieldBuilderV3<
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend.Builder, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackendOrBuilder> targetGroupsBuilder_;
      /**
       * 
       * Target groups that belong to the backend.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.TargetGroupsBackend target_groups = 5;
       * @return Whether the targetGroups field is set.
       */
      @java.lang.Override
      public boolean hasTargetGroups() {
        return backendTypeCase_ == 5;
      }
      /**
       * 
       * Target groups that belong to the backend.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.TargetGroupsBackend target_groups = 5;
       * @return The targetGroups.
       */
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend getTargetGroups() {
        if (targetGroupsBuilder_ == null) {
          if (backendTypeCase_ == 5) {
            return (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend) backendType_;
          }
          return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend.getDefaultInstance();
        } else {
          if (backendTypeCase_ == 5) {
            return targetGroupsBuilder_.getMessage();
          }
          return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend.getDefaultInstance();
        }
      }
      /**
       * 
       * Target groups that belong to the backend.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.TargetGroupsBackend target_groups = 5;
       */
      public Builder setTargetGroups(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend value) {
        if (targetGroupsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          backendType_ = value;
          onChanged();
        } else {
          targetGroupsBuilder_.setMessage(value);
        }
        backendTypeCase_ = 5;
        return this;
      }
      /**
       * 
       * Target groups that belong to the backend.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.TargetGroupsBackend target_groups = 5;
       */
      public Builder setTargetGroups(
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend.Builder builderForValue) {
        if (targetGroupsBuilder_ == null) {
          backendType_ = builderForValue.build();
          onChanged();
        } else {
          targetGroupsBuilder_.setMessage(builderForValue.build());
        }
        backendTypeCase_ = 5;
        return this;
      }
      /**
       * 
       * Target groups that belong to the backend.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.TargetGroupsBackend target_groups = 5;
       */
      public Builder mergeTargetGroups(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend value) {
        if (targetGroupsBuilder_ == null) {
          if (backendTypeCase_ == 5 &&
              backendType_ != yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend.getDefaultInstance()) {
            backendType_ = yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend.newBuilder((yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend) backendType_)
                .mergeFrom(value).buildPartial();
          } else {
            backendType_ = value;
          }
          onChanged();
        } else {
          if (backendTypeCase_ == 5) {
            targetGroupsBuilder_.mergeFrom(value);
          }
          targetGroupsBuilder_.setMessage(value);
        }
        backendTypeCase_ = 5;
        return this;
      }
      /**
       * 
       * Target groups that belong to the backend.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.TargetGroupsBackend target_groups = 5;
       */
      public Builder clearTargetGroups() {
        if (targetGroupsBuilder_ == null) {
          if (backendTypeCase_ == 5) {
            backendTypeCase_ = 0;
            backendType_ = null;
            onChanged();
          }
        } else {
          if (backendTypeCase_ == 5) {
            backendTypeCase_ = 0;
            backendType_ = null;
          }
          targetGroupsBuilder_.clear();
        }
        return this;
      }
      /**
       * 
       * Target groups that belong to the backend.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.TargetGroupsBackend target_groups = 5;
       */
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend.Builder getTargetGroupsBuilder() {
        return getTargetGroupsFieldBuilder().getBuilder();
      }
      /**
       * 
       * Target groups that belong to the backend.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.TargetGroupsBackend target_groups = 5;
       */
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackendOrBuilder getTargetGroupsOrBuilder() {
        if ((backendTypeCase_ == 5) && (targetGroupsBuilder_ != null)) {
          return targetGroupsBuilder_.getMessageOrBuilder();
        } else {
          if (backendTypeCase_ == 5) {
            return (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend) backendType_;
          }
          return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend.getDefaultInstance();
        }
      }
      /**
       * 
       * Target groups that belong to the backend.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.TargetGroupsBackend target_groups = 5;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend.Builder, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackendOrBuilder> 
          getTargetGroupsFieldBuilder() {
        if (targetGroupsBuilder_ == null) {
          if (!(backendTypeCase_ == 5)) {
            backendType_ = yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend.getDefaultInstance();
          }
          targetGroupsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend.Builder, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackendOrBuilder>(
                  (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend) backendType_,
                  getParentForChildren(),
                  isClean());
          backendType_ = null;
        }
        backendTypeCase_ = 5;
        onChanged();;
        return targetGroupsBuilder_;
      }
      private java.util.List healthchecks_ =
        java.util.Collections.emptyList();
      private void ensureHealthchecksIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          healthchecks_ = new java.util.ArrayList(healthchecks_);
          bitField0_ |= 0x00000001;
         }
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.Builder, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheckOrBuilder> healthchecksBuilder_;
      /**
       * 
       * Health checks to perform on targets from target groups.
       * For details about health checking, see [documentation](/docs/application-load-balancer/concepts/backend-group#health-checks).
       * If no health checks are specified, active health checking is not performed.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.HealthCheck healthchecks = 7;
       */
      public java.util.List getHealthchecksList() {
        if (healthchecksBuilder_ == null) {
          return java.util.Collections.unmodifiableList(healthchecks_);
        } else {
          return healthchecksBuilder_.getMessageList();
        }
      }
      /**
       * 
       * Health checks to perform on targets from target groups.
       * For details about health checking, see [documentation](/docs/application-load-balancer/concepts/backend-group#health-checks).
       * If no health checks are specified, active health checking is not performed.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.HealthCheck healthchecks = 7;
       */
      public int getHealthchecksCount() {
        if (healthchecksBuilder_ == null) {
          return healthchecks_.size();
        } else {
          return healthchecksBuilder_.getCount();
        }
      }
      /**
       * 
       * Health checks to perform on targets from target groups.
       * For details about health checking, see [documentation](/docs/application-load-balancer/concepts/backend-group#health-checks).
       * If no health checks are specified, active health checking is not performed.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.HealthCheck healthchecks = 7;
       */
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck getHealthchecks(int index) {
        if (healthchecksBuilder_ == null) {
          return healthchecks_.get(index);
        } else {
          return healthchecksBuilder_.getMessage(index);
        }
      }
      /**
       * 
       * Health checks to perform on targets from target groups.
       * For details about health checking, see [documentation](/docs/application-load-balancer/concepts/backend-group#health-checks).
       * If no health checks are specified, active health checking is not performed.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.HealthCheck healthchecks = 7;
       */
      public Builder setHealthchecks(
          int index, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck value) {
        if (healthchecksBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureHealthchecksIsMutable();
          healthchecks_.set(index, value);
          onChanged();
        } else {
          healthchecksBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * 
       * Health checks to perform on targets from target groups.
       * For details about health checking, see [documentation](/docs/application-load-balancer/concepts/backend-group#health-checks).
       * If no health checks are specified, active health checking is not performed.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.HealthCheck healthchecks = 7;
       */
      public Builder setHealthchecks(
          int index, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.Builder builderForValue) {
        if (healthchecksBuilder_ == null) {
          ensureHealthchecksIsMutable();
          healthchecks_.set(index, builderForValue.build());
          onChanged();
        } else {
          healthchecksBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * 
       * Health checks to perform on targets from target groups.
       * For details about health checking, see [documentation](/docs/application-load-balancer/concepts/backend-group#health-checks).
       * If no health checks are specified, active health checking is not performed.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.HealthCheck healthchecks = 7;
       */
      public Builder addHealthchecks(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck value) {
        if (healthchecksBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureHealthchecksIsMutable();
          healthchecks_.add(value);
          onChanged();
        } else {
          healthchecksBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * 
       * Health checks to perform on targets from target groups.
       * For details about health checking, see [documentation](/docs/application-load-balancer/concepts/backend-group#health-checks).
       * If no health checks are specified, active health checking is not performed.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.HealthCheck healthchecks = 7;
       */
      public Builder addHealthchecks(
          int index, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck value) {
        if (healthchecksBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureHealthchecksIsMutable();
          healthchecks_.add(index, value);
          onChanged();
        } else {
          healthchecksBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * 
       * Health checks to perform on targets from target groups.
       * For details about health checking, see [documentation](/docs/application-load-balancer/concepts/backend-group#health-checks).
       * If no health checks are specified, active health checking is not performed.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.HealthCheck healthchecks = 7;
       */
      public Builder addHealthchecks(
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.Builder builderForValue) {
        if (healthchecksBuilder_ == null) {
          ensureHealthchecksIsMutable();
          healthchecks_.add(builderForValue.build());
          onChanged();
        } else {
          healthchecksBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * 
       * Health checks to perform on targets from target groups.
       * For details about health checking, see [documentation](/docs/application-load-balancer/concepts/backend-group#health-checks).
       * If no health checks are specified, active health checking is not performed.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.HealthCheck healthchecks = 7;
       */
      public Builder addHealthchecks(
          int index, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.Builder builderForValue) {
        if (healthchecksBuilder_ == null) {
          ensureHealthchecksIsMutable();
          healthchecks_.add(index, builderForValue.build());
          onChanged();
        } else {
          healthchecksBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * 
       * Health checks to perform on targets from target groups.
       * For details about health checking, see [documentation](/docs/application-load-balancer/concepts/backend-group#health-checks).
       * If no health checks are specified, active health checking is not performed.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.HealthCheck healthchecks = 7;
       */
      public Builder addAllHealthchecks(
          java.lang.Iterable extends yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck> values) {
        if (healthchecksBuilder_ == null) {
          ensureHealthchecksIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, healthchecks_);
          onChanged();
        } else {
          healthchecksBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * 
       * Health checks to perform on targets from target groups.
       * For details about health checking, see [documentation](/docs/application-load-balancer/concepts/backend-group#health-checks).
       * If no health checks are specified, active health checking is not performed.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.HealthCheck healthchecks = 7;
       */
      public Builder clearHealthchecks() {
        if (healthchecksBuilder_ == null) {
          healthchecks_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          healthchecksBuilder_.clear();
        }
        return this;
      }
      /**
       * 
       * Health checks to perform on targets from target groups.
       * For details about health checking, see [documentation](/docs/application-load-balancer/concepts/backend-group#health-checks).
       * If no health checks are specified, active health checking is not performed.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.HealthCheck healthchecks = 7;
       */
      public Builder removeHealthchecks(int index) {
        if (healthchecksBuilder_ == null) {
          ensureHealthchecksIsMutable();
          healthchecks_.remove(index);
          onChanged();
        } else {
          healthchecksBuilder_.remove(index);
        }
        return this;
      }
      /**
       * 
       * Health checks to perform on targets from target groups.
       * For details about health checking, see [documentation](/docs/application-load-balancer/concepts/backend-group#health-checks).
       * If no health checks are specified, active health checking is not performed.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.HealthCheck healthchecks = 7;
       */
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.Builder getHealthchecksBuilder(
          int index) {
        return getHealthchecksFieldBuilder().getBuilder(index);
      }
      /**
       * 
       * Health checks to perform on targets from target groups.
       * For details about health checking, see [documentation](/docs/application-load-balancer/concepts/backend-group#health-checks).
       * If no health checks are specified, active health checking is not performed.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.HealthCheck healthchecks = 7;
       */
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheckOrBuilder getHealthchecksOrBuilder(
          int index) {
        if (healthchecksBuilder_ == null) {
          return healthchecks_.get(index);  } else {
          return healthchecksBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * 
       * Health checks to perform on targets from target groups.
       * For details about health checking, see [documentation](/docs/application-load-balancer/concepts/backend-group#health-checks).
       * If no health checks are specified, active health checking is not performed.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.HealthCheck healthchecks = 7;
       */
      public java.util.List extends yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheckOrBuilder> 
           getHealthchecksOrBuilderList() {
        if (healthchecksBuilder_ != null) {
          return healthchecksBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(healthchecks_);
        }
      }
      /**
       * 
       * Health checks to perform on targets from target groups.
       * For details about health checking, see [documentation](/docs/application-load-balancer/concepts/backend-group#health-checks).
       * If no health checks are specified, active health checking is not performed.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.HealthCheck healthchecks = 7;
       */
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.Builder addHealthchecksBuilder() {
        return getHealthchecksFieldBuilder().addBuilder(
            yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.getDefaultInstance());
      }
      /**
       * 
       * Health checks to perform on targets from target groups.
       * For details about health checking, see [documentation](/docs/application-load-balancer/concepts/backend-group#health-checks).
       * If no health checks are specified, active health checking is not performed.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.HealthCheck healthchecks = 7;
       */
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.Builder addHealthchecksBuilder(
          int index) {
        return getHealthchecksFieldBuilder().addBuilder(
            index, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.getDefaultInstance());
      }
      /**
       * 
       * Health checks to perform on targets from target groups.
       * For details about health checking, see [documentation](/docs/application-load-balancer/concepts/backend-group#health-checks).
       * If no health checks are specified, active health checking is not performed.
       * 
       *
       * repeated .yandex.cloud.apploadbalancer.v1.HealthCheck healthchecks = 7;
       */
      public java.util.List 
           getHealthchecksBuilderList() {
        return getHealthchecksFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.Builder, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheckOrBuilder> 
          getHealthchecksFieldBuilder() {
        if (healthchecksBuilder_ == null) {
          healthchecksBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.Builder, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheckOrBuilder>(
                  healthchecks_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          healthchecks_ = null;
        }
        return healthchecksBuilder_;
      }
      private yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls tls_;
      private com.google.protobuf.SingleFieldBuilderV3<
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls.Builder, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTlsOrBuilder> tlsBuilder_;
      /**
       * 
       * Settings for TLS connections between load balancer nodes and backend targets.
       * If specified, the load balancer establishes HTTPS (HTTP over TLS) connections with targets
       * and compares received certificates with the one specified in [BackendTls.validation_context].
       * If not specified, the load balancer establishes unencrypted HTTP connections with targets.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.BackendTls tls = 8;
       * @return Whether the tls field is set.
       */
      public boolean hasTls() {
        return tlsBuilder_ != null || tls_ != null;
      }
      /**
       * 
       * Settings for TLS connections between load balancer nodes and backend targets.
       * If specified, the load balancer establishes HTTPS (HTTP over TLS) connections with targets
       * and compares received certificates with the one specified in [BackendTls.validation_context].
       * If not specified, the load balancer establishes unencrypted HTTP connections with targets.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.BackendTls tls = 8;
       * @return The tls.
       */
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls getTls() {
        if (tlsBuilder_ == null) {
          return tls_ == null ? yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls.getDefaultInstance() : tls_;
        } else {
          return tlsBuilder_.getMessage();
        }
      }
      /**
       * 
       * Settings for TLS connections between load balancer nodes and backend targets.
       * If specified, the load balancer establishes HTTPS (HTTP over TLS) connections with targets
       * and compares received certificates with the one specified in [BackendTls.validation_context].
       * If not specified, the load balancer establishes unencrypted HTTP connections with targets.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.BackendTls tls = 8;
       */
      public Builder setTls(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls value) {
        if (tlsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          tls_ = value;
          onChanged();
        } else {
          tlsBuilder_.setMessage(value);
        }
        return this;
      }
      /**
       * 
       * Settings for TLS connections between load balancer nodes and backend targets.
       * If specified, the load balancer establishes HTTPS (HTTP over TLS) connections with targets
       * and compares received certificates with the one specified in [BackendTls.validation_context].
       * If not specified, the load balancer establishes unencrypted HTTP connections with targets.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.BackendTls tls = 8;
       */
      public Builder setTls(
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls.Builder builderForValue) {
        if (tlsBuilder_ == null) {
          tls_ = builderForValue.build();
          onChanged();
        } else {
          tlsBuilder_.setMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * 
       * Settings for TLS connections between load balancer nodes and backend targets.
       * If specified, the load balancer establishes HTTPS (HTTP over TLS) connections with targets
       * and compares received certificates with the one specified in [BackendTls.validation_context].
       * If not specified, the load balancer establishes unencrypted HTTP connections with targets.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.BackendTls tls = 8;
       */
      public Builder mergeTls(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls value) {
        if (tlsBuilder_ == null) {
          if (tls_ != null) {
            tls_ =
              yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls.newBuilder(tls_).mergeFrom(value).buildPartial();
          } else {
            tls_ = value;
          }
          onChanged();
        } else {
          tlsBuilder_.mergeFrom(value);
        }
        return this;
      }
      /**
       * 
       * Settings for TLS connections between load balancer nodes and backend targets.
       * If specified, the load balancer establishes HTTPS (HTTP over TLS) connections with targets
       * and compares received certificates with the one specified in [BackendTls.validation_context].
       * If not specified, the load balancer establishes unencrypted HTTP connections with targets.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.BackendTls tls = 8;
       */
      public Builder clearTls() {
        if (tlsBuilder_ == null) {
          tls_ = null;
          onChanged();
        } else {
          tls_ = null;
          tlsBuilder_ = null;
        }
        return this;
      }
      /**
       * 
       * Settings for TLS connections between load balancer nodes and backend targets.
       * If specified, the load balancer establishes HTTPS (HTTP over TLS) connections with targets
       * and compares received certificates with the one specified in [BackendTls.validation_context].
       * If not specified, the load balancer establishes unencrypted HTTP connections with targets.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.BackendTls tls = 8;
       */
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls.Builder getTlsBuilder() {
        
        onChanged();
        return getTlsFieldBuilder().getBuilder();
      }
      /**
       * 
       * Settings for TLS connections between load balancer nodes and backend targets.
       * If specified, the load balancer establishes HTTPS (HTTP over TLS) connections with targets
       * and compares received certificates with the one specified in [BackendTls.validation_context].
       * If not specified, the load balancer establishes unencrypted HTTP connections with targets.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.BackendTls tls = 8;
       */
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTlsOrBuilder getTlsOrBuilder() {
        if (tlsBuilder_ != null) {
          return tlsBuilder_.getMessageOrBuilder();
        } else {
          return tls_ == null ?
              yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls.getDefaultInstance() : tls_;
        }
      }
      /**
       * 
       * Settings for TLS connections between load balancer nodes and backend targets.
       * If specified, the load balancer establishes HTTPS (HTTP over TLS) connections with targets
       * and compares received certificates with the one specified in [BackendTls.validation_context].
       * If not specified, the load balancer establishes unencrypted HTTP connections with targets.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.BackendTls tls = 8;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls.Builder, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTlsOrBuilder> 
          getTlsFieldBuilder() {
        if (tlsBuilder_ == null) {
          tlsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls.Builder, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTlsOrBuilder>(
                  getTls(),
                  getParentForChildren(),
                  isClean());
          tls_ = null;
        }
        return tlsBuilder_;
      }
      @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:yandex.cloud.apploadbalancer.v1.GrpcBackend)
    }
    // @@protoc_insertion_point(class_scope:yandex.cloud.apploadbalancer.v1.GrpcBackend)
    private static final yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackend DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackend();
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackend getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }
    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public GrpcBackend parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new GrpcBackend(input, extensionRegistry);
      }
    };
    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }
    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }
    @java.lang.Override
    public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.GrpcBackend getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }
  }
  public interface TargetGroupsBackendOrBuilder extends
      // @@protoc_insertion_point(interface_extends:yandex.cloud.apploadbalancer.v1.TargetGroupsBackend)
      com.google.protobuf.MessageOrBuilder {
    /**
     * 
     * List of ID's of target groups that belong to the backend.
     * To get the ID's of all available target groups, make a [TargetGroupService.List] request.
     * 
     *
     * repeated string target_group_ids = 1 [(.yandex.cloud.size) = ">0"];
     * @return A list containing the targetGroupIds.
     */
    java.util.List
        getTargetGroupIdsList();
    /**
     * 
     * List of ID's of target groups that belong to the backend.
     * To get the ID's of all available target groups, make a [TargetGroupService.List] request.
     * 
     *
     * repeated string target_group_ids = 1 [(.yandex.cloud.size) = ">0"];
     * @return The count of targetGroupIds.
     */
    int getTargetGroupIdsCount();
    /**
     * 
     * List of ID's of target groups that belong to the backend.
     * To get the ID's of all available target groups, make a [TargetGroupService.List] request.
     * 
     *
     * repeated string target_group_ids = 1 [(.yandex.cloud.size) = ">0"];
     * @param index The index of the element to return.
     * @return The targetGroupIds at the given index.
     */
    java.lang.String getTargetGroupIds(int index);
    /**
     * 
     * List of ID's of target groups that belong to the backend.
     * To get the ID's of all available target groups, make a [TargetGroupService.List] request.
     * 
     *
     * repeated string target_group_ids = 1 [(.yandex.cloud.size) = ">0"];
     * @param index The index of the value to return.
     * @return The bytes of the targetGroupIds at the given index.
     */
    com.google.protobuf.ByteString
        getTargetGroupIdsBytes(int index);
  }
  /**
   * 
   * A resource for target groups that belong to the backend.
   * 
   *
   * Protobuf type {@code yandex.cloud.apploadbalancer.v1.TargetGroupsBackend}
   */
  public static final class TargetGroupsBackend extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:yandex.cloud.apploadbalancer.v1.TargetGroupsBackend)
      TargetGroupsBackendOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use TargetGroupsBackend.newBuilder() to construct.
    private TargetGroupsBackend(com.google.protobuf.GeneratedMessageV3.Builder> builder) {
      super(builder);
    }
    private TargetGroupsBackend() {
      targetGroupIds_ = com.google.protobuf.LazyStringArrayList.EMPTY;
    }
    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new TargetGroupsBackend();
    }
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private TargetGroupsBackend(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                targetGroupIds_ = new com.google.protobuf.LazyStringArrayList();
                mutable_bitField0_ |= 0x00000001;
              }
              targetGroupIds_.add(s);
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          targetGroupIds_ = targetGroupIds_.getUnmodifiableView();
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_TargetGroupsBackend_descriptor;
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_TargetGroupsBackend_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend.class, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend.Builder.class);
    }
    public static final int TARGET_GROUP_IDS_FIELD_NUMBER = 1;
    private com.google.protobuf.LazyStringList targetGroupIds_;
    /**
     * 
     * List of ID's of target groups that belong to the backend.
     * To get the ID's of all available target groups, make a [TargetGroupService.List] request.
     * 
     *
     * repeated string target_group_ids = 1 [(.yandex.cloud.size) = ">0"];
     * @return A list containing the targetGroupIds.
     */
    public com.google.protobuf.ProtocolStringList
        getTargetGroupIdsList() {
      return targetGroupIds_;
    }
    /**
     * 
     * List of ID's of target groups that belong to the backend.
     * To get the ID's of all available target groups, make a [TargetGroupService.List] request.
     * 
     *
     * repeated string target_group_ids = 1 [(.yandex.cloud.size) = ">0"];
     * @return The count of targetGroupIds.
     */
    public int getTargetGroupIdsCount() {
      return targetGroupIds_.size();
    }
    /**
     * 
     * List of ID's of target groups that belong to the backend.
     * To get the ID's of all available target groups, make a [TargetGroupService.List] request.
     * 
     *
     * repeated string target_group_ids = 1 [(.yandex.cloud.size) = ">0"];
     * @param index The index of the element to return.
     * @return The targetGroupIds at the given index.
     */
    public java.lang.String getTargetGroupIds(int index) {
      return targetGroupIds_.get(index);
    }
    /**
     * 
     * List of ID's of target groups that belong to the backend.
     * To get the ID's of all available target groups, make a [TargetGroupService.List] request.
     * 
     *
     * repeated string target_group_ids = 1 [(.yandex.cloud.size) = ">0"];
     * @param index The index of the value to return.
     * @return The bytes of the targetGroupIds at the given index.
     */
    public com.google.protobuf.ByteString
        getTargetGroupIdsBytes(int index) {
      return targetGroupIds_.getByteString(index);
    }
    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;
      memoizedIsInitialized = 1;
      return true;
    }
    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < targetGroupIds_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, targetGroupIds_.getRaw(i));
      }
      unknownFields.writeTo(output);
    }
    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;
      size = 0;
      {
        int dataSize = 0;
        for (int i = 0; i < targetGroupIds_.size(); i++) {
          dataSize += computeStringSizeNoTag(targetGroupIds_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getTargetGroupIdsList().size();
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend)) {
        return super.equals(obj);
      }
      yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend other = (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend) obj;
      if (!getTargetGroupIdsList()
          .equals(other.getTargetGroupIdsList())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }
    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getTargetGroupIdsCount() > 0) {
        hash = (37 * hash) + TARGET_GROUP_IDS_FIELD_NUMBER;
        hash = (53 * hash) + getTargetGroupIdsList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend 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 yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend 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 yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend 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(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend 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;
    }
    /**
     * 
     * A resource for target groups that belong to the backend.
     * 
     *
     * Protobuf type {@code yandex.cloud.apploadbalancer.v1.TargetGroupsBackend}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:yandex.cloud.apploadbalancer.v1.TargetGroupsBackend)
        yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackendOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_TargetGroupsBackend_descriptor;
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_TargetGroupsBackend_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend.class, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend.Builder.class);
      }
      // Construct using yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        targetGroupIds_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }
      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_TargetGroupsBackend_descriptor;
      }
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend getDefaultInstanceForType() {
        return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend.getDefaultInstance();
      }
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend build() {
        yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend buildPartial() {
        yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend result = new yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend(this);
        int from_bitField0_ = bitField0_;
        if (((bitField0_ & 0x00000001) != 0)) {
          targetGroupIds_ = targetGroupIds_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.targetGroupIds_ = targetGroupIds_;
        onBuilt();
        return result;
      }
      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend) {
          return mergeFrom((yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      public Builder mergeFrom(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend other) {
        if (other == yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend.getDefaultInstance()) return this;
        if (!other.targetGroupIds_.isEmpty()) {
          if (targetGroupIds_.isEmpty()) {
            targetGroupIds_ = other.targetGroupIds_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureTargetGroupIdsIsMutable();
            targetGroupIds_.addAll(other.targetGroupIds_);
          }
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }
      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }
      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;
      private com.google.protobuf.LazyStringList targetGroupIds_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureTargetGroupIdsIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          targetGroupIds_ = new com.google.protobuf.LazyStringArrayList(targetGroupIds_);
          bitField0_ |= 0x00000001;
         }
      }
      /**
       * 
       * List of ID's of target groups that belong to the backend.
       * To get the ID's of all available target groups, make a [TargetGroupService.List] request.
       * 
       *
       * repeated string target_group_ids = 1 [(.yandex.cloud.size) = ">0"];
       * @return A list containing the targetGroupIds.
       */
      public com.google.protobuf.ProtocolStringList
          getTargetGroupIdsList() {
        return targetGroupIds_.getUnmodifiableView();
      }
      /**
       * 
       * List of ID's of target groups that belong to the backend.
       * To get the ID's of all available target groups, make a [TargetGroupService.List] request.
       * 
       *
       * repeated string target_group_ids = 1 [(.yandex.cloud.size) = ">0"];
       * @return The count of targetGroupIds.
       */
      public int getTargetGroupIdsCount() {
        return targetGroupIds_.size();
      }
      /**
       * 
       * List of ID's of target groups that belong to the backend.
       * To get the ID's of all available target groups, make a [TargetGroupService.List] request.
       * 
       *
       * repeated string target_group_ids = 1 [(.yandex.cloud.size) = ">0"];
       * @param index The index of the element to return.
       * @return The targetGroupIds at the given index.
       */
      public java.lang.String getTargetGroupIds(int index) {
        return targetGroupIds_.get(index);
      }
      /**
       * 
       * List of ID's of target groups that belong to the backend.
       * To get the ID's of all available target groups, make a [TargetGroupService.List] request.
       * 
       *
       * repeated string target_group_ids = 1 [(.yandex.cloud.size) = ">0"];
       * @param index The index of the value to return.
       * @return The bytes of the targetGroupIds at the given index.
       */
      public com.google.protobuf.ByteString
          getTargetGroupIdsBytes(int index) {
        return targetGroupIds_.getByteString(index);
      }
      /**
       * 
       * List of ID's of target groups that belong to the backend.
       * To get the ID's of all available target groups, make a [TargetGroupService.List] request.
       * 
       *
       * repeated string target_group_ids = 1 [(.yandex.cloud.size) = ">0"];
       * @param index The index to set the value at.
       * @param value The targetGroupIds to set.
       * @return This builder for chaining.
       */
      public Builder setTargetGroupIds(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureTargetGroupIdsIsMutable();
        targetGroupIds_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * 
       * List of ID's of target groups that belong to the backend.
       * To get the ID's of all available target groups, make a [TargetGroupService.List] request.
       * 
       *
       * repeated string target_group_ids = 1 [(.yandex.cloud.size) = ">0"];
       * @param value The targetGroupIds to add.
       * @return This builder for chaining.
       */
      public Builder addTargetGroupIds(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureTargetGroupIdsIsMutable();
        targetGroupIds_.add(value);
        onChanged();
        return this;
      }
      /**
       * 
       * List of ID's of target groups that belong to the backend.
       * To get the ID's of all available target groups, make a [TargetGroupService.List] request.
       * 
       *
       * repeated string target_group_ids = 1 [(.yandex.cloud.size) = ">0"];
       * @param values The targetGroupIds to add.
       * @return This builder for chaining.
       */
      public Builder addAllTargetGroupIds(
          java.lang.Iterable values) {
        ensureTargetGroupIdsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, targetGroupIds_);
        onChanged();
        return this;
      }
      /**
       * 
       * List of ID's of target groups that belong to the backend.
       * To get the ID's of all available target groups, make a [TargetGroupService.List] request.
       * 
       *
       * repeated string target_group_ids = 1 [(.yandex.cloud.size) = ">0"];
       * @return This builder for chaining.
       */
      public Builder clearTargetGroupIds() {
        targetGroupIds_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * 
       * List of ID's of target groups that belong to the backend.
       * To get the ID's of all available target groups, make a [TargetGroupService.List] request.
       * 
       *
       * repeated string target_group_ids = 1 [(.yandex.cloud.size) = ">0"];
       * @param value The bytes of the targetGroupIds to add.
       * @return This builder for chaining.
       */
      public Builder addTargetGroupIdsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureTargetGroupIdsIsMutable();
        targetGroupIds_.add(value);
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }
      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }
      // @@protoc_insertion_point(builder_scope:yandex.cloud.apploadbalancer.v1.TargetGroupsBackend)
    }
    // @@protoc_insertion_point(class_scope:yandex.cloud.apploadbalancer.v1.TargetGroupsBackend)
    private static final yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend();
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }
    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public TargetGroupsBackend parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new TargetGroupsBackend(input, extensionRegistry);
      }
    };
    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }
    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }
    @java.lang.Override
    public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.TargetGroupsBackend getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }
  }
  public interface PlaintextTransportSettingsOrBuilder extends
      // @@protoc_insertion_point(interface_extends:yandex.cloud.apploadbalancer.v1.PlaintextTransportSettings)
      com.google.protobuf.MessageOrBuilder {
  }
  /**
   * 
   * Transport settings to be used instead of the settings configured per-cluster
   * 
   *
   * Protobuf type {@code yandex.cloud.apploadbalancer.v1.PlaintextTransportSettings}
   */
  public static final class PlaintextTransportSettings extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:yandex.cloud.apploadbalancer.v1.PlaintextTransportSettings)
      PlaintextTransportSettingsOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PlaintextTransportSettings.newBuilder() to construct.
    private PlaintextTransportSettings(com.google.protobuf.GeneratedMessageV3.Builder> builder) {
      super(builder);
    }
    private PlaintextTransportSettings() {
    }
    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new PlaintextTransportSettings();
    }
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private PlaintextTransportSettings(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_PlaintextTransportSettings_descriptor;
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_PlaintextTransportSettings_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.PlaintextTransportSettings.class, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.PlaintextTransportSettings.Builder.class);
    }
    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 {
      unknownFields.writeTo(output);
    }
    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;
      size = 0;
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.PlaintextTransportSettings)) {
        return super.equals(obj);
      }
      yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.PlaintextTransportSettings other = (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.PlaintextTransportSettings) obj;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }
    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.PlaintextTransportSettings parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.PlaintextTransportSettings parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.PlaintextTransportSettings parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.PlaintextTransportSettings parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.PlaintextTransportSettings parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.PlaintextTransportSettings parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.PlaintextTransportSettings parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.PlaintextTransportSettings 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 yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.PlaintextTransportSettings parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.PlaintextTransportSettings 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 yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.PlaintextTransportSettings parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.PlaintextTransportSettings 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(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.PlaintextTransportSettings 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;
    }
    /**
     * 
     * Transport settings to be used instead of the settings configured per-cluster
     * 
     *
     * Protobuf type {@code yandex.cloud.apploadbalancer.v1.PlaintextTransportSettings}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:yandex.cloud.apploadbalancer.v1.PlaintextTransportSettings)
        yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.PlaintextTransportSettingsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_PlaintextTransportSettings_descriptor;
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_PlaintextTransportSettings_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.PlaintextTransportSettings.class, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.PlaintextTransportSettings.Builder.class);
      }
      // Construct using yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.PlaintextTransportSettings.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        return this;
      }
      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_PlaintextTransportSettings_descriptor;
      }
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.PlaintextTransportSettings getDefaultInstanceForType() {
        return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.PlaintextTransportSettings.getDefaultInstance();
      }
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.PlaintextTransportSettings build() {
        yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.PlaintextTransportSettings result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.PlaintextTransportSettings buildPartial() {
        yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.PlaintextTransportSettings result = new yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.PlaintextTransportSettings(this);
        onBuilt();
        return result;
      }
      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.PlaintextTransportSettings) {
          return mergeFrom((yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.PlaintextTransportSettings)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      public Builder mergeFrom(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.PlaintextTransportSettings other) {
        if (other == yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.PlaintextTransportSettings.getDefaultInstance()) return this;
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }
      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }
      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.PlaintextTransportSettings parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.PlaintextTransportSettings) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }
      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }
      // @@protoc_insertion_point(builder_scope:yandex.cloud.apploadbalancer.v1.PlaintextTransportSettings)
    }
    // @@protoc_insertion_point(class_scope:yandex.cloud.apploadbalancer.v1.PlaintextTransportSettings)
    private static final yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.PlaintextTransportSettings DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.PlaintextTransportSettings();
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.PlaintextTransportSettings getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }
    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public PlaintextTransportSettings parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new PlaintextTransportSettings(input, extensionRegistry);
      }
    };
    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }
    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }
    @java.lang.Override
    public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.PlaintextTransportSettings getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }
  }
  public interface SecureTransportSettingsOrBuilder extends
      // @@protoc_insertion_point(interface_extends:yandex.cloud.apploadbalancer.v1.SecureTransportSettings)
      com.google.protobuf.MessageOrBuilder {
    /**
     * 
     * SNI string for TLS connections.
     * 
     *
     * string sni = 1;
     * @return The sni.
     */
    java.lang.String getSni();
    /**
     * 
     * SNI string for TLS connections.
     * 
     *
     * string sni = 1;
     * @return The bytes for sni.
     */
    com.google.protobuf.ByteString
        getSniBytes();
    /**
     * 
     * Validation context for backend TLS connections.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.ValidationContext validation_context = 3;
     * @return Whether the validationContext field is set.
     */
    boolean hasValidationContext();
    /**
     * 
     * Validation context for backend TLS connections.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.ValidationContext validation_context = 3;
     * @return The validationContext.
     */
    yandex.cloud.api.apploadbalancer.v1.Tls.ValidationContext getValidationContext();
    /**
     * 
     * Validation context for backend TLS connections.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.ValidationContext validation_context = 3;
     */
    yandex.cloud.api.apploadbalancer.v1.Tls.ValidationContextOrBuilder getValidationContextOrBuilder();
  }
  /**
   * 
   * Transport settings to be used instead of the settings configured per-cluster
   * 
   *
   * Protobuf type {@code yandex.cloud.apploadbalancer.v1.SecureTransportSettings}
   */
  public static final class SecureTransportSettings extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:yandex.cloud.apploadbalancer.v1.SecureTransportSettings)
      SecureTransportSettingsOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use SecureTransportSettings.newBuilder() to construct.
    private SecureTransportSettings(com.google.protobuf.GeneratedMessageV3.Builder> builder) {
      super(builder);
    }
    private SecureTransportSettings() {
      sni_ = "";
    }
    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new SecureTransportSettings();
    }
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private SecureTransportSettings(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();
              sni_ = s;
              break;
            }
            case 26: {
              yandex.cloud.api.apploadbalancer.v1.Tls.ValidationContext.Builder subBuilder = null;
              if (validationContext_ != null) {
                subBuilder = validationContext_.toBuilder();
              }
              validationContext_ = input.readMessage(yandex.cloud.api.apploadbalancer.v1.Tls.ValidationContext.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(validationContext_);
                validationContext_ = subBuilder.buildPartial();
              }
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_SecureTransportSettings_descriptor;
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_SecureTransportSettings_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.SecureTransportSettings.class, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.SecureTransportSettings.Builder.class);
    }
    public static final int SNI_FIELD_NUMBER = 1;
    private volatile java.lang.Object sni_;
    /**
     * 
     * SNI string for TLS connections.
     * 
     *
     * string sni = 1;
     * @return The sni.
     */
    @java.lang.Override
    public java.lang.String getSni() {
      java.lang.Object ref = sni_;
      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();
        sni_ = s;
        return s;
      }
    }
    /**
     * 
     * SNI string for TLS connections.
     * 
     *
     * string sni = 1;
     * @return The bytes for sni.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getSniBytes() {
      java.lang.Object ref = sni_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        sni_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    public static final int VALIDATION_CONTEXT_FIELD_NUMBER = 3;
    private yandex.cloud.api.apploadbalancer.v1.Tls.ValidationContext validationContext_;
    /**
     * 
     * Validation context for backend TLS connections.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.ValidationContext validation_context = 3;
     * @return Whether the validationContext field is set.
     */
    @java.lang.Override
    public boolean hasValidationContext() {
      return validationContext_ != null;
    }
    /**
     * 
     * Validation context for backend TLS connections.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.ValidationContext validation_context = 3;
     * @return The validationContext.
     */
    @java.lang.Override
    public yandex.cloud.api.apploadbalancer.v1.Tls.ValidationContext getValidationContext() {
      return validationContext_ == null ? yandex.cloud.api.apploadbalancer.v1.Tls.ValidationContext.getDefaultInstance() : validationContext_;
    }
    /**
     * 
     * Validation context for backend TLS connections.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.ValidationContext validation_context = 3;
     */
    @java.lang.Override
    public yandex.cloud.api.apploadbalancer.v1.Tls.ValidationContextOrBuilder getValidationContextOrBuilder() {
      return getValidationContext();
    }
    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;
      memoizedIsInitialized = 1;
      return true;
    }
    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(sni_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, sni_);
      }
      if (validationContext_ != null) {
        output.writeMessage(3, getValidationContext());
      }
      unknownFields.writeTo(output);
    }
    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;
      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(sni_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, sni_);
      }
      if (validationContext_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getValidationContext());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.SecureTransportSettings)) {
        return super.equals(obj);
      }
      yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.SecureTransportSettings other = (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.SecureTransportSettings) obj;
      if (!getSni()
          .equals(other.getSni())) return false;
      if (hasValidationContext() != other.hasValidationContext()) return false;
      if (hasValidationContext()) {
        if (!getValidationContext()
            .equals(other.getValidationContext())) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }
    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + SNI_FIELD_NUMBER;
      hash = (53 * hash) + getSni().hashCode();
      if (hasValidationContext()) {
        hash = (37 * hash) + VALIDATION_CONTEXT_FIELD_NUMBER;
        hash = (53 * hash) + getValidationContext().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.SecureTransportSettings parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.SecureTransportSettings parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.SecureTransportSettings parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.SecureTransportSettings parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.SecureTransportSettings parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.SecureTransportSettings parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.SecureTransportSettings parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.SecureTransportSettings 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 yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.SecureTransportSettings parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.SecureTransportSettings 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 yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.SecureTransportSettings parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.SecureTransportSettings 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(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.SecureTransportSettings 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;
    }
    /**
     * 
     * Transport settings to be used instead of the settings configured per-cluster
     * 
     *
     * Protobuf type {@code yandex.cloud.apploadbalancer.v1.SecureTransportSettings}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:yandex.cloud.apploadbalancer.v1.SecureTransportSettings)
        yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.SecureTransportSettingsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_SecureTransportSettings_descriptor;
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_SecureTransportSettings_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.SecureTransportSettings.class, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.SecureTransportSettings.Builder.class);
      }
      // Construct using yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.SecureTransportSettings.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        sni_ = "";
        if (validationContextBuilder_ == null) {
          validationContext_ = null;
        } else {
          validationContext_ = null;
          validationContextBuilder_ = null;
        }
        return this;
      }
      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_SecureTransportSettings_descriptor;
      }
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.SecureTransportSettings getDefaultInstanceForType() {
        return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.SecureTransportSettings.getDefaultInstance();
      }
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.SecureTransportSettings build() {
        yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.SecureTransportSettings result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.SecureTransportSettings buildPartial() {
        yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.SecureTransportSettings result = new yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.SecureTransportSettings(this);
        result.sni_ = sni_;
        if (validationContextBuilder_ == null) {
          result.validationContext_ = validationContext_;
        } else {
          result.validationContext_ = validationContextBuilder_.build();
        }
        onBuilt();
        return result;
      }
      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.SecureTransportSettings) {
          return mergeFrom((yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.SecureTransportSettings)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      public Builder mergeFrom(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.SecureTransportSettings other) {
        if (other == yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.SecureTransportSettings.getDefaultInstance()) return this;
        if (!other.getSni().isEmpty()) {
          sni_ = other.sni_;
          onChanged();
        }
        if (other.hasValidationContext()) {
          mergeValidationContext(other.getValidationContext());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }
      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }
      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.SecureTransportSettings parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.SecureTransportSettings) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private java.lang.Object sni_ = "";
      /**
       * 
       * SNI string for TLS connections.
       * 
       *
       * string sni = 1;
       * @return The sni.
       */
      public java.lang.String getSni() {
        java.lang.Object ref = sni_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          sni_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * 
       * SNI string for TLS connections.
       * 
       *
       * string sni = 1;
       * @return The bytes for sni.
       */
      public com.google.protobuf.ByteString
          getSniBytes() {
        java.lang.Object ref = sni_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          sni_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * 
       * SNI string for TLS connections.
       * 
       *
       * string sni = 1;
       * @param value The sni to set.
       * @return This builder for chaining.
       */
      public Builder setSni(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        sni_ = value;
        onChanged();
        return this;
      }
      /**
       * 
       * SNI string for TLS connections.
       * 
       *
       * string sni = 1;
       * @return This builder for chaining.
       */
      public Builder clearSni() {
        
        sni_ = getDefaultInstance().getSni();
        onChanged();
        return this;
      }
      /**
       * 
       * SNI string for TLS connections.
       * 
       *
       * string sni = 1;
       * @param value The bytes for sni to set.
       * @return This builder for chaining.
       */
      public Builder setSniBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        sni_ = value;
        onChanged();
        return this;
      }
      private yandex.cloud.api.apploadbalancer.v1.Tls.ValidationContext validationContext_;
      private com.google.protobuf.SingleFieldBuilderV3<
          yandex.cloud.api.apploadbalancer.v1.Tls.ValidationContext, yandex.cloud.api.apploadbalancer.v1.Tls.ValidationContext.Builder, yandex.cloud.api.apploadbalancer.v1.Tls.ValidationContextOrBuilder> validationContextBuilder_;
      /**
       * 
       * Validation context for backend TLS connections.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.ValidationContext validation_context = 3;
       * @return Whether the validationContext field is set.
       */
      public boolean hasValidationContext() {
        return validationContextBuilder_ != null || validationContext_ != null;
      }
      /**
       * 
       * Validation context for backend TLS connections.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.ValidationContext validation_context = 3;
       * @return The validationContext.
       */
      public yandex.cloud.api.apploadbalancer.v1.Tls.ValidationContext getValidationContext() {
        if (validationContextBuilder_ == null) {
          return validationContext_ == null ? yandex.cloud.api.apploadbalancer.v1.Tls.ValidationContext.getDefaultInstance() : validationContext_;
        } else {
          return validationContextBuilder_.getMessage();
        }
      }
      /**
       * 
       * Validation context for backend TLS connections.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.ValidationContext validation_context = 3;
       */
      public Builder setValidationContext(yandex.cloud.api.apploadbalancer.v1.Tls.ValidationContext value) {
        if (validationContextBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          validationContext_ = value;
          onChanged();
        } else {
          validationContextBuilder_.setMessage(value);
        }
        return this;
      }
      /**
       * 
       * Validation context for backend TLS connections.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.ValidationContext validation_context = 3;
       */
      public Builder setValidationContext(
          yandex.cloud.api.apploadbalancer.v1.Tls.ValidationContext.Builder builderForValue) {
        if (validationContextBuilder_ == null) {
          validationContext_ = builderForValue.build();
          onChanged();
        } else {
          validationContextBuilder_.setMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * 
       * Validation context for backend TLS connections.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.ValidationContext validation_context = 3;
       */
      public Builder mergeValidationContext(yandex.cloud.api.apploadbalancer.v1.Tls.ValidationContext value) {
        if (validationContextBuilder_ == null) {
          if (validationContext_ != null) {
            validationContext_ =
              yandex.cloud.api.apploadbalancer.v1.Tls.ValidationContext.newBuilder(validationContext_).mergeFrom(value).buildPartial();
          } else {
            validationContext_ = value;
          }
          onChanged();
        } else {
          validationContextBuilder_.mergeFrom(value);
        }
        return this;
      }
      /**
       * 
       * Validation context for backend TLS connections.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.ValidationContext validation_context = 3;
       */
      public Builder clearValidationContext() {
        if (validationContextBuilder_ == null) {
          validationContext_ = null;
          onChanged();
        } else {
          validationContext_ = null;
          validationContextBuilder_ = null;
        }
        return this;
      }
      /**
       * 
       * Validation context for backend TLS connections.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.ValidationContext validation_context = 3;
       */
      public yandex.cloud.api.apploadbalancer.v1.Tls.ValidationContext.Builder getValidationContextBuilder() {
        
        onChanged();
        return getValidationContextFieldBuilder().getBuilder();
      }
      /**
       * 
       * Validation context for backend TLS connections.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.ValidationContext validation_context = 3;
       */
      public yandex.cloud.api.apploadbalancer.v1.Tls.ValidationContextOrBuilder getValidationContextOrBuilder() {
        if (validationContextBuilder_ != null) {
          return validationContextBuilder_.getMessageOrBuilder();
        } else {
          return validationContext_ == null ?
              yandex.cloud.api.apploadbalancer.v1.Tls.ValidationContext.getDefaultInstance() : validationContext_;
        }
      }
      /**
       * 
       * Validation context for backend TLS connections.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.ValidationContext validation_context = 3;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          yandex.cloud.api.apploadbalancer.v1.Tls.ValidationContext, yandex.cloud.api.apploadbalancer.v1.Tls.ValidationContext.Builder, yandex.cloud.api.apploadbalancer.v1.Tls.ValidationContextOrBuilder> 
          getValidationContextFieldBuilder() {
        if (validationContextBuilder_ == null) {
          validationContextBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              yandex.cloud.api.apploadbalancer.v1.Tls.ValidationContext, yandex.cloud.api.apploadbalancer.v1.Tls.ValidationContext.Builder, yandex.cloud.api.apploadbalancer.v1.Tls.ValidationContextOrBuilder>(
                  getValidationContext(),
                  getParentForChildren(),
                  isClean());
          validationContext_ = null;
        }
        return validationContextBuilder_;
      }
      @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:yandex.cloud.apploadbalancer.v1.SecureTransportSettings)
    }
    // @@protoc_insertion_point(class_scope:yandex.cloud.apploadbalancer.v1.SecureTransportSettings)
    private static final yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.SecureTransportSettings DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.SecureTransportSettings();
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.SecureTransportSettings getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }
    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public SecureTransportSettings parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new SecureTransportSettings(input, extensionRegistry);
      }
    };
    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }
    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }
    @java.lang.Override
    public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.SecureTransportSettings getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }
  }
  public interface BackendTlsOrBuilder extends
      // @@protoc_insertion_point(interface_extends:yandex.cloud.apploadbalancer.v1.BackendTls)
      com.google.protobuf.MessageOrBuilder {
    /**
     * 
     * Server Name Indication (SNI) string for TLS connections.
     * 
     *
     * string sni = 1;
     * @return The sni.
     */
    java.lang.String getSni();
    /**
     * 
     * Server Name Indication (SNI) string for TLS connections.
     * 
     *
     * string sni = 1;
     * @return The bytes for sni.
     */
    com.google.protobuf.ByteString
        getSniBytes();
    /**
     * 
     * Validation context for TLS connections.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.ValidationContext validation_context = 3;
     * @return Whether the validationContext field is set.
     */
    boolean hasValidationContext();
    /**
     * 
     * Validation context for TLS connections.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.ValidationContext validation_context = 3;
     * @return The validationContext.
     */
    yandex.cloud.api.apploadbalancer.v1.Tls.ValidationContext getValidationContext();
    /**
     * 
     * Validation context for TLS connections.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.ValidationContext validation_context = 3;
     */
    yandex.cloud.api.apploadbalancer.v1.Tls.ValidationContextOrBuilder getValidationContextOrBuilder();
  }
  /**
   * 
   * A resource for backend TLS settings.
   * 
   *
   * Protobuf type {@code yandex.cloud.apploadbalancer.v1.BackendTls}
   */
  public static final class BackendTls extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:yandex.cloud.apploadbalancer.v1.BackendTls)
      BackendTlsOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use BackendTls.newBuilder() to construct.
    private BackendTls(com.google.protobuf.GeneratedMessageV3.Builder> builder) {
      super(builder);
    }
    private BackendTls() {
      sni_ = "";
    }
    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new BackendTls();
    }
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private BackendTls(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();
              sni_ = s;
              break;
            }
            case 26: {
              yandex.cloud.api.apploadbalancer.v1.Tls.ValidationContext.Builder subBuilder = null;
              if (validationContext_ != null) {
                subBuilder = validationContext_.toBuilder();
              }
              validationContext_ = input.readMessage(yandex.cloud.api.apploadbalancer.v1.Tls.ValidationContext.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(validationContext_);
                validationContext_ = subBuilder.buildPartial();
              }
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_BackendTls_descriptor;
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_BackendTls_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls.class, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls.Builder.class);
    }
    public static final int SNI_FIELD_NUMBER = 1;
    private volatile java.lang.Object sni_;
    /**
     * 
     * Server Name Indication (SNI) string for TLS connections.
     * 
     *
     * string sni = 1;
     * @return The sni.
     */
    @java.lang.Override
    public java.lang.String getSni() {
      java.lang.Object ref = sni_;
      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();
        sni_ = s;
        return s;
      }
    }
    /**
     * 
     * Server Name Indication (SNI) string for TLS connections.
     * 
     *
     * string sni = 1;
     * @return The bytes for sni.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getSniBytes() {
      java.lang.Object ref = sni_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        sni_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    public static final int VALIDATION_CONTEXT_FIELD_NUMBER = 3;
    private yandex.cloud.api.apploadbalancer.v1.Tls.ValidationContext validationContext_;
    /**
     * 
     * Validation context for TLS connections.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.ValidationContext validation_context = 3;
     * @return Whether the validationContext field is set.
     */
    @java.lang.Override
    public boolean hasValidationContext() {
      return validationContext_ != null;
    }
    /**
     * 
     * Validation context for TLS connections.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.ValidationContext validation_context = 3;
     * @return The validationContext.
     */
    @java.lang.Override
    public yandex.cloud.api.apploadbalancer.v1.Tls.ValidationContext getValidationContext() {
      return validationContext_ == null ? yandex.cloud.api.apploadbalancer.v1.Tls.ValidationContext.getDefaultInstance() : validationContext_;
    }
    /**
     * 
     * Validation context for TLS connections.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.ValidationContext validation_context = 3;
     */
    @java.lang.Override
    public yandex.cloud.api.apploadbalancer.v1.Tls.ValidationContextOrBuilder getValidationContextOrBuilder() {
      return getValidationContext();
    }
    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;
      memoizedIsInitialized = 1;
      return true;
    }
    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(sni_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, sni_);
      }
      if (validationContext_ != null) {
        output.writeMessage(3, getValidationContext());
      }
      unknownFields.writeTo(output);
    }
    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;
      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(sni_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, sni_);
      }
      if (validationContext_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getValidationContext());
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls)) {
        return super.equals(obj);
      }
      yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls other = (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls) obj;
      if (!getSni()
          .equals(other.getSni())) return false;
      if (hasValidationContext() != other.hasValidationContext()) return false;
      if (hasValidationContext()) {
        if (!getValidationContext()
            .equals(other.getValidationContext())) return false;
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }
    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + SNI_FIELD_NUMBER;
      hash = (53 * hash) + getSni().hashCode();
      if (hasValidationContext()) {
        hash = (37 * hash) + VALIDATION_CONTEXT_FIELD_NUMBER;
        hash = (53 * hash) + getValidationContext().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls 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 yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls 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 yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls 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(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls 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;
    }
    /**
     * 
     * A resource for backend TLS settings.
     * 
     *
     * Protobuf type {@code yandex.cloud.apploadbalancer.v1.BackendTls}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:yandex.cloud.apploadbalancer.v1.BackendTls)
        yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTlsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_BackendTls_descriptor;
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_BackendTls_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls.class, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls.Builder.class);
      }
      // Construct using yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        sni_ = "";
        if (validationContextBuilder_ == null) {
          validationContext_ = null;
        } else {
          validationContext_ = null;
          validationContextBuilder_ = null;
        }
        return this;
      }
      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_BackendTls_descriptor;
      }
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls getDefaultInstanceForType() {
        return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls.getDefaultInstance();
      }
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls build() {
        yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls buildPartial() {
        yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls result = new yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls(this);
        result.sni_ = sni_;
        if (validationContextBuilder_ == null) {
          result.validationContext_ = validationContext_;
        } else {
          result.validationContext_ = validationContextBuilder_.build();
        }
        onBuilt();
        return result;
      }
      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls) {
          return mergeFrom((yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      public Builder mergeFrom(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls other) {
        if (other == yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls.getDefaultInstance()) return this;
        if (!other.getSni().isEmpty()) {
          sni_ = other.sni_;
          onChanged();
        }
        if (other.hasValidationContext()) {
          mergeValidationContext(other.getValidationContext());
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }
      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }
      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private java.lang.Object sni_ = "";
      /**
       * 
       * Server Name Indication (SNI) string for TLS connections.
       * 
       *
       * string sni = 1;
       * @return The sni.
       */
      public java.lang.String getSni() {
        java.lang.Object ref = sni_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          sni_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * 
       * Server Name Indication (SNI) string for TLS connections.
       * 
       *
       * string sni = 1;
       * @return The bytes for sni.
       */
      public com.google.protobuf.ByteString
          getSniBytes() {
        java.lang.Object ref = sni_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          sni_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * 
       * Server Name Indication (SNI) string for TLS connections.
       * 
       *
       * string sni = 1;
       * @param value The sni to set.
       * @return This builder for chaining.
       */
      public Builder setSni(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        sni_ = value;
        onChanged();
        return this;
      }
      /**
       * 
       * Server Name Indication (SNI) string for TLS connections.
       * 
       *
       * string sni = 1;
       * @return This builder for chaining.
       */
      public Builder clearSni() {
        
        sni_ = getDefaultInstance().getSni();
        onChanged();
        return this;
      }
      /**
       * 
       * Server Name Indication (SNI) string for TLS connections.
       * 
       *
       * string sni = 1;
       * @param value The bytes for sni to set.
       * @return This builder for chaining.
       */
      public Builder setSniBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        sni_ = value;
        onChanged();
        return this;
      }
      private yandex.cloud.api.apploadbalancer.v1.Tls.ValidationContext validationContext_;
      private com.google.protobuf.SingleFieldBuilderV3<
          yandex.cloud.api.apploadbalancer.v1.Tls.ValidationContext, yandex.cloud.api.apploadbalancer.v1.Tls.ValidationContext.Builder, yandex.cloud.api.apploadbalancer.v1.Tls.ValidationContextOrBuilder> validationContextBuilder_;
      /**
       * 
       * Validation context for TLS connections.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.ValidationContext validation_context = 3;
       * @return Whether the validationContext field is set.
       */
      public boolean hasValidationContext() {
        return validationContextBuilder_ != null || validationContext_ != null;
      }
      /**
       * 
       * Validation context for TLS connections.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.ValidationContext validation_context = 3;
       * @return The validationContext.
       */
      public yandex.cloud.api.apploadbalancer.v1.Tls.ValidationContext getValidationContext() {
        if (validationContextBuilder_ == null) {
          return validationContext_ == null ? yandex.cloud.api.apploadbalancer.v1.Tls.ValidationContext.getDefaultInstance() : validationContext_;
        } else {
          return validationContextBuilder_.getMessage();
        }
      }
      /**
       * 
       * Validation context for TLS connections.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.ValidationContext validation_context = 3;
       */
      public Builder setValidationContext(yandex.cloud.api.apploadbalancer.v1.Tls.ValidationContext value) {
        if (validationContextBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          validationContext_ = value;
          onChanged();
        } else {
          validationContextBuilder_.setMessage(value);
        }
        return this;
      }
      /**
       * 
       * Validation context for TLS connections.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.ValidationContext validation_context = 3;
       */
      public Builder setValidationContext(
          yandex.cloud.api.apploadbalancer.v1.Tls.ValidationContext.Builder builderForValue) {
        if (validationContextBuilder_ == null) {
          validationContext_ = builderForValue.build();
          onChanged();
        } else {
          validationContextBuilder_.setMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * 
       * Validation context for TLS connections.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.ValidationContext validation_context = 3;
       */
      public Builder mergeValidationContext(yandex.cloud.api.apploadbalancer.v1.Tls.ValidationContext value) {
        if (validationContextBuilder_ == null) {
          if (validationContext_ != null) {
            validationContext_ =
              yandex.cloud.api.apploadbalancer.v1.Tls.ValidationContext.newBuilder(validationContext_).mergeFrom(value).buildPartial();
          } else {
            validationContext_ = value;
          }
          onChanged();
        } else {
          validationContextBuilder_.mergeFrom(value);
        }
        return this;
      }
      /**
       * 
       * Validation context for TLS connections.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.ValidationContext validation_context = 3;
       */
      public Builder clearValidationContext() {
        if (validationContextBuilder_ == null) {
          validationContext_ = null;
          onChanged();
        } else {
          validationContext_ = null;
          validationContextBuilder_ = null;
        }
        return this;
      }
      /**
       * 
       * Validation context for TLS connections.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.ValidationContext validation_context = 3;
       */
      public yandex.cloud.api.apploadbalancer.v1.Tls.ValidationContext.Builder getValidationContextBuilder() {
        
        onChanged();
        return getValidationContextFieldBuilder().getBuilder();
      }
      /**
       * 
       * Validation context for TLS connections.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.ValidationContext validation_context = 3;
       */
      public yandex.cloud.api.apploadbalancer.v1.Tls.ValidationContextOrBuilder getValidationContextOrBuilder() {
        if (validationContextBuilder_ != null) {
          return validationContextBuilder_.getMessageOrBuilder();
        } else {
          return validationContext_ == null ?
              yandex.cloud.api.apploadbalancer.v1.Tls.ValidationContext.getDefaultInstance() : validationContext_;
        }
      }
      /**
       * 
       * Validation context for TLS connections.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.ValidationContext validation_context = 3;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          yandex.cloud.api.apploadbalancer.v1.Tls.ValidationContext, yandex.cloud.api.apploadbalancer.v1.Tls.ValidationContext.Builder, yandex.cloud.api.apploadbalancer.v1.Tls.ValidationContextOrBuilder> 
          getValidationContextFieldBuilder() {
        if (validationContextBuilder_ == null) {
          validationContextBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              yandex.cloud.api.apploadbalancer.v1.Tls.ValidationContext, yandex.cloud.api.apploadbalancer.v1.Tls.ValidationContext.Builder, yandex.cloud.api.apploadbalancer.v1.Tls.ValidationContextOrBuilder>(
                  getValidationContext(),
                  getParentForChildren(),
                  isClean());
          validationContext_ = null;
        }
        return validationContextBuilder_;
      }
      @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:yandex.cloud.apploadbalancer.v1.BackendTls)
    }
    // @@protoc_insertion_point(class_scope:yandex.cloud.apploadbalancer.v1.BackendTls)
    private static final yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls();
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }
    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public BackendTls parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new BackendTls(input, extensionRegistry);
      }
    };
    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }
    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }
    @java.lang.Override
    public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.BackendTls getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }
  }
  public interface StorageBucketBackendOrBuilder extends
      // @@protoc_insertion_point(interface_extends:yandex.cloud.apploadbalancer.v1.StorageBucketBackend)
      com.google.protobuf.MessageOrBuilder {
    /**
     * 
     * Name of the bucket.
     * 
     *
     * string bucket = 1 [(.yandex.cloud.required) = true];
     * @return The bucket.
     */
    java.lang.String getBucket();
    /**
     * 
     * Name of the bucket.
     * 
     *
     * string bucket = 1 [(.yandex.cloud.required) = true];
     * @return The bytes for bucket.
     */
    com.google.protobuf.ByteString
        getBucketBytes();
  }
  /**
   * 
   * A resource for Object Storage bucket used as a backend. For details about the concept,
   * see [documentation](/docs/storage/concepts/bucket).
   * 
   *
   * Protobuf type {@code yandex.cloud.apploadbalancer.v1.StorageBucketBackend}
   */
  public static final class StorageBucketBackend extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:yandex.cloud.apploadbalancer.v1.StorageBucketBackend)
      StorageBucketBackendOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use StorageBucketBackend.newBuilder() to construct.
    private StorageBucketBackend(com.google.protobuf.GeneratedMessageV3.Builder> builder) {
      super(builder);
    }
    private StorageBucketBackend() {
      bucket_ = "";
    }
    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new StorageBucketBackend();
    }
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private StorageBucketBackend(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              java.lang.String s = input.readStringRequireUtf8();
              bucket_ = s;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_StorageBucketBackend_descriptor;
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_StorageBucketBackend_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StorageBucketBackend.class, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StorageBucketBackend.Builder.class);
    }
    public static final int BUCKET_FIELD_NUMBER = 1;
    private volatile java.lang.Object bucket_;
    /**
     * 
     * Name of the bucket.
     * 
     *
     * string bucket = 1 [(.yandex.cloud.required) = true];
     * @return The bucket.
     */
    @java.lang.Override
    public java.lang.String getBucket() {
      java.lang.Object ref = bucket_;
      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();
        bucket_ = s;
        return s;
      }
    }
    /**
     * 
     * Name of the bucket.
     * 
     *
     * string bucket = 1 [(.yandex.cloud.required) = true];
     * @return The bytes for bucket.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getBucketBytes() {
      java.lang.Object ref = bucket_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        bucket_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;
      memoizedIsInitialized = 1;
      return true;
    }
    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(bucket_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, bucket_);
      }
      unknownFields.writeTo(output);
    }
    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;
      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(bucket_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, bucket_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StorageBucketBackend)) {
        return super.equals(obj);
      }
      yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StorageBucketBackend other = (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StorageBucketBackend) obj;
      if (!getBucket()
          .equals(other.getBucket())) return false;
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }
    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + BUCKET_FIELD_NUMBER;
      hash = (53 * hash) + getBucket().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StorageBucketBackend parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StorageBucketBackend parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StorageBucketBackend parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StorageBucketBackend parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StorageBucketBackend parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StorageBucketBackend parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StorageBucketBackend parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StorageBucketBackend 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 yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StorageBucketBackend parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StorageBucketBackend 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 yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StorageBucketBackend parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StorageBucketBackend 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(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StorageBucketBackend 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;
    }
    /**
     * 
     * A resource for Object Storage bucket used as a backend. For details about the concept,
     * see [documentation](/docs/storage/concepts/bucket).
     * 
     *
     * Protobuf type {@code yandex.cloud.apploadbalancer.v1.StorageBucketBackend}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:yandex.cloud.apploadbalancer.v1.StorageBucketBackend)
        yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StorageBucketBackendOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_StorageBucketBackend_descriptor;
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_StorageBucketBackend_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StorageBucketBackend.class, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StorageBucketBackend.Builder.class);
      }
      // Construct using yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StorageBucketBackend.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bucket_ = "";
        return this;
      }
      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_StorageBucketBackend_descriptor;
      }
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StorageBucketBackend getDefaultInstanceForType() {
        return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StorageBucketBackend.getDefaultInstance();
      }
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StorageBucketBackend build() {
        yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StorageBucketBackend result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StorageBucketBackend buildPartial() {
        yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StorageBucketBackend result = new yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StorageBucketBackend(this);
        result.bucket_ = bucket_;
        onBuilt();
        return result;
      }
      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StorageBucketBackend) {
          return mergeFrom((yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StorageBucketBackend)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      public Builder mergeFrom(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StorageBucketBackend other) {
        if (other == yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StorageBucketBackend.getDefaultInstance()) return this;
        if (!other.getBucket().isEmpty()) {
          bucket_ = other.bucket_;
          onChanged();
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }
      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }
      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StorageBucketBackend parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StorageBucketBackend) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private java.lang.Object bucket_ = "";
      /**
       * 
       * Name of the bucket.
       * 
       *
       * string bucket = 1 [(.yandex.cloud.required) = true];
       * @return The bucket.
       */
      public java.lang.String getBucket() {
        java.lang.Object ref = bucket_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          bucket_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * 
       * Name of the bucket.
       * 
       *
       * string bucket = 1 [(.yandex.cloud.required) = true];
       * @return The bytes for bucket.
       */
      public com.google.protobuf.ByteString
          getBucketBytes() {
        java.lang.Object ref = bucket_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          bucket_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * 
       * Name of the bucket.
       * 
       *
       * string bucket = 1 [(.yandex.cloud.required) = true];
       * @param value The bucket to set.
       * @return This builder for chaining.
       */
      public Builder setBucket(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        bucket_ = value;
        onChanged();
        return this;
      }
      /**
       * 
       * Name of the bucket.
       * 
       *
       * string bucket = 1 [(.yandex.cloud.required) = true];
       * @return This builder for chaining.
       */
      public Builder clearBucket() {
        
        bucket_ = getDefaultInstance().getBucket();
        onChanged();
        return this;
      }
      /**
       * 
       * Name of the bucket.
       * 
       *
       * string bucket = 1 [(.yandex.cloud.required) = true];
       * @param value The bytes for bucket to set.
       * @return This builder for chaining.
       */
      public Builder setBucketBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        bucket_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }
      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }
      // @@protoc_insertion_point(builder_scope:yandex.cloud.apploadbalancer.v1.StorageBucketBackend)
    }
    // @@protoc_insertion_point(class_scope:yandex.cloud.apploadbalancer.v1.StorageBucketBackend)
    private static final yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StorageBucketBackend DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StorageBucketBackend();
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StorageBucketBackend getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }
    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public StorageBucketBackend parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new StorageBucketBackend(input, extensionRegistry);
      }
    };
    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }
    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }
    @java.lang.Override
    public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.StorageBucketBackend getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }
  }
  public interface HealthCheckOrBuilder extends
      // @@protoc_insertion_point(interface_extends:yandex.cloud.apploadbalancer.v1.HealthCheck)
      com.google.protobuf.MessageOrBuilder {
    /**
     * 
     * Health check timeout.
     * The timeout is the time allowed for the target to respond to a check.
     * If the target doesn't respond in time, the check is considered failed.
     * 
     *
     * .google.protobuf.Duration timeout = 1 [(.yandex.cloud.required) = true];
     * @return Whether the timeout field is set.
     */
    boolean hasTimeout();
    /**
     * 
     * Health check timeout.
     * The timeout is the time allowed for the target to respond to a check.
     * If the target doesn't respond in time, the check is considered failed.
     * 
     *
     * .google.protobuf.Duration timeout = 1 [(.yandex.cloud.required) = true];
     * @return The timeout.
     */
    com.google.protobuf.Duration getTimeout();
    /**
     * 
     * Health check timeout.
     * The timeout is the time allowed for the target to respond to a check.
     * If the target doesn't respond in time, the check is considered failed.
     * 
     *
     * .google.protobuf.Duration timeout = 1 [(.yandex.cloud.required) = true];
     */
    com.google.protobuf.DurationOrBuilder getTimeoutOrBuilder();
    /**
     * 
     * Base interval between consecutive health checks.
     * 
     *
     * .google.protobuf.Duration interval = 2 [(.yandex.cloud.required) = true];
     * @return Whether the interval field is set.
     */
    boolean hasInterval();
    /**
     * 
     * Base interval between consecutive health checks.
     * 
     *
     * .google.protobuf.Duration interval = 2 [(.yandex.cloud.required) = true];
     * @return The interval.
     */
    com.google.protobuf.Duration getInterval();
    /**
     * 
     * Base interval between consecutive health checks.
     * 
     *
     * .google.protobuf.Duration interval = 2 [(.yandex.cloud.required) = true];
     */
    com.google.protobuf.DurationOrBuilder getIntervalOrBuilder();
    /**
     * double interval_jitter_percent = 3;
     * @return The intervalJitterPercent.
     */
    double getIntervalJitterPercent();
    /**
     * 
     * Number of consecutive successful health checks required to mark an unhealthy target as healthy.
     * Both `0` and `1` values amount to one successful check required.
     * The value is ignored when a load balancer is initialized; a target is marked healthy after one successful check.
     * Default value: `0`.
     * 
     *
     * int64 healthy_threshold = 4;
     * @return The healthyThreshold.
     */
    long getHealthyThreshold();
    /**
     * 
     * Number of consecutive failed health checks required to mark a healthy target as unhealthy.
     * Both `0` and `1` values amount to one unsuccessful check required.
     * The value is ignored if a health check is failed due to an HTTP `503 Service Unavailable` response from the target
     * (not applicable to TCP stream health checks). The target is immediately marked unhealthy.
     * Default value: `0`.
     * 
     *
     * int64 unhealthy_threshold = 5;
     * @return The unhealthyThreshold.
     */
    long getUnhealthyThreshold();
    /**
     * 
     * Port used for health checks.
     * If not specified, the backend port ([HttpBackend.port] or [GrpcBackend.port]) is used for health checks.
     * 
     *
     * int64 healthcheck_port = 6 [(.yandex.cloud.value) = "0-65535"];
     * @return The healthcheckPort.
     */
    long getHealthcheckPort();
    /**
     * 
     * TCP stream health check settings.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.HealthCheck.StreamHealthCheck stream = 7;
     * @return Whether the stream field is set.
     */
    boolean hasStream();
    /**
     * 
     * TCP stream health check settings.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.HealthCheck.StreamHealthCheck stream = 7;
     * @return The stream.
     */
    yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.StreamHealthCheck getStream();
    /**
     * 
     * TCP stream health check settings.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.HealthCheck.StreamHealthCheck stream = 7;
     */
    yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.StreamHealthCheckOrBuilder getStreamOrBuilder();
    /**
     * 
     * HTTP health check settings.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.HealthCheck.HttpHealthCheck http = 8;
     * @return Whether the http field is set.
     */
    boolean hasHttp();
    /**
     * 
     * HTTP health check settings.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.HealthCheck.HttpHealthCheck http = 8;
     * @return The http.
     */
    yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.HttpHealthCheck getHttp();
    /**
     * 
     * HTTP health check settings.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.HealthCheck.HttpHealthCheck http = 8;
     */
    yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.HttpHealthCheckOrBuilder getHttpOrBuilder();
    /**
     * 
     * gRPC health check settings.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.HealthCheck.GrpcHealthCheck grpc = 9;
     * @return Whether the grpc field is set.
     */
    boolean hasGrpc();
    /**
     * 
     * gRPC health check settings.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.HealthCheck.GrpcHealthCheck grpc = 9;
     * @return The grpc.
     */
    yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.GrpcHealthCheck getGrpc();
    /**
     * 
     * gRPC health check settings.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.HealthCheck.GrpcHealthCheck grpc = 9;
     */
    yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.GrpcHealthCheckOrBuilder getGrpcOrBuilder();
    /**
     * .yandex.cloud.apploadbalancer.v1.PlaintextTransportSettings plaintext = 10;
     * @return Whether the plaintext field is set.
     */
    boolean hasPlaintext();
    /**
     * .yandex.cloud.apploadbalancer.v1.PlaintextTransportSettings plaintext = 10;
     * @return The plaintext.
     */
    yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.PlaintextTransportSettings getPlaintext();
    /**
     * .yandex.cloud.apploadbalancer.v1.PlaintextTransportSettings plaintext = 10;
     */
    yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.PlaintextTransportSettingsOrBuilder getPlaintextOrBuilder();
    /**
     * .yandex.cloud.apploadbalancer.v1.SecureTransportSettings tls = 11;
     * @return Whether the tls field is set.
     */
    boolean hasTls();
    /**
     * .yandex.cloud.apploadbalancer.v1.SecureTransportSettings tls = 11;
     * @return The tls.
     */
    yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.SecureTransportSettings getTls();
    /**
     * .yandex.cloud.apploadbalancer.v1.SecureTransportSettings tls = 11;
     */
    yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.SecureTransportSettingsOrBuilder getTlsOrBuilder();
    public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.HealthcheckCase getHealthcheckCase();
    public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.TransportSettingsCase getTransportSettingsCase();
  }
  /**
   * 
   * A health check resource.
   * For details about the concept, see [documentation](/docs/application-load-balancer/concepts/backend-group#health-checks).
   * 
   *
   * Protobuf type {@code yandex.cloud.apploadbalancer.v1.HealthCheck}
   */
  public static final class HealthCheck extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:yandex.cloud.apploadbalancer.v1.HealthCheck)
      HealthCheckOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use HealthCheck.newBuilder() to construct.
    private HealthCheck(com.google.protobuf.GeneratedMessageV3.Builder> builder) {
      super(builder);
    }
    private HealthCheck() {
    }
    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new HealthCheck();
    }
    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private HealthCheck(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              com.google.protobuf.Duration.Builder subBuilder = null;
              if (timeout_ != null) {
                subBuilder = timeout_.toBuilder();
              }
              timeout_ = input.readMessage(com.google.protobuf.Duration.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(timeout_);
                timeout_ = subBuilder.buildPartial();
              }
              break;
            }
            case 18: {
              com.google.protobuf.Duration.Builder subBuilder = null;
              if (interval_ != null) {
                subBuilder = interval_.toBuilder();
              }
              interval_ = input.readMessage(com.google.protobuf.Duration.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(interval_);
                interval_ = subBuilder.buildPartial();
              }
              break;
            }
            case 25: {
              intervalJitterPercent_ = input.readDouble();
              break;
            }
            case 32: {
              healthyThreshold_ = input.readInt64();
              break;
            }
            case 40: {
              unhealthyThreshold_ = input.readInt64();
              break;
            }
            case 48: {
              healthcheckPort_ = input.readInt64();
              break;
            }
            case 58: {
              yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.StreamHealthCheck.Builder subBuilder = null;
              if (healthcheckCase_ == 7) {
                subBuilder = ((yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.StreamHealthCheck) healthcheck_).toBuilder();
              }
              healthcheck_ =
                  input.readMessage(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.StreamHealthCheck.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.StreamHealthCheck) healthcheck_);
                healthcheck_ = subBuilder.buildPartial();
              }
              healthcheckCase_ = 7;
              break;
            }
            case 66: {
              yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.HttpHealthCheck.Builder subBuilder = null;
              if (healthcheckCase_ == 8) {
                subBuilder = ((yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.HttpHealthCheck) healthcheck_).toBuilder();
              }
              healthcheck_ =
                  input.readMessage(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.HttpHealthCheck.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.HttpHealthCheck) healthcheck_);
                healthcheck_ = subBuilder.buildPartial();
              }
              healthcheckCase_ = 8;
              break;
            }
            case 74: {
              yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.GrpcHealthCheck.Builder subBuilder = null;
              if (healthcheckCase_ == 9) {
                subBuilder = ((yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.GrpcHealthCheck) healthcheck_).toBuilder();
              }
              healthcheck_ =
                  input.readMessage(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.GrpcHealthCheck.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.GrpcHealthCheck) healthcheck_);
                healthcheck_ = subBuilder.buildPartial();
              }
              healthcheckCase_ = 9;
              break;
            }
            case 82: {
              yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.PlaintextTransportSettings.Builder subBuilder = null;
              if (transportSettingsCase_ == 10) {
                subBuilder = ((yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.PlaintextTransportSettings) transportSettings_).toBuilder();
              }
              transportSettings_ =
                  input.readMessage(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.PlaintextTransportSettings.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.PlaintextTransportSettings) transportSettings_);
                transportSettings_ = subBuilder.buildPartial();
              }
              transportSettingsCase_ = 10;
              break;
            }
            case 90: {
              yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.SecureTransportSettings.Builder subBuilder = null;
              if (transportSettingsCase_ == 11) {
                subBuilder = ((yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.SecureTransportSettings) transportSettings_).toBuilder();
              }
              transportSettings_ =
                  input.readMessage(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.SecureTransportSettings.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.SecureTransportSettings) transportSettings_);
                transportSettings_ = subBuilder.buildPartial();
              }
              transportSettingsCase_ = 11;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_HealthCheck_descriptor;
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_HealthCheck_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.class, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.Builder.class);
    }
    public interface StreamHealthCheckOrBuilder extends
        // @@protoc_insertion_point(interface_extends:yandex.cloud.apploadbalancer.v1.HealthCheck.StreamHealthCheck)
        com.google.protobuf.MessageOrBuilder {
      /**
       * 
       * Message sent to targets during TCP data transfer.
       * If not specified, no data is sent to the target.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.Payload send = 1;
       * @return Whether the send field is set.
       */
      boolean hasSend();
      /**
       * 
       * Message sent to targets during TCP data transfer.
       * If not specified, no data is sent to the target.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.Payload send = 1;
       * @return The send.
       */
      yandex.cloud.api.apploadbalancer.v1.PayloadOuterClass.Payload getSend();
      /**
       * 
       * Message sent to targets during TCP data transfer.
       * If not specified, no data is sent to the target.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.Payload send = 1;
       */
      yandex.cloud.api.apploadbalancer.v1.PayloadOuterClass.PayloadOrBuilder getSendOrBuilder();
      /**
       * 
       * Data that must be contained in the messages received from targets for a successful health check.
       * If not specified, no messages are expected from targets, and those that are received are not checked.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.Payload receive = 2;
       * @return Whether the receive field is set.
       */
      boolean hasReceive();
      /**
       * 
       * Data that must be contained in the messages received from targets for a successful health check.
       * If not specified, no messages are expected from targets, and those that are received are not checked.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.Payload receive = 2;
       * @return The receive.
       */
      yandex.cloud.api.apploadbalancer.v1.PayloadOuterClass.Payload getReceive();
      /**
       * 
       * Data that must be contained in the messages received from targets for a successful health check.
       * If not specified, no messages are expected from targets, and those that are received are not checked.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.Payload receive = 2;
       */
      yandex.cloud.api.apploadbalancer.v1.PayloadOuterClass.PayloadOrBuilder getReceiveOrBuilder();
    }
    /**
     * 
     * A resource for TCP stream health check settings.
     * 
     *
     * Protobuf type {@code yandex.cloud.apploadbalancer.v1.HealthCheck.StreamHealthCheck}
     */
    public static final class StreamHealthCheck extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:yandex.cloud.apploadbalancer.v1.HealthCheck.StreamHealthCheck)
        StreamHealthCheckOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use StreamHealthCheck.newBuilder() to construct.
      private StreamHealthCheck(com.google.protobuf.GeneratedMessageV3.Builder> builder) {
        super(builder);
      }
      private StreamHealthCheck() {
      }
      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(
          UnusedPrivateParameter unused) {
        return new StreamHealthCheck();
      }
      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private StreamHealthCheck(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder();
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                yandex.cloud.api.apploadbalancer.v1.PayloadOuterClass.Payload.Builder subBuilder = null;
                if (send_ != null) {
                  subBuilder = send_.toBuilder();
                }
                send_ = input.readMessage(yandex.cloud.api.apploadbalancer.v1.PayloadOuterClass.Payload.parser(), extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(send_);
                  send_ = subBuilder.buildPartial();
                }
                break;
              }
              case 18: {
                yandex.cloud.api.apploadbalancer.v1.PayloadOuterClass.Payload.Builder subBuilder = null;
                if (receive_ != null) {
                  subBuilder = receive_.toBuilder();
                }
                receive_ = input.readMessage(yandex.cloud.api.apploadbalancer.v1.PayloadOuterClass.Payload.parser(), extensionRegistry);
                if (subBuilder != null) {
                  subBuilder.mergeFrom(receive_);
                  receive_ = subBuilder.buildPartial();
                }
                break;
              }
              default: {
                if (!parseUnknownField(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_HealthCheck_StreamHealthCheck_descriptor;
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_HealthCheck_StreamHealthCheck_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.StreamHealthCheck.class, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.StreamHealthCheck.Builder.class);
      }
      public static final int SEND_FIELD_NUMBER = 1;
      private yandex.cloud.api.apploadbalancer.v1.PayloadOuterClass.Payload send_;
      /**
       * 
       * Message sent to targets during TCP data transfer.
       * If not specified, no data is sent to the target.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.Payload send = 1;
       * @return Whether the send field is set.
       */
      @java.lang.Override
      public boolean hasSend() {
        return send_ != null;
      }
      /**
       * 
       * Message sent to targets during TCP data transfer.
       * If not specified, no data is sent to the target.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.Payload send = 1;
       * @return The send.
       */
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.PayloadOuterClass.Payload getSend() {
        return send_ == null ? yandex.cloud.api.apploadbalancer.v1.PayloadOuterClass.Payload.getDefaultInstance() : send_;
      }
      /**
       * 
       * Message sent to targets during TCP data transfer.
       * If not specified, no data is sent to the target.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.Payload send = 1;
       */
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.PayloadOuterClass.PayloadOrBuilder getSendOrBuilder() {
        return getSend();
      }
      public static final int RECEIVE_FIELD_NUMBER = 2;
      private yandex.cloud.api.apploadbalancer.v1.PayloadOuterClass.Payload receive_;
      /**
       * 
       * Data that must be contained in the messages received from targets for a successful health check.
       * If not specified, no messages are expected from targets, and those that are received are not checked.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.Payload receive = 2;
       * @return Whether the receive field is set.
       */
      @java.lang.Override
      public boolean hasReceive() {
        return receive_ != null;
      }
      /**
       * 
       * Data that must be contained in the messages received from targets for a successful health check.
       * If not specified, no messages are expected from targets, and those that are received are not checked.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.Payload receive = 2;
       * @return The receive.
       */
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.PayloadOuterClass.Payload getReceive() {
        return receive_ == null ? yandex.cloud.api.apploadbalancer.v1.PayloadOuterClass.Payload.getDefaultInstance() : receive_;
      }
      /**
       * 
       * Data that must be contained in the messages received from targets for a successful health check.
       * If not specified, no messages are expected from targets, and those that are received are not checked.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.Payload receive = 2;
       */
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.PayloadOuterClass.PayloadOrBuilder getReceiveOrBuilder() {
        return getReceive();
      }
      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 (send_ != null) {
          output.writeMessage(1, getSend());
        }
        if (receive_ != null) {
          output.writeMessage(2, getReceive());
        }
        unknownFields.writeTo(output);
      }
      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
        size = 0;
        if (send_ != null) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(1, getSend());
        }
        if (receive_ != null) {
          size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, getReceive());
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }
      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.StreamHealthCheck)) {
          return super.equals(obj);
        }
        yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.StreamHealthCheck other = (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.StreamHealthCheck) obj;
        if (hasSend() != other.hasSend()) return false;
        if (hasSend()) {
          if (!getSend()
              .equals(other.getSend())) return false;
        }
        if (hasReceive() != other.hasReceive()) return false;
        if (hasReceive()) {
          if (!getReceive()
              .equals(other.getReceive())) return false;
        }
        if (!unknownFields.equals(other.unknownFields)) return false;
        return true;
      }
      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        if (hasSend()) {
          hash = (37 * hash) + SEND_FIELD_NUMBER;
          hash = (53 * hash) + getSend().hashCode();
        }
        if (hasReceive()) {
          hash = (37 * hash) + RECEIVE_FIELD_NUMBER;
          hash = (53 * hash) + getReceive().hashCode();
        }
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
      public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.StreamHealthCheck parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.StreamHealthCheck parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.StreamHealthCheck parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.StreamHealthCheck parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.StreamHealthCheck parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.StreamHealthCheck parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.StreamHealthCheck parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.StreamHealthCheck 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 yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.StreamHealthCheck parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.StreamHealthCheck 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 yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.StreamHealthCheck parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.StreamHealthCheck 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(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.StreamHealthCheck 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;
      }
      /**
       * 
       * A resource for TCP stream health check settings.
       * 
       *
       * Protobuf type {@code yandex.cloud.apploadbalancer.v1.HealthCheck.StreamHealthCheck}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder implements
          // @@protoc_insertion_point(builder_implements:yandex.cloud.apploadbalancer.v1.HealthCheck.StreamHealthCheck)
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.StreamHealthCheckOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_HealthCheck_StreamHealthCheck_descriptor;
        }
        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_HealthCheck_StreamHealthCheck_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.StreamHealthCheck.class, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.StreamHealthCheck.Builder.class);
        }
        // Construct using yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.StreamHealthCheck.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
          }
        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          if (sendBuilder_ == null) {
            send_ = null;
          } else {
            send_ = null;
            sendBuilder_ = null;
          }
          if (receiveBuilder_ == null) {
            receive_ = null;
          } else {
            receive_ = null;
            receiveBuilder_ = null;
          }
          return this;
        }
        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_HealthCheck_StreamHealthCheck_descriptor;
        }
        @java.lang.Override
        public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.StreamHealthCheck getDefaultInstanceForType() {
          return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.StreamHealthCheck.getDefaultInstance();
        }
        @java.lang.Override
        public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.StreamHealthCheck build() {
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.StreamHealthCheck result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
        @java.lang.Override
        public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.StreamHealthCheck buildPartial() {
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.StreamHealthCheck result = new yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.StreamHealthCheck(this);
          if (sendBuilder_ == null) {
            result.send_ = send_;
          } else {
            result.send_ = sendBuilder_.build();
          }
          if (receiveBuilder_ == null) {
            result.receive_ = receive_;
          } else {
            result.receive_ = receiveBuilder_.build();
          }
          onBuilt();
          return result;
        }
        @java.lang.Override
        public Builder clone() {
          return super.clone();
        }
        @java.lang.Override
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.setField(field, value);
        }
        @java.lang.Override
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return super.clearField(field);
        }
        @java.lang.Override
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return super.clearOneof(oneof);
        }
        @java.lang.Override
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, java.lang.Object value) {
          return super.setRepeatedField(field, index, value);
        }
        @java.lang.Override
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.addRepeatedField(field, value);
        }
        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.StreamHealthCheck) {
            return mergeFrom((yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.StreamHealthCheck)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
        public Builder mergeFrom(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.StreamHealthCheck other) {
          if (other == yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.StreamHealthCheck.getDefaultInstance()) return this;
          if (other.hasSend()) {
            mergeSend(other.getSend());
          }
          if (other.hasReceive()) {
            mergeReceive(other.getReceive());
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }
        @java.lang.Override
        public final boolean isInitialized() {
          return true;
        }
        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.StreamHealthCheck parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.StreamHealthCheck) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private yandex.cloud.api.apploadbalancer.v1.PayloadOuterClass.Payload send_;
        private com.google.protobuf.SingleFieldBuilderV3<
            yandex.cloud.api.apploadbalancer.v1.PayloadOuterClass.Payload, yandex.cloud.api.apploadbalancer.v1.PayloadOuterClass.Payload.Builder, yandex.cloud.api.apploadbalancer.v1.PayloadOuterClass.PayloadOrBuilder> sendBuilder_;
        /**
         * 
         * Message sent to targets during TCP data transfer.
         * If not specified, no data is sent to the target.
         * 
         *
         * .yandex.cloud.apploadbalancer.v1.Payload send = 1;
         * @return Whether the send field is set.
         */
        public boolean hasSend() {
          return sendBuilder_ != null || send_ != null;
        }
        /**
         * 
         * Message sent to targets during TCP data transfer.
         * If not specified, no data is sent to the target.
         * 
         *
         * .yandex.cloud.apploadbalancer.v1.Payload send = 1;
         * @return The send.
         */
        public yandex.cloud.api.apploadbalancer.v1.PayloadOuterClass.Payload getSend() {
          if (sendBuilder_ == null) {
            return send_ == null ? yandex.cloud.api.apploadbalancer.v1.PayloadOuterClass.Payload.getDefaultInstance() : send_;
          } else {
            return sendBuilder_.getMessage();
          }
        }
        /**
         * 
         * Message sent to targets during TCP data transfer.
         * If not specified, no data is sent to the target.
         * 
         *
         * .yandex.cloud.apploadbalancer.v1.Payload send = 1;
         */
        public Builder setSend(yandex.cloud.api.apploadbalancer.v1.PayloadOuterClass.Payload value) {
          if (sendBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            send_ = value;
            onChanged();
          } else {
            sendBuilder_.setMessage(value);
          }
          return this;
        }
        /**
         * 
         * Message sent to targets during TCP data transfer.
         * If not specified, no data is sent to the target.
         * 
         *
         * .yandex.cloud.apploadbalancer.v1.Payload send = 1;
         */
        public Builder setSend(
            yandex.cloud.api.apploadbalancer.v1.PayloadOuterClass.Payload.Builder builderForValue) {
          if (sendBuilder_ == null) {
            send_ = builderForValue.build();
            onChanged();
          } else {
            sendBuilder_.setMessage(builderForValue.build());
          }
          return this;
        }
        /**
         * 
         * Message sent to targets during TCP data transfer.
         * If not specified, no data is sent to the target.
         * 
         *
         * .yandex.cloud.apploadbalancer.v1.Payload send = 1;
         */
        public Builder mergeSend(yandex.cloud.api.apploadbalancer.v1.PayloadOuterClass.Payload value) {
          if (sendBuilder_ == null) {
            if (send_ != null) {
              send_ =
                yandex.cloud.api.apploadbalancer.v1.PayloadOuterClass.Payload.newBuilder(send_).mergeFrom(value).buildPartial();
            } else {
              send_ = value;
            }
            onChanged();
          } else {
            sendBuilder_.mergeFrom(value);
          }
          return this;
        }
        /**
         * 
         * Message sent to targets during TCP data transfer.
         * If not specified, no data is sent to the target.
         * 
         *
         * .yandex.cloud.apploadbalancer.v1.Payload send = 1;
         */
        public Builder clearSend() {
          if (sendBuilder_ == null) {
            send_ = null;
            onChanged();
          } else {
            send_ = null;
            sendBuilder_ = null;
          }
          return this;
        }
        /**
         * 
         * Message sent to targets during TCP data transfer.
         * If not specified, no data is sent to the target.
         * 
         *
         * .yandex.cloud.apploadbalancer.v1.Payload send = 1;
         */
        public yandex.cloud.api.apploadbalancer.v1.PayloadOuterClass.Payload.Builder getSendBuilder() {
          
          onChanged();
          return getSendFieldBuilder().getBuilder();
        }
        /**
         * 
         * Message sent to targets during TCP data transfer.
         * If not specified, no data is sent to the target.
         * 
         *
         * .yandex.cloud.apploadbalancer.v1.Payload send = 1;
         */
        public yandex.cloud.api.apploadbalancer.v1.PayloadOuterClass.PayloadOrBuilder getSendOrBuilder() {
          if (sendBuilder_ != null) {
            return sendBuilder_.getMessageOrBuilder();
          } else {
            return send_ == null ?
                yandex.cloud.api.apploadbalancer.v1.PayloadOuterClass.Payload.getDefaultInstance() : send_;
          }
        }
        /**
         * 
         * Message sent to targets during TCP data transfer.
         * If not specified, no data is sent to the target.
         * 
         *
         * .yandex.cloud.apploadbalancer.v1.Payload send = 1;
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            yandex.cloud.api.apploadbalancer.v1.PayloadOuterClass.Payload, yandex.cloud.api.apploadbalancer.v1.PayloadOuterClass.Payload.Builder, yandex.cloud.api.apploadbalancer.v1.PayloadOuterClass.PayloadOrBuilder> 
            getSendFieldBuilder() {
          if (sendBuilder_ == null) {
            sendBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                yandex.cloud.api.apploadbalancer.v1.PayloadOuterClass.Payload, yandex.cloud.api.apploadbalancer.v1.PayloadOuterClass.Payload.Builder, yandex.cloud.api.apploadbalancer.v1.PayloadOuterClass.PayloadOrBuilder>(
                    getSend(),
                    getParentForChildren(),
                    isClean());
            send_ = null;
          }
          return sendBuilder_;
        }
        private yandex.cloud.api.apploadbalancer.v1.PayloadOuterClass.Payload receive_;
        private com.google.protobuf.SingleFieldBuilderV3<
            yandex.cloud.api.apploadbalancer.v1.PayloadOuterClass.Payload, yandex.cloud.api.apploadbalancer.v1.PayloadOuterClass.Payload.Builder, yandex.cloud.api.apploadbalancer.v1.PayloadOuterClass.PayloadOrBuilder> receiveBuilder_;
        /**
         * 
         * Data that must be contained in the messages received from targets for a successful health check.
         * If not specified, no messages are expected from targets, and those that are received are not checked.
         * 
         *
         * .yandex.cloud.apploadbalancer.v1.Payload receive = 2;
         * @return Whether the receive field is set.
         */
        public boolean hasReceive() {
          return receiveBuilder_ != null || receive_ != null;
        }
        /**
         * 
         * Data that must be contained in the messages received from targets for a successful health check.
         * If not specified, no messages are expected from targets, and those that are received are not checked.
         * 
         *
         * .yandex.cloud.apploadbalancer.v1.Payload receive = 2;
         * @return The receive.
         */
        public yandex.cloud.api.apploadbalancer.v1.PayloadOuterClass.Payload getReceive() {
          if (receiveBuilder_ == null) {
            return receive_ == null ? yandex.cloud.api.apploadbalancer.v1.PayloadOuterClass.Payload.getDefaultInstance() : receive_;
          } else {
            return receiveBuilder_.getMessage();
          }
        }
        /**
         * 
         * Data that must be contained in the messages received from targets for a successful health check.
         * If not specified, no messages are expected from targets, and those that are received are not checked.
         * 
         *
         * .yandex.cloud.apploadbalancer.v1.Payload receive = 2;
         */
        public Builder setReceive(yandex.cloud.api.apploadbalancer.v1.PayloadOuterClass.Payload value) {
          if (receiveBuilder_ == null) {
            if (value == null) {
              throw new NullPointerException();
            }
            receive_ = value;
            onChanged();
          } else {
            receiveBuilder_.setMessage(value);
          }
          return this;
        }
        /**
         * 
         * Data that must be contained in the messages received from targets for a successful health check.
         * If not specified, no messages are expected from targets, and those that are received are not checked.
         * 
         *
         * .yandex.cloud.apploadbalancer.v1.Payload receive = 2;
         */
        public Builder setReceive(
            yandex.cloud.api.apploadbalancer.v1.PayloadOuterClass.Payload.Builder builderForValue) {
          if (receiveBuilder_ == null) {
            receive_ = builderForValue.build();
            onChanged();
          } else {
            receiveBuilder_.setMessage(builderForValue.build());
          }
          return this;
        }
        /**
         * 
         * Data that must be contained in the messages received from targets for a successful health check.
         * If not specified, no messages are expected from targets, and those that are received are not checked.
         * 
         *
         * .yandex.cloud.apploadbalancer.v1.Payload receive = 2;
         */
        public Builder mergeReceive(yandex.cloud.api.apploadbalancer.v1.PayloadOuterClass.Payload value) {
          if (receiveBuilder_ == null) {
            if (receive_ != null) {
              receive_ =
                yandex.cloud.api.apploadbalancer.v1.PayloadOuterClass.Payload.newBuilder(receive_).mergeFrom(value).buildPartial();
            } else {
              receive_ = value;
            }
            onChanged();
          } else {
            receiveBuilder_.mergeFrom(value);
          }
          return this;
        }
        /**
         * 
         * Data that must be contained in the messages received from targets for a successful health check.
         * If not specified, no messages are expected from targets, and those that are received are not checked.
         * 
         *
         * .yandex.cloud.apploadbalancer.v1.Payload receive = 2;
         */
        public Builder clearReceive() {
          if (receiveBuilder_ == null) {
            receive_ = null;
            onChanged();
          } else {
            receive_ = null;
            receiveBuilder_ = null;
          }
          return this;
        }
        /**
         * 
         * Data that must be contained in the messages received from targets for a successful health check.
         * If not specified, no messages are expected from targets, and those that are received are not checked.
         * 
         *
         * .yandex.cloud.apploadbalancer.v1.Payload receive = 2;
         */
        public yandex.cloud.api.apploadbalancer.v1.PayloadOuterClass.Payload.Builder getReceiveBuilder() {
          
          onChanged();
          return getReceiveFieldBuilder().getBuilder();
        }
        /**
         * 
         * Data that must be contained in the messages received from targets for a successful health check.
         * If not specified, no messages are expected from targets, and those that are received are not checked.
         * 
         *
         * .yandex.cloud.apploadbalancer.v1.Payload receive = 2;
         */
        public yandex.cloud.api.apploadbalancer.v1.PayloadOuterClass.PayloadOrBuilder getReceiveOrBuilder() {
          if (receiveBuilder_ != null) {
            return receiveBuilder_.getMessageOrBuilder();
          } else {
            return receive_ == null ?
                yandex.cloud.api.apploadbalancer.v1.PayloadOuterClass.Payload.getDefaultInstance() : receive_;
          }
        }
        /**
         * 
         * Data that must be contained in the messages received from targets for a successful health check.
         * If not specified, no messages are expected from targets, and those that are received are not checked.
         * 
         *
         * .yandex.cloud.apploadbalancer.v1.Payload receive = 2;
         */
        private com.google.protobuf.SingleFieldBuilderV3<
            yandex.cloud.api.apploadbalancer.v1.PayloadOuterClass.Payload, yandex.cloud.api.apploadbalancer.v1.PayloadOuterClass.Payload.Builder, yandex.cloud.api.apploadbalancer.v1.PayloadOuterClass.PayloadOrBuilder> 
            getReceiveFieldBuilder() {
          if (receiveBuilder_ == null) {
            receiveBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
                yandex.cloud.api.apploadbalancer.v1.PayloadOuterClass.Payload, yandex.cloud.api.apploadbalancer.v1.PayloadOuterClass.Payload.Builder, yandex.cloud.api.apploadbalancer.v1.PayloadOuterClass.PayloadOrBuilder>(
                    getReceive(),
                    getParentForChildren(),
                    isClean());
            receive_ = null;
          }
          return receiveBuilder_;
        }
        @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:yandex.cloud.apploadbalancer.v1.HealthCheck.StreamHealthCheck)
      }
      // @@protoc_insertion_point(class_scope:yandex.cloud.apploadbalancer.v1.HealthCheck.StreamHealthCheck)
      private static final yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.StreamHealthCheck DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.StreamHealthCheck();
      }
      public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.StreamHealthCheck getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
      private static final com.google.protobuf.Parser
          PARSER = new com.google.protobuf.AbstractParser() {
        @java.lang.Override
        public StreamHealthCheck parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return new StreamHealthCheck(input, extensionRegistry);
        }
      };
      public static com.google.protobuf.Parser parser() {
        return PARSER;
      }
      @java.lang.Override
      public com.google.protobuf.Parser getParserForType() {
        return PARSER;
      }
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.StreamHealthCheck getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
    }
    public interface HttpHealthCheckOrBuilder extends
        // @@protoc_insertion_point(interface_extends:yandex.cloud.apploadbalancer.v1.HealthCheck.HttpHealthCheck)
        com.google.protobuf.MessageOrBuilder {
      /**
       * 
       * Value for the HTTP/1.1 `Host` header or the HTTP/2 `:authority` pseudo-header used in requests to targets.
       * 
       *
       * string host = 1;
       * @return The host.
       */
      java.lang.String getHost();
      /**
       * 
       * Value for the HTTP/1.1 `Host` header or the HTTP/2 `:authority` pseudo-header used in requests to targets.
       * 
       *
       * string host = 1;
       * @return The bytes for host.
       */
      com.google.protobuf.ByteString
          getHostBytes();
      /**
       * 
       * HTTP path used in requests to targets: request URI for HTTP/1.1 request line
       * or value for the HTTP/2 `:path` pseudo-header.
       * 
       *
       * string path = 2 [(.yandex.cloud.required) = true];
       * @return The path.
       */
      java.lang.String getPath();
      /**
       * 
       * HTTP path used in requests to targets: request URI for HTTP/1.1 request line
       * or value for the HTTP/2 `:path` pseudo-header.
       * 
       *
       * string path = 2 [(.yandex.cloud.required) = true];
       * @return The bytes for path.
       */
      com.google.protobuf.ByteString
          getPathBytes();
      /**
       * 
       * Enables HTTP/2 usage in health checks.
       * Default value: `false`, HTTP/1.1 is used.
       * 
       *
       * bool use_http2 = 3;
       * @return The useHttp2.
       */
      boolean getUseHttp2();
    }
    /**
     * 
     * A resource for HTTP health check settings.
     * 
     *
     * Protobuf type {@code yandex.cloud.apploadbalancer.v1.HealthCheck.HttpHealthCheck}
     */
    public static final class HttpHealthCheck extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:yandex.cloud.apploadbalancer.v1.HealthCheck.HttpHealthCheck)
        HttpHealthCheckOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use HttpHealthCheck.newBuilder() to construct.
      private HttpHealthCheck(com.google.protobuf.GeneratedMessageV3.Builder> builder) {
        super(builder);
      }
      private HttpHealthCheck() {
        host_ = "";
        path_ = "";
      }
      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(
          UnusedPrivateParameter unused) {
        return new HttpHealthCheck();
      }
      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private HttpHealthCheck(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder();
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                java.lang.String s = input.readStringRequireUtf8();
                host_ = s;
                break;
              }
              case 18: {
                java.lang.String s = input.readStringRequireUtf8();
                path_ = s;
                break;
              }
              case 24: {
                useHttp2_ = input.readBool();
                break;
              }
              default: {
                if (!parseUnknownField(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_HealthCheck_HttpHealthCheck_descriptor;
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_HealthCheck_HttpHealthCheck_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.HttpHealthCheck.class, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.HttpHealthCheck.Builder.class);
      }
      public static final int HOST_FIELD_NUMBER = 1;
      private volatile java.lang.Object host_;
      /**
       * 
       * Value for the HTTP/1.1 `Host` header or the HTTP/2 `:authority` pseudo-header used in requests to targets.
       * 
       *
       * string host = 1;
       * @return The host.
       */
      @java.lang.Override
      public java.lang.String getHost() {
        java.lang.Object ref = host_;
        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();
          host_ = s;
          return s;
        }
      }
      /**
       * 
       * Value for the HTTP/1.1 `Host` header or the HTTP/2 `:authority` pseudo-header used in requests to targets.
       * 
       *
       * string host = 1;
       * @return The bytes for host.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getHostBytes() {
        java.lang.Object ref = host_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          host_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      public static final int PATH_FIELD_NUMBER = 2;
      private volatile java.lang.Object path_;
      /**
       * 
       * HTTP path used in requests to targets: request URI for HTTP/1.1 request line
       * or value for the HTTP/2 `:path` pseudo-header.
       * 
       *
       * string path = 2 [(.yandex.cloud.required) = true];
       * @return The path.
       */
      @java.lang.Override
      public java.lang.String getPath() {
        java.lang.Object ref = path_;
        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();
          path_ = s;
          return s;
        }
      }
      /**
       * 
       * HTTP path used in requests to targets: request URI for HTTP/1.1 request line
       * or value for the HTTP/2 `:path` pseudo-header.
       * 
       *
       * string path = 2 [(.yandex.cloud.required) = true];
       * @return The bytes for path.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getPathBytes() {
        java.lang.Object ref = path_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          path_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      public static final int USE_HTTP2_FIELD_NUMBER = 3;
      private boolean useHttp2_;
      /**
       * 
       * Enables HTTP/2 usage in health checks.
       * Default value: `false`, HTTP/1.1 is used.
       * 
       *
       * bool use_http2 = 3;
       * @return The useHttp2.
       */
      @java.lang.Override
      public boolean getUseHttp2() {
        return useHttp2_;
      }
      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
        memoizedIsInitialized = 1;
        return true;
      }
      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(host_)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 1, host_);
        }
        if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(path_)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 2, path_);
        }
        if (useHttp2_ != false) {
          output.writeBool(3, useHttp2_);
        }
        unknownFields.writeTo(output);
      }
      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
        size = 0;
        if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(host_)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, host_);
        }
        if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(path_)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, path_);
        }
        if (useHttp2_ != false) {
          size += com.google.protobuf.CodedOutputStream
            .computeBoolSize(3, useHttp2_);
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }
      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.HttpHealthCheck)) {
          return super.equals(obj);
        }
        yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.HttpHealthCheck other = (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.HttpHealthCheck) obj;
        if (!getHost()
            .equals(other.getHost())) return false;
        if (!getPath()
            .equals(other.getPath())) return false;
        if (getUseHttp2()
            != other.getUseHttp2()) return false;
        if (!unknownFields.equals(other.unknownFields)) return false;
        return true;
      }
      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        hash = (37 * hash) + HOST_FIELD_NUMBER;
        hash = (53 * hash) + getHost().hashCode();
        hash = (37 * hash) + PATH_FIELD_NUMBER;
        hash = (53 * hash) + getPath().hashCode();
        hash = (37 * hash) + USE_HTTP2_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
            getUseHttp2());
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
      public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.HttpHealthCheck parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.HttpHealthCheck parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.HttpHealthCheck parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.HttpHealthCheck parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.HttpHealthCheck parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.HttpHealthCheck parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.HttpHealthCheck parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.HttpHealthCheck 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 yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.HttpHealthCheck parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.HttpHealthCheck 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 yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.HttpHealthCheck parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.HttpHealthCheck 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(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.HttpHealthCheck 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;
      }
      /**
       * 
       * A resource for HTTP health check settings.
       * 
       *
       * Protobuf type {@code yandex.cloud.apploadbalancer.v1.HealthCheck.HttpHealthCheck}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder implements
          // @@protoc_insertion_point(builder_implements:yandex.cloud.apploadbalancer.v1.HealthCheck.HttpHealthCheck)
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.HttpHealthCheckOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_HealthCheck_HttpHealthCheck_descriptor;
        }
        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_HealthCheck_HttpHealthCheck_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.HttpHealthCheck.class, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.HttpHealthCheck.Builder.class);
        }
        // Construct using yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.HttpHealthCheck.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
          }
        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          host_ = "";
          path_ = "";
          useHttp2_ = false;
          return this;
        }
        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_HealthCheck_HttpHealthCheck_descriptor;
        }
        @java.lang.Override
        public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.HttpHealthCheck getDefaultInstanceForType() {
          return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.HttpHealthCheck.getDefaultInstance();
        }
        @java.lang.Override
        public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.HttpHealthCheck build() {
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.HttpHealthCheck result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
        @java.lang.Override
        public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.HttpHealthCheck buildPartial() {
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.HttpHealthCheck result = new yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.HttpHealthCheck(this);
          result.host_ = host_;
          result.path_ = path_;
          result.useHttp2_ = useHttp2_;
          onBuilt();
          return result;
        }
        @java.lang.Override
        public Builder clone() {
          return super.clone();
        }
        @java.lang.Override
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.setField(field, value);
        }
        @java.lang.Override
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return super.clearField(field);
        }
        @java.lang.Override
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return super.clearOneof(oneof);
        }
        @java.lang.Override
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, java.lang.Object value) {
          return super.setRepeatedField(field, index, value);
        }
        @java.lang.Override
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.addRepeatedField(field, value);
        }
        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.HttpHealthCheck) {
            return mergeFrom((yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.HttpHealthCheck)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
        public Builder mergeFrom(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.HttpHealthCheck other) {
          if (other == yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.HttpHealthCheck.getDefaultInstance()) return this;
          if (!other.getHost().isEmpty()) {
            host_ = other.host_;
            onChanged();
          }
          if (!other.getPath().isEmpty()) {
            path_ = other.path_;
            onChanged();
          }
          if (other.getUseHttp2() != false) {
            setUseHttp2(other.getUseHttp2());
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }
        @java.lang.Override
        public final boolean isInitialized() {
          return true;
        }
        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.HttpHealthCheck parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.HttpHealthCheck) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private java.lang.Object host_ = "";
        /**
         * 
         * Value for the HTTP/1.1 `Host` header or the HTTP/2 `:authority` pseudo-header used in requests to targets.
         * 
         *
         * string host = 1;
         * @return The host.
         */
        public java.lang.String getHost() {
          java.lang.Object ref = host_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            host_ = s;
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * 
         * Value for the HTTP/1.1 `Host` header or the HTTP/2 `:authority` pseudo-header used in requests to targets.
         * 
         *
         * string host = 1;
         * @return The bytes for host.
         */
        public com.google.protobuf.ByteString
            getHostBytes() {
          java.lang.Object ref = host_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            host_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * 
         * Value for the HTTP/1.1 `Host` header or the HTTP/2 `:authority` pseudo-header used in requests to targets.
         * 
         *
         * string host = 1;
         * @param value The host to set.
         * @return This builder for chaining.
         */
        public Builder setHost(
            java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  
          host_ = value;
          onChanged();
          return this;
        }
        /**
         * 
         * Value for the HTTP/1.1 `Host` header or the HTTP/2 `:authority` pseudo-header used in requests to targets.
         * 
         *
         * string host = 1;
         * @return This builder for chaining.
         */
        public Builder clearHost() {
          
          host_ = getDefaultInstance().getHost();
          onChanged();
          return this;
        }
        /**
         * 
         * Value for the HTTP/1.1 `Host` header or the HTTP/2 `:authority` pseudo-header used in requests to targets.
         * 
         *
         * string host = 1;
         * @param value The bytes for host to set.
         * @return This builder for chaining.
         */
        public Builder setHostBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
          
          host_ = value;
          onChanged();
          return this;
        }
        private java.lang.Object path_ = "";
        /**
         * 
         * HTTP path used in requests to targets: request URI for HTTP/1.1 request line
         * or value for the HTTP/2 `:path` pseudo-header.
         * 
         *
         * string path = 2 [(.yandex.cloud.required) = true];
         * @return The path.
         */
        public java.lang.String getPath() {
          java.lang.Object ref = path_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            path_ = s;
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * 
         * HTTP path used in requests to targets: request URI for HTTP/1.1 request line
         * or value for the HTTP/2 `:path` pseudo-header.
         * 
         *
         * string path = 2 [(.yandex.cloud.required) = true];
         * @return The bytes for path.
         */
        public com.google.protobuf.ByteString
            getPathBytes() {
          java.lang.Object ref = path_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            path_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * 
         * HTTP path used in requests to targets: request URI for HTTP/1.1 request line
         * or value for the HTTP/2 `:path` pseudo-header.
         * 
         *
         * string path = 2 [(.yandex.cloud.required) = true];
         * @param value The path to set.
         * @return This builder for chaining.
         */
        public Builder setPath(
            java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  
          path_ = value;
          onChanged();
          return this;
        }
        /**
         * 
         * HTTP path used in requests to targets: request URI for HTTP/1.1 request line
         * or value for the HTTP/2 `:path` pseudo-header.
         * 
         *
         * string path = 2 [(.yandex.cloud.required) = true];
         * @return This builder for chaining.
         */
        public Builder clearPath() {
          
          path_ = getDefaultInstance().getPath();
          onChanged();
          return this;
        }
        /**
         * 
         * HTTP path used in requests to targets: request URI for HTTP/1.1 request line
         * or value for the HTTP/2 `:path` pseudo-header.
         * 
         *
         * string path = 2 [(.yandex.cloud.required) = true];
         * @param value The bytes for path to set.
         * @return This builder for chaining.
         */
        public Builder setPathBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
          
          path_ = value;
          onChanged();
          return this;
        }
        private boolean useHttp2_ ;
        /**
         * 
         * Enables HTTP/2 usage in health checks.
         * Default value: `false`, HTTP/1.1 is used.
         * 
         *
         * bool use_http2 = 3;
         * @return The useHttp2.
         */
        @java.lang.Override
        public boolean getUseHttp2() {
          return useHttp2_;
        }
        /**
         * 
         * Enables HTTP/2 usage in health checks.
         * Default value: `false`, HTTP/1.1 is used.
         * 
         *
         * bool use_http2 = 3;
         * @param value The useHttp2 to set.
         * @return This builder for chaining.
         */
        public Builder setUseHttp2(boolean value) {
          
          useHttp2_ = value;
          onChanged();
          return this;
        }
        /**
         * 
         * Enables HTTP/2 usage in health checks.
         * Default value: `false`, HTTP/1.1 is used.
         * 
         *
         * bool use_http2 = 3;
         * @return This builder for chaining.
         */
        public Builder clearUseHttp2() {
          
          useHttp2_ = false;
          onChanged();
          return this;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }
        @java.lang.Override
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
        // @@protoc_insertion_point(builder_scope:yandex.cloud.apploadbalancer.v1.HealthCheck.HttpHealthCheck)
      }
      // @@protoc_insertion_point(class_scope:yandex.cloud.apploadbalancer.v1.HealthCheck.HttpHealthCheck)
      private static final yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.HttpHealthCheck DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.HttpHealthCheck();
      }
      public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.HttpHealthCheck getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
      private static final com.google.protobuf.Parser
          PARSER = new com.google.protobuf.AbstractParser() {
        @java.lang.Override
        public HttpHealthCheck parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return new HttpHealthCheck(input, extensionRegistry);
        }
      };
      public static com.google.protobuf.Parser parser() {
        return PARSER;
      }
      @java.lang.Override
      public com.google.protobuf.Parser getParserForType() {
        return PARSER;
      }
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.HttpHealthCheck getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
    }
    public interface GrpcHealthCheckOrBuilder extends
        // @@protoc_insertion_point(interface_extends:yandex.cloud.apploadbalancer.v1.HealthCheck.GrpcHealthCheck)
        com.google.protobuf.MessageOrBuilder {
      /**
       * 
       * Name of the gRPC service to be checked.
       * If not specified, overall health is checked.
       * For details about the concept, see [GRPC Health Checking Protocol](https://github.com/grpc/grpc/blob/master/doc/health-checking.md).
       * 
       *
       * string service_name = 1;
       * @return The serviceName.
       */
      java.lang.String getServiceName();
      /**
       * 
       * Name of the gRPC service to be checked.
       * If not specified, overall health is checked.
       * For details about the concept, see [GRPC Health Checking Protocol](https://github.com/grpc/grpc/blob/master/doc/health-checking.md).
       * 
       *
       * string service_name = 1;
       * @return The bytes for serviceName.
       */
      com.google.protobuf.ByteString
          getServiceNameBytes();
    }
    /**
     * 
     * A resource for gRPC health check settings.
     * 
     *
     * Protobuf type {@code yandex.cloud.apploadbalancer.v1.HealthCheck.GrpcHealthCheck}
     */
    public static final class GrpcHealthCheck extends
        com.google.protobuf.GeneratedMessageV3 implements
        // @@protoc_insertion_point(message_implements:yandex.cloud.apploadbalancer.v1.HealthCheck.GrpcHealthCheck)
        GrpcHealthCheckOrBuilder {
    private static final long serialVersionUID = 0L;
      // Use GrpcHealthCheck.newBuilder() to construct.
      private GrpcHealthCheck(com.google.protobuf.GeneratedMessageV3.Builder> builder) {
        super(builder);
      }
      private GrpcHealthCheck() {
        serviceName_ = "";
      }
      @java.lang.Override
      @SuppressWarnings({"unused"})
      protected java.lang.Object newInstance(
          UnusedPrivateParameter unused) {
        return new GrpcHealthCheck();
      }
      @java.lang.Override
      public final com.google.protobuf.UnknownFieldSet
      getUnknownFields() {
        return this.unknownFields;
      }
      private GrpcHealthCheck(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        this();
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder();
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                java.lang.String s = input.readStringRequireUtf8();
                serviceName_ = s;
                break;
              }
              default: {
                if (!parseUnknownField(
                    input, unknownFields, extensionRegistry, tag)) {
                  done = true;
                }
                break;
              }
            }
          }
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(this);
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(
              e).setUnfinishedMessage(this);
        } finally {
          this.unknownFields = unknownFields.build();
          makeExtensionsImmutable();
        }
      }
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_HealthCheck_GrpcHealthCheck_descriptor;
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_HealthCheck_GrpcHealthCheck_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.GrpcHealthCheck.class, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.GrpcHealthCheck.Builder.class);
      }
      public static final int SERVICE_NAME_FIELD_NUMBER = 1;
      private volatile java.lang.Object serviceName_;
      /**
       * 
       * Name of the gRPC service to be checked.
       * If not specified, overall health is checked.
       * For details about the concept, see [GRPC Health Checking Protocol](https://github.com/grpc/grpc/blob/master/doc/health-checking.md).
       * 
       *
       * string service_name = 1;
       * @return The serviceName.
       */
      @java.lang.Override
      public java.lang.String getServiceName() {
        java.lang.Object ref = serviceName_;
        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();
          serviceName_ = s;
          return s;
        }
      }
      /**
       * 
       * Name of the gRPC service to be checked.
       * If not specified, overall health is checked.
       * For details about the concept, see [GRPC Health Checking Protocol](https://github.com/grpc/grpc/blob/master/doc/health-checking.md).
       * 
       *
       * string service_name = 1;
       * @return The bytes for serviceName.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getServiceNameBytes() {
        java.lang.Object ref = serviceName_;
        if (ref instanceof java.lang.String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          serviceName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      private byte memoizedIsInitialized = -1;
      @java.lang.Override
      public final boolean isInitialized() {
        byte isInitialized = memoizedIsInitialized;
        if (isInitialized == 1) return true;
        if (isInitialized == 0) return false;
        memoizedIsInitialized = 1;
        return true;
      }
      @java.lang.Override
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(serviceName_)) {
          com.google.protobuf.GeneratedMessageV3.writeString(output, 1, serviceName_);
        }
        unknownFields.writeTo(output);
      }
      @java.lang.Override
      public int getSerializedSize() {
        int size = memoizedSize;
        if (size != -1) return size;
        size = 0;
        if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(serviceName_)) {
          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, serviceName_);
        }
        size += unknownFields.getSerializedSize();
        memoizedSize = size;
        return size;
      }
      @java.lang.Override
      public boolean equals(final java.lang.Object obj) {
        if (obj == this) {
         return true;
        }
        if (!(obj instanceof yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.GrpcHealthCheck)) {
          return super.equals(obj);
        }
        yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.GrpcHealthCheck other = (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.GrpcHealthCheck) obj;
        if (!getServiceName()
            .equals(other.getServiceName())) return false;
        if (!unknownFields.equals(other.unknownFields)) return false;
        return true;
      }
      @java.lang.Override
      public int hashCode() {
        if (memoizedHashCode != 0) {
          return memoizedHashCode;
        }
        int hash = 41;
        hash = (19 * hash) + getDescriptor().hashCode();
        hash = (37 * hash) + SERVICE_NAME_FIELD_NUMBER;
        hash = (53 * hash) + getServiceName().hashCode();
        hash = (29 * hash) + unknownFields.hashCode();
        memoizedHashCode = hash;
        return hash;
      }
      public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.GrpcHealthCheck parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.GrpcHealthCheck parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.GrpcHealthCheck parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.GrpcHealthCheck parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.GrpcHealthCheck parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data);
      }
      public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.GrpcHealthCheck parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return PARSER.parseFrom(data, extensionRegistry);
      }
      public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.GrpcHealthCheck parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.GrpcHealthCheck 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 yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.GrpcHealthCheck parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseDelimitedWithIOException(PARSER, input);
      }
      public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.GrpcHealthCheck 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 yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.GrpcHealthCheck parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageV3
            .parseWithIOException(PARSER, input);
      }
      public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.GrpcHealthCheck 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(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.GrpcHealthCheck 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;
      }
      /**
       * 
       * A resource for gRPC health check settings.
       * 
       *
       * Protobuf type {@code yandex.cloud.apploadbalancer.v1.HealthCheck.GrpcHealthCheck}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageV3.Builder implements
          // @@protoc_insertion_point(builder_implements:yandex.cloud.apploadbalancer.v1.HealthCheck.GrpcHealthCheck)
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.GrpcHealthCheckOrBuilder {
        public static final com.google.protobuf.Descriptors.Descriptor
            getDescriptor() {
          return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_HealthCheck_GrpcHealthCheck_descriptor;
        }
        @java.lang.Override
        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
            internalGetFieldAccessorTable() {
          return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_HealthCheck_GrpcHealthCheck_fieldAccessorTable
              .ensureFieldAccessorsInitialized(
                  yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.GrpcHealthCheck.class, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.GrpcHealthCheck.Builder.class);
        }
        // Construct using yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.GrpcHealthCheck.newBuilder()
        private Builder() {
          maybeForceBuilderInitialization();
        }
        private Builder(
            com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
          super(parent);
          maybeForceBuilderInitialization();
        }
        private void maybeForceBuilderInitialization() {
          if (com.google.protobuf.GeneratedMessageV3
                  .alwaysUseFieldBuilders) {
          }
        }
        @java.lang.Override
        public Builder clear() {
          super.clear();
          serviceName_ = "";
          return this;
        }
        @java.lang.Override
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_HealthCheck_GrpcHealthCheck_descriptor;
        }
        @java.lang.Override
        public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.GrpcHealthCheck getDefaultInstanceForType() {
          return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.GrpcHealthCheck.getDefaultInstance();
        }
        @java.lang.Override
        public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.GrpcHealthCheck build() {
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.GrpcHealthCheck result = buildPartial();
          if (!result.isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return result;
        }
        @java.lang.Override
        public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.GrpcHealthCheck buildPartial() {
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.GrpcHealthCheck result = new yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.GrpcHealthCheck(this);
          result.serviceName_ = serviceName_;
          onBuilt();
          return result;
        }
        @java.lang.Override
        public Builder clone() {
          return super.clone();
        }
        @java.lang.Override
        public Builder setField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.setField(field, value);
        }
        @java.lang.Override
        public Builder clearField(
            com.google.protobuf.Descriptors.FieldDescriptor field) {
          return super.clearField(field);
        }
        @java.lang.Override
        public Builder clearOneof(
            com.google.protobuf.Descriptors.OneofDescriptor oneof) {
          return super.clearOneof(oneof);
        }
        @java.lang.Override
        public Builder setRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            int index, java.lang.Object value) {
          return super.setRepeatedField(field, index, value);
        }
        @java.lang.Override
        public Builder addRepeatedField(
            com.google.protobuf.Descriptors.FieldDescriptor field,
            java.lang.Object value) {
          return super.addRepeatedField(field, value);
        }
        @java.lang.Override
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.GrpcHealthCheck) {
            return mergeFrom((yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.GrpcHealthCheck)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
        public Builder mergeFrom(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.GrpcHealthCheck other) {
          if (other == yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.GrpcHealthCheck.getDefaultInstance()) return this;
          if (!other.getServiceName().isEmpty()) {
            serviceName_ = other.serviceName_;
            onChanged();
          }
          this.mergeUnknownFields(other.unknownFields);
          onChanged();
          return this;
        }
        @java.lang.Override
        public final boolean isInitialized() {
          return true;
        }
        @java.lang.Override
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.GrpcHealthCheck parsedMessage = null;
          try {
            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
            parsedMessage = (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.GrpcHealthCheck) e.getUnfinishedMessage();
            throw e.unwrapIOException();
          } finally {
            if (parsedMessage != null) {
              mergeFrom(parsedMessage);
            }
          }
          return this;
        }
        private java.lang.Object serviceName_ = "";
        /**
         * 
         * Name of the gRPC service to be checked.
         * If not specified, overall health is checked.
         * For details about the concept, see [GRPC Health Checking Protocol](https://github.com/grpc/grpc/blob/master/doc/health-checking.md).
         * 
         *
         * string service_name = 1;
         * @return The serviceName.
         */
        public java.lang.String getServiceName() {
          java.lang.Object ref = serviceName_;
          if (!(ref instanceof java.lang.String)) {
            com.google.protobuf.ByteString bs =
                (com.google.protobuf.ByteString) ref;
            java.lang.String s = bs.toStringUtf8();
            serviceName_ = s;
            return s;
          } else {
            return (java.lang.String) ref;
          }
        }
        /**
         * 
         * Name of the gRPC service to be checked.
         * If not specified, overall health is checked.
         * For details about the concept, see [GRPC Health Checking Protocol](https://github.com/grpc/grpc/blob/master/doc/health-checking.md).
         * 
         *
         * string service_name = 1;
         * @return The bytes for serviceName.
         */
        public com.google.protobuf.ByteString
            getServiceNameBytes() {
          java.lang.Object ref = serviceName_;
          if (ref instanceof String) {
            com.google.protobuf.ByteString b = 
                com.google.protobuf.ByteString.copyFromUtf8(
                    (java.lang.String) ref);
            serviceName_ = b;
            return b;
          } else {
            return (com.google.protobuf.ByteString) ref;
          }
        }
        /**
         * 
         * Name of the gRPC service to be checked.
         * If not specified, overall health is checked.
         * For details about the concept, see [GRPC Health Checking Protocol](https://github.com/grpc/grpc/blob/master/doc/health-checking.md).
         * 
         *
         * string service_name = 1;
         * @param value The serviceName to set.
         * @return This builder for chaining.
         */
        public Builder setServiceName(
            java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  
          serviceName_ = value;
          onChanged();
          return this;
        }
        /**
         * 
         * Name of the gRPC service to be checked.
         * If not specified, overall health is checked.
         * For details about the concept, see [GRPC Health Checking Protocol](https://github.com/grpc/grpc/blob/master/doc/health-checking.md).
         * 
         *
         * string service_name = 1;
         * @return This builder for chaining.
         */
        public Builder clearServiceName() {
          
          serviceName_ = getDefaultInstance().getServiceName();
          onChanged();
          return this;
        }
        /**
         * 
         * Name of the gRPC service to be checked.
         * If not specified, overall health is checked.
         * For details about the concept, see [GRPC Health Checking Protocol](https://github.com/grpc/grpc/blob/master/doc/health-checking.md).
         * 
         *
         * string service_name = 1;
         * @param value The bytes for serviceName to set.
         * @return This builder for chaining.
         */
        public Builder setServiceNameBytes(
            com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
          
          serviceName_ = value;
          onChanged();
          return this;
        }
        @java.lang.Override
        public final Builder setUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.setUnknownFields(unknownFields);
        }
        @java.lang.Override
        public final Builder mergeUnknownFields(
            final com.google.protobuf.UnknownFieldSet unknownFields) {
          return super.mergeUnknownFields(unknownFields);
        }
        // @@protoc_insertion_point(builder_scope:yandex.cloud.apploadbalancer.v1.HealthCheck.GrpcHealthCheck)
      }
      // @@protoc_insertion_point(class_scope:yandex.cloud.apploadbalancer.v1.HealthCheck.GrpcHealthCheck)
      private static final yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.GrpcHealthCheck DEFAULT_INSTANCE;
      static {
        DEFAULT_INSTANCE = new yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.GrpcHealthCheck();
      }
      public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.GrpcHealthCheck getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }
      private static final com.google.protobuf.Parser
          PARSER = new com.google.protobuf.AbstractParser() {
        @java.lang.Override
        public GrpcHealthCheck parsePartialFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return new GrpcHealthCheck(input, extensionRegistry);
        }
      };
      public static com.google.protobuf.Parser parser() {
        return PARSER;
      }
      @java.lang.Override
      public com.google.protobuf.Parser getParserForType() {
        return PARSER;
      }
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.GrpcHealthCheck getDefaultInstanceForType() {
        return DEFAULT_INSTANCE;
      }
    }
    private int healthcheckCase_ = 0;
    private java.lang.Object healthcheck_;
    public enum HealthcheckCase
        implements com.google.protobuf.Internal.EnumLite,
            com.google.protobuf.AbstractMessage.InternalOneOfEnum {
      STREAM(7),
      HTTP(8),
      GRPC(9),
      HEALTHCHECK_NOT_SET(0);
      private final int value;
      private HealthcheckCase(int value) {
        this.value = value;
      }
      /**
       * @param value The number of the enum to look for.
       * @return The enum associated with the given number.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static HealthcheckCase valueOf(int value) {
        return forNumber(value);
      }
      public static HealthcheckCase forNumber(int value) {
        switch (value) {
          case 7: return STREAM;
          case 8: return HTTP;
          case 9: return GRPC;
          case 0: return HEALTHCHECK_NOT_SET;
          default: return null;
        }
      }
      public int getNumber() {
        return this.value;
      }
    };
    public HealthcheckCase
    getHealthcheckCase() {
      return HealthcheckCase.forNumber(
          healthcheckCase_);
    }
    private int transportSettingsCase_ = 0;
    private java.lang.Object transportSettings_;
    public enum TransportSettingsCase
        implements com.google.protobuf.Internal.EnumLite,
            com.google.protobuf.AbstractMessage.InternalOneOfEnum {
      PLAINTEXT(10),
      TLS(11),
      TRANSPORTSETTINGS_NOT_SET(0);
      private final int value;
      private TransportSettingsCase(int value) {
        this.value = value;
      }
      /**
       * @param value The number of the enum to look for.
       * @return The enum associated with the given number.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static TransportSettingsCase valueOf(int value) {
        return forNumber(value);
      }
      public static TransportSettingsCase forNumber(int value) {
        switch (value) {
          case 10: return PLAINTEXT;
          case 11: return TLS;
          case 0: return TRANSPORTSETTINGS_NOT_SET;
          default: return null;
        }
      }
      public int getNumber() {
        return this.value;
      }
    };
    public TransportSettingsCase
    getTransportSettingsCase() {
      return TransportSettingsCase.forNumber(
          transportSettingsCase_);
    }
    public static final int TIMEOUT_FIELD_NUMBER = 1;
    private com.google.protobuf.Duration timeout_;
    /**
     * 
     * Health check timeout.
     * The timeout is the time allowed for the target to respond to a check.
     * If the target doesn't respond in time, the check is considered failed.
     * 
     *
     * .google.protobuf.Duration timeout = 1 [(.yandex.cloud.required) = true];
     * @return Whether the timeout field is set.
     */
    @java.lang.Override
    public boolean hasTimeout() {
      return timeout_ != null;
    }
    /**
     * 
     * Health check timeout.
     * The timeout is the time allowed for the target to respond to a check.
     * If the target doesn't respond in time, the check is considered failed.
     * 
     *
     * .google.protobuf.Duration timeout = 1 [(.yandex.cloud.required) = true];
     * @return The timeout.
     */
    @java.lang.Override
    public com.google.protobuf.Duration getTimeout() {
      return timeout_ == null ? com.google.protobuf.Duration.getDefaultInstance() : timeout_;
    }
    /**
     * 
     * Health check timeout.
     * The timeout is the time allowed for the target to respond to a check.
     * If the target doesn't respond in time, the check is considered failed.
     * 
     *
     * .google.protobuf.Duration timeout = 1 [(.yandex.cloud.required) = true];
     */
    @java.lang.Override
    public com.google.protobuf.DurationOrBuilder getTimeoutOrBuilder() {
      return getTimeout();
    }
    public static final int INTERVAL_FIELD_NUMBER = 2;
    private com.google.protobuf.Duration interval_;
    /**
     * 
     * Base interval between consecutive health checks.
     * 
     *
     * .google.protobuf.Duration interval = 2 [(.yandex.cloud.required) = true];
     * @return Whether the interval field is set.
     */
    @java.lang.Override
    public boolean hasInterval() {
      return interval_ != null;
    }
    /**
     * 
     * Base interval between consecutive health checks.
     * 
     *
     * .google.protobuf.Duration interval = 2 [(.yandex.cloud.required) = true];
     * @return The interval.
     */
    @java.lang.Override
    public com.google.protobuf.Duration getInterval() {
      return interval_ == null ? com.google.protobuf.Duration.getDefaultInstance() : interval_;
    }
    /**
     * 
     * Base interval between consecutive health checks.
     * 
     *
     * .google.protobuf.Duration interval = 2 [(.yandex.cloud.required) = true];
     */
    @java.lang.Override
    public com.google.protobuf.DurationOrBuilder getIntervalOrBuilder() {
      return getInterval();
    }
    public static final int INTERVAL_JITTER_PERCENT_FIELD_NUMBER = 3;
    private double intervalJitterPercent_;
    /**
     * double interval_jitter_percent = 3;
     * @return The intervalJitterPercent.
     */
    @java.lang.Override
    public double getIntervalJitterPercent() {
      return intervalJitterPercent_;
    }
    public static final int HEALTHY_THRESHOLD_FIELD_NUMBER = 4;
    private long healthyThreshold_;
    /**
     * 
     * Number of consecutive successful health checks required to mark an unhealthy target as healthy.
     * Both `0` and `1` values amount to one successful check required.
     * The value is ignored when a load balancer is initialized; a target is marked healthy after one successful check.
     * Default value: `0`.
     * 
     *
     * int64 healthy_threshold = 4;
     * @return The healthyThreshold.
     */
    @java.lang.Override
    public long getHealthyThreshold() {
      return healthyThreshold_;
    }
    public static final int UNHEALTHY_THRESHOLD_FIELD_NUMBER = 5;
    private long unhealthyThreshold_;
    /**
     * 
     * Number of consecutive failed health checks required to mark a healthy target as unhealthy.
     * Both `0` and `1` values amount to one unsuccessful check required.
     * The value is ignored if a health check is failed due to an HTTP `503 Service Unavailable` response from the target
     * (not applicable to TCP stream health checks). The target is immediately marked unhealthy.
     * Default value: `0`.
     * 
     *
     * int64 unhealthy_threshold = 5;
     * @return The unhealthyThreshold.
     */
    @java.lang.Override
    public long getUnhealthyThreshold() {
      return unhealthyThreshold_;
    }
    public static final int HEALTHCHECK_PORT_FIELD_NUMBER = 6;
    private long healthcheckPort_;
    /**
     * 
     * Port used for health checks.
     * If not specified, the backend port ([HttpBackend.port] or [GrpcBackend.port]) is used for health checks.
     * 
     *
     * int64 healthcheck_port = 6 [(.yandex.cloud.value) = "0-65535"];
     * @return The healthcheckPort.
     */
    @java.lang.Override
    public long getHealthcheckPort() {
      return healthcheckPort_;
    }
    public static final int STREAM_FIELD_NUMBER = 7;
    /**
     * 
     * TCP stream health check settings.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.HealthCheck.StreamHealthCheck stream = 7;
     * @return Whether the stream field is set.
     */
    @java.lang.Override
    public boolean hasStream() {
      return healthcheckCase_ == 7;
    }
    /**
     * 
     * TCP stream health check settings.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.HealthCheck.StreamHealthCheck stream = 7;
     * @return The stream.
     */
    @java.lang.Override
    public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.StreamHealthCheck getStream() {
      if (healthcheckCase_ == 7) {
         return (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.StreamHealthCheck) healthcheck_;
      }
      return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.StreamHealthCheck.getDefaultInstance();
    }
    /**
     * 
     * TCP stream health check settings.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.HealthCheck.StreamHealthCheck stream = 7;
     */
    @java.lang.Override
    public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.StreamHealthCheckOrBuilder getStreamOrBuilder() {
      if (healthcheckCase_ == 7) {
         return (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.StreamHealthCheck) healthcheck_;
      }
      return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.StreamHealthCheck.getDefaultInstance();
    }
    public static final int HTTP_FIELD_NUMBER = 8;
    /**
     * 
     * HTTP health check settings.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.HealthCheck.HttpHealthCheck http = 8;
     * @return Whether the http field is set.
     */
    @java.lang.Override
    public boolean hasHttp() {
      return healthcheckCase_ == 8;
    }
    /**
     * 
     * HTTP health check settings.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.HealthCheck.HttpHealthCheck http = 8;
     * @return The http.
     */
    @java.lang.Override
    public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.HttpHealthCheck getHttp() {
      if (healthcheckCase_ == 8) {
         return (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.HttpHealthCheck) healthcheck_;
      }
      return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.HttpHealthCheck.getDefaultInstance();
    }
    /**
     * 
     * HTTP health check settings.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.HealthCheck.HttpHealthCheck http = 8;
     */
    @java.lang.Override
    public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.HttpHealthCheckOrBuilder getHttpOrBuilder() {
      if (healthcheckCase_ == 8) {
         return (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.HttpHealthCheck) healthcheck_;
      }
      return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.HttpHealthCheck.getDefaultInstance();
    }
    public static final int GRPC_FIELD_NUMBER = 9;
    /**
     * 
     * gRPC health check settings.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.HealthCheck.GrpcHealthCheck grpc = 9;
     * @return Whether the grpc field is set.
     */
    @java.lang.Override
    public boolean hasGrpc() {
      return healthcheckCase_ == 9;
    }
    /**
     * 
     * gRPC health check settings.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.HealthCheck.GrpcHealthCheck grpc = 9;
     * @return The grpc.
     */
    @java.lang.Override
    public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.GrpcHealthCheck getGrpc() {
      if (healthcheckCase_ == 9) {
         return (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.GrpcHealthCheck) healthcheck_;
      }
      return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.GrpcHealthCheck.getDefaultInstance();
    }
    /**
     * 
     * gRPC health check settings.
     * 
     *
     * .yandex.cloud.apploadbalancer.v1.HealthCheck.GrpcHealthCheck grpc = 9;
     */
    @java.lang.Override
    public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.GrpcHealthCheckOrBuilder getGrpcOrBuilder() {
      if (healthcheckCase_ == 9) {
         return (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.GrpcHealthCheck) healthcheck_;
      }
      return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.GrpcHealthCheck.getDefaultInstance();
    }
    public static final int PLAINTEXT_FIELD_NUMBER = 10;
    /**
     * .yandex.cloud.apploadbalancer.v1.PlaintextTransportSettings plaintext = 10;
     * @return Whether the plaintext field is set.
     */
    @java.lang.Override
    public boolean hasPlaintext() {
      return transportSettingsCase_ == 10;
    }
    /**
     * .yandex.cloud.apploadbalancer.v1.PlaintextTransportSettings plaintext = 10;
     * @return The plaintext.
     */
    @java.lang.Override
    public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.PlaintextTransportSettings getPlaintext() {
      if (transportSettingsCase_ == 10) {
         return (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.PlaintextTransportSettings) transportSettings_;
      }
      return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.PlaintextTransportSettings.getDefaultInstance();
    }
    /**
     * .yandex.cloud.apploadbalancer.v1.PlaintextTransportSettings plaintext = 10;
     */
    @java.lang.Override
    public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.PlaintextTransportSettingsOrBuilder getPlaintextOrBuilder() {
      if (transportSettingsCase_ == 10) {
         return (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.PlaintextTransportSettings) transportSettings_;
      }
      return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.PlaintextTransportSettings.getDefaultInstance();
    }
    public static final int TLS_FIELD_NUMBER = 11;
    /**
     * .yandex.cloud.apploadbalancer.v1.SecureTransportSettings tls = 11;
     * @return Whether the tls field is set.
     */
    @java.lang.Override
    public boolean hasTls() {
      return transportSettingsCase_ == 11;
    }
    /**
     * .yandex.cloud.apploadbalancer.v1.SecureTransportSettings tls = 11;
     * @return The tls.
     */
    @java.lang.Override
    public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.SecureTransportSettings getTls() {
      if (transportSettingsCase_ == 11) {
         return (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.SecureTransportSettings) transportSettings_;
      }
      return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.SecureTransportSettings.getDefaultInstance();
    }
    /**
     * .yandex.cloud.apploadbalancer.v1.SecureTransportSettings tls = 11;
     */
    @java.lang.Override
    public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.SecureTransportSettingsOrBuilder getTlsOrBuilder() {
      if (transportSettingsCase_ == 11) {
         return (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.SecureTransportSettings) transportSettings_;
      }
      return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.SecureTransportSettings.getDefaultInstance();
    }
    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 (timeout_ != null) {
        output.writeMessage(1, getTimeout());
      }
      if (interval_ != null) {
        output.writeMessage(2, getInterval());
      }
      if (java.lang.Double.doubleToRawLongBits(intervalJitterPercent_) != 0) {
        output.writeDouble(3, intervalJitterPercent_);
      }
      if (healthyThreshold_ != 0L) {
        output.writeInt64(4, healthyThreshold_);
      }
      if (unhealthyThreshold_ != 0L) {
        output.writeInt64(5, unhealthyThreshold_);
      }
      if (healthcheckPort_ != 0L) {
        output.writeInt64(6, healthcheckPort_);
      }
      if (healthcheckCase_ == 7) {
        output.writeMessage(7, (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.StreamHealthCheck) healthcheck_);
      }
      if (healthcheckCase_ == 8) {
        output.writeMessage(8, (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.HttpHealthCheck) healthcheck_);
      }
      if (healthcheckCase_ == 9) {
        output.writeMessage(9, (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.GrpcHealthCheck) healthcheck_);
      }
      if (transportSettingsCase_ == 10) {
        output.writeMessage(10, (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.PlaintextTransportSettings) transportSettings_);
      }
      if (transportSettingsCase_ == 11) {
        output.writeMessage(11, (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.SecureTransportSettings) transportSettings_);
      }
      unknownFields.writeTo(output);
    }
    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;
      size = 0;
      if (timeout_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getTimeout());
      }
      if (interval_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getInterval());
      }
      if (java.lang.Double.doubleToRawLongBits(intervalJitterPercent_) != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeDoubleSize(3, intervalJitterPercent_);
      }
      if (healthyThreshold_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(4, healthyThreshold_);
      }
      if (unhealthyThreshold_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(5, unhealthyThreshold_);
      }
      if (healthcheckPort_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(6, healthcheckPort_);
      }
      if (healthcheckCase_ == 7) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(7, (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.StreamHealthCheck) healthcheck_);
      }
      if (healthcheckCase_ == 8) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(8, (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.HttpHealthCheck) healthcheck_);
      }
      if (healthcheckCase_ == 9) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(9, (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.GrpcHealthCheck) healthcheck_);
      }
      if (transportSettingsCase_ == 10) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(10, (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.PlaintextTransportSettings) transportSettings_);
      }
      if (transportSettingsCase_ == 11) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(11, (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.SecureTransportSettings) transportSettings_);
      }
      size += unknownFields.getSerializedSize();
      memoizedSize = size;
      return size;
    }
    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck)) {
        return super.equals(obj);
      }
      yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck other = (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck) obj;
      if (hasTimeout() != other.hasTimeout()) return false;
      if (hasTimeout()) {
        if (!getTimeout()
            .equals(other.getTimeout())) return false;
      }
      if (hasInterval() != other.hasInterval()) return false;
      if (hasInterval()) {
        if (!getInterval()
            .equals(other.getInterval())) return false;
      }
      if (java.lang.Double.doubleToLongBits(getIntervalJitterPercent())
          != java.lang.Double.doubleToLongBits(
              other.getIntervalJitterPercent())) return false;
      if (getHealthyThreshold()
          != other.getHealthyThreshold()) return false;
      if (getUnhealthyThreshold()
          != other.getUnhealthyThreshold()) return false;
      if (getHealthcheckPort()
          != other.getHealthcheckPort()) return false;
      if (!getHealthcheckCase().equals(other.getHealthcheckCase())) return false;
      switch (healthcheckCase_) {
        case 7:
          if (!getStream()
              .equals(other.getStream())) return false;
          break;
        case 8:
          if (!getHttp()
              .equals(other.getHttp())) return false;
          break;
        case 9:
          if (!getGrpc()
              .equals(other.getGrpc())) return false;
          break;
        case 0:
        default:
      }
      if (!getTransportSettingsCase().equals(other.getTransportSettingsCase())) return false;
      switch (transportSettingsCase_) {
        case 10:
          if (!getPlaintext()
              .equals(other.getPlaintext())) return false;
          break;
        case 11:
          if (!getTls()
              .equals(other.getTls())) return false;
          break;
        case 0:
        default:
      }
      if (!unknownFields.equals(other.unknownFields)) return false;
      return true;
    }
    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasTimeout()) {
        hash = (37 * hash) + TIMEOUT_FIELD_NUMBER;
        hash = (53 * hash) + getTimeout().hashCode();
      }
      if (hasInterval()) {
        hash = (37 * hash) + INTERVAL_FIELD_NUMBER;
        hash = (53 * hash) + getInterval().hashCode();
      }
      hash = (37 * hash) + INTERVAL_JITTER_PERCENT_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          java.lang.Double.doubleToLongBits(getIntervalJitterPercent()));
      hash = (37 * hash) + HEALTHY_THRESHOLD_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getHealthyThreshold());
      hash = (37 * hash) + UNHEALTHY_THRESHOLD_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getUnhealthyThreshold());
      hash = (37 * hash) + HEALTHCHECK_PORT_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getHealthcheckPort());
      switch (healthcheckCase_) {
        case 7:
          hash = (37 * hash) + STREAM_FIELD_NUMBER;
          hash = (53 * hash) + getStream().hashCode();
          break;
        case 8:
          hash = (37 * hash) + HTTP_FIELD_NUMBER;
          hash = (53 * hash) + getHttp().hashCode();
          break;
        case 9:
          hash = (37 * hash) + GRPC_FIELD_NUMBER;
          hash = (53 * hash) + getGrpc().hashCode();
          break;
        case 0:
        default:
      }
      switch (transportSettingsCase_) {
        case 10:
          hash = (37 * hash) + PLAINTEXT_FIELD_NUMBER;
          hash = (53 * hash) + getPlaintext().hashCode();
          break;
        case 11:
          hash = (37 * hash) + TLS_FIELD_NUMBER;
          hash = (53 * hash) + getTls().hashCode();
          break;
        case 0:
        default:
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck 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 yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck 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 yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck 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(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck 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;
    }
    /**
     * 
     * A health check resource.
     * For details about the concept, see [documentation](/docs/application-load-balancer/concepts/backend-group#health-checks).
     * 
     *
     * Protobuf type {@code yandex.cloud.apploadbalancer.v1.HealthCheck}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:yandex.cloud.apploadbalancer.v1.HealthCheck)
        yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheckOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_HealthCheck_descriptor;
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_HealthCheck_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.class, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.Builder.class);
      }
      // Construct using yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }
      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (timeoutBuilder_ == null) {
          timeout_ = null;
        } else {
          timeout_ = null;
          timeoutBuilder_ = null;
        }
        if (intervalBuilder_ == null) {
          interval_ = null;
        } else {
          interval_ = null;
          intervalBuilder_ = null;
        }
        intervalJitterPercent_ = 0D;
        healthyThreshold_ = 0L;
        unhealthyThreshold_ = 0L;
        healthcheckPort_ = 0L;
        healthcheckCase_ = 0;
        healthcheck_ = null;
        transportSettingsCase_ = 0;
        transportSettings_ = null;
        return this;
      }
      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.internal_static_yandex_cloud_apploadbalancer_v1_HealthCheck_descriptor;
      }
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck getDefaultInstanceForType() {
        return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.getDefaultInstance();
      }
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck build() {
        yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck buildPartial() {
        yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck result = new yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck(this);
        if (timeoutBuilder_ == null) {
          result.timeout_ = timeout_;
        } else {
          result.timeout_ = timeoutBuilder_.build();
        }
        if (intervalBuilder_ == null) {
          result.interval_ = interval_;
        } else {
          result.interval_ = intervalBuilder_.build();
        }
        result.intervalJitterPercent_ = intervalJitterPercent_;
        result.healthyThreshold_ = healthyThreshold_;
        result.unhealthyThreshold_ = unhealthyThreshold_;
        result.healthcheckPort_ = healthcheckPort_;
        if (healthcheckCase_ == 7) {
          if (streamBuilder_ == null) {
            result.healthcheck_ = healthcheck_;
          } else {
            result.healthcheck_ = streamBuilder_.build();
          }
        }
        if (healthcheckCase_ == 8) {
          if (httpBuilder_ == null) {
            result.healthcheck_ = healthcheck_;
          } else {
            result.healthcheck_ = httpBuilder_.build();
          }
        }
        if (healthcheckCase_ == 9) {
          if (grpcBuilder_ == null) {
            result.healthcheck_ = healthcheck_;
          } else {
            result.healthcheck_ = grpcBuilder_.build();
          }
        }
        if (transportSettingsCase_ == 10) {
          if (plaintextBuilder_ == null) {
            result.transportSettings_ = transportSettings_;
          } else {
            result.transportSettings_ = plaintextBuilder_.build();
          }
        }
        if (transportSettingsCase_ == 11) {
          if (tlsBuilder_ == null) {
            result.transportSettings_ = transportSettings_;
          } else {
            result.transportSettings_ = tlsBuilder_.build();
          }
        }
        result.healthcheckCase_ = healthcheckCase_;
        result.transportSettingsCase_ = transportSettingsCase_;
        onBuilt();
        return result;
      }
      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck) {
          return mergeFrom((yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      public Builder mergeFrom(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck other) {
        if (other == yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.getDefaultInstance()) return this;
        if (other.hasTimeout()) {
          mergeTimeout(other.getTimeout());
        }
        if (other.hasInterval()) {
          mergeInterval(other.getInterval());
        }
        if (other.getIntervalJitterPercent() != 0D) {
          setIntervalJitterPercent(other.getIntervalJitterPercent());
        }
        if (other.getHealthyThreshold() != 0L) {
          setHealthyThreshold(other.getHealthyThreshold());
        }
        if (other.getUnhealthyThreshold() != 0L) {
          setUnhealthyThreshold(other.getUnhealthyThreshold());
        }
        if (other.getHealthcheckPort() != 0L) {
          setHealthcheckPort(other.getHealthcheckPort());
        }
        switch (other.getHealthcheckCase()) {
          case STREAM: {
            mergeStream(other.getStream());
            break;
          }
          case HTTP: {
            mergeHttp(other.getHttp());
            break;
          }
          case GRPC: {
            mergeGrpc(other.getGrpc());
            break;
          }
          case HEALTHCHECK_NOT_SET: {
            break;
          }
        }
        switch (other.getTransportSettingsCase()) {
          case PLAINTEXT: {
            mergePlaintext(other.getPlaintext());
            break;
          }
          case TLS: {
            mergeTls(other.getTls());
            break;
          }
          case TRANSPORTSETTINGS_NOT_SET: {
            break;
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        onChanged();
        return this;
      }
      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }
      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int healthcheckCase_ = 0;
      private java.lang.Object healthcheck_;
      public HealthcheckCase
          getHealthcheckCase() {
        return HealthcheckCase.forNumber(
            healthcheckCase_);
      }
      public Builder clearHealthcheck() {
        healthcheckCase_ = 0;
        healthcheck_ = null;
        onChanged();
        return this;
      }
      private int transportSettingsCase_ = 0;
      private java.lang.Object transportSettings_;
      public TransportSettingsCase
          getTransportSettingsCase() {
        return TransportSettingsCase.forNumber(
            transportSettingsCase_);
      }
      public Builder clearTransportSettings() {
        transportSettingsCase_ = 0;
        transportSettings_ = null;
        onChanged();
        return this;
      }
      private com.google.protobuf.Duration timeout_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Duration, com.google.protobuf.Duration.Builder, com.google.protobuf.DurationOrBuilder> timeoutBuilder_;
      /**
       * 
       * Health check timeout.
       * The timeout is the time allowed for the target to respond to a check.
       * If the target doesn't respond in time, the check is considered failed.
       * 
       *
       * .google.protobuf.Duration timeout = 1 [(.yandex.cloud.required) = true];
       * @return Whether the timeout field is set.
       */
      public boolean hasTimeout() {
        return timeoutBuilder_ != null || timeout_ != null;
      }
      /**
       * 
       * Health check timeout.
       * The timeout is the time allowed for the target to respond to a check.
       * If the target doesn't respond in time, the check is considered failed.
       * 
       *
       * .google.protobuf.Duration timeout = 1 [(.yandex.cloud.required) = true];
       * @return The timeout.
       */
      public com.google.protobuf.Duration getTimeout() {
        if (timeoutBuilder_ == null) {
          return timeout_ == null ? com.google.protobuf.Duration.getDefaultInstance() : timeout_;
        } else {
          return timeoutBuilder_.getMessage();
        }
      }
      /**
       * 
       * Health check timeout.
       * The timeout is the time allowed for the target to respond to a check.
       * If the target doesn't respond in time, the check is considered failed.
       * 
       *
       * .google.protobuf.Duration timeout = 1 [(.yandex.cloud.required) = true];
       */
      public Builder setTimeout(com.google.protobuf.Duration value) {
        if (timeoutBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          timeout_ = value;
          onChanged();
        } else {
          timeoutBuilder_.setMessage(value);
        }
        return this;
      }
      /**
       * 
       * Health check timeout.
       * The timeout is the time allowed for the target to respond to a check.
       * If the target doesn't respond in time, the check is considered failed.
       * 
       *
       * .google.protobuf.Duration timeout = 1 [(.yandex.cloud.required) = true];
       */
      public Builder setTimeout(
          com.google.protobuf.Duration.Builder builderForValue) {
        if (timeoutBuilder_ == null) {
          timeout_ = builderForValue.build();
          onChanged();
        } else {
          timeoutBuilder_.setMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * 
       * Health check timeout.
       * The timeout is the time allowed for the target to respond to a check.
       * If the target doesn't respond in time, the check is considered failed.
       * 
       *
       * .google.protobuf.Duration timeout = 1 [(.yandex.cloud.required) = true];
       */
      public Builder mergeTimeout(com.google.protobuf.Duration value) {
        if (timeoutBuilder_ == null) {
          if (timeout_ != null) {
            timeout_ =
              com.google.protobuf.Duration.newBuilder(timeout_).mergeFrom(value).buildPartial();
          } else {
            timeout_ = value;
          }
          onChanged();
        } else {
          timeoutBuilder_.mergeFrom(value);
        }
        return this;
      }
      /**
       * 
       * Health check timeout.
       * The timeout is the time allowed for the target to respond to a check.
       * If the target doesn't respond in time, the check is considered failed.
       * 
       *
       * .google.protobuf.Duration timeout = 1 [(.yandex.cloud.required) = true];
       */
      public Builder clearTimeout() {
        if (timeoutBuilder_ == null) {
          timeout_ = null;
          onChanged();
        } else {
          timeout_ = null;
          timeoutBuilder_ = null;
        }
        return this;
      }
      /**
       * 
       * Health check timeout.
       * The timeout is the time allowed for the target to respond to a check.
       * If the target doesn't respond in time, the check is considered failed.
       * 
       *
       * .google.protobuf.Duration timeout = 1 [(.yandex.cloud.required) = true];
       */
      public com.google.protobuf.Duration.Builder getTimeoutBuilder() {
        
        onChanged();
        return getTimeoutFieldBuilder().getBuilder();
      }
      /**
       * 
       * Health check timeout.
       * The timeout is the time allowed for the target to respond to a check.
       * If the target doesn't respond in time, the check is considered failed.
       * 
       *
       * .google.protobuf.Duration timeout = 1 [(.yandex.cloud.required) = true];
       */
      public com.google.protobuf.DurationOrBuilder getTimeoutOrBuilder() {
        if (timeoutBuilder_ != null) {
          return timeoutBuilder_.getMessageOrBuilder();
        } else {
          return timeout_ == null ?
              com.google.protobuf.Duration.getDefaultInstance() : timeout_;
        }
      }
      /**
       * 
       * Health check timeout.
       * The timeout is the time allowed for the target to respond to a check.
       * If the target doesn't respond in time, the check is considered failed.
       * 
       *
       * .google.protobuf.Duration timeout = 1 [(.yandex.cloud.required) = true];
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Duration, com.google.protobuf.Duration.Builder, com.google.protobuf.DurationOrBuilder> 
          getTimeoutFieldBuilder() {
        if (timeoutBuilder_ == null) {
          timeoutBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.protobuf.Duration, com.google.protobuf.Duration.Builder, com.google.protobuf.DurationOrBuilder>(
                  getTimeout(),
                  getParentForChildren(),
                  isClean());
          timeout_ = null;
        }
        return timeoutBuilder_;
      }
      private com.google.protobuf.Duration interval_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Duration, com.google.protobuf.Duration.Builder, com.google.protobuf.DurationOrBuilder> intervalBuilder_;
      /**
       * 
       * Base interval between consecutive health checks.
       * 
       *
       * .google.protobuf.Duration interval = 2 [(.yandex.cloud.required) = true];
       * @return Whether the interval field is set.
       */
      public boolean hasInterval() {
        return intervalBuilder_ != null || interval_ != null;
      }
      /**
       * 
       * Base interval between consecutive health checks.
       * 
       *
       * .google.protobuf.Duration interval = 2 [(.yandex.cloud.required) = true];
       * @return The interval.
       */
      public com.google.protobuf.Duration getInterval() {
        if (intervalBuilder_ == null) {
          return interval_ == null ? com.google.protobuf.Duration.getDefaultInstance() : interval_;
        } else {
          return intervalBuilder_.getMessage();
        }
      }
      /**
       * 
       * Base interval between consecutive health checks.
       * 
       *
       * .google.protobuf.Duration interval = 2 [(.yandex.cloud.required) = true];
       */
      public Builder setInterval(com.google.protobuf.Duration value) {
        if (intervalBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          interval_ = value;
          onChanged();
        } else {
          intervalBuilder_.setMessage(value);
        }
        return this;
      }
      /**
       * 
       * Base interval between consecutive health checks.
       * 
       *
       * .google.protobuf.Duration interval = 2 [(.yandex.cloud.required) = true];
       */
      public Builder setInterval(
          com.google.protobuf.Duration.Builder builderForValue) {
        if (intervalBuilder_ == null) {
          interval_ = builderForValue.build();
          onChanged();
        } else {
          intervalBuilder_.setMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * 
       * Base interval between consecutive health checks.
       * 
       *
       * .google.protobuf.Duration interval = 2 [(.yandex.cloud.required) = true];
       */
      public Builder mergeInterval(com.google.protobuf.Duration value) {
        if (intervalBuilder_ == null) {
          if (interval_ != null) {
            interval_ =
              com.google.protobuf.Duration.newBuilder(interval_).mergeFrom(value).buildPartial();
          } else {
            interval_ = value;
          }
          onChanged();
        } else {
          intervalBuilder_.mergeFrom(value);
        }
        return this;
      }
      /**
       * 
       * Base interval between consecutive health checks.
       * 
       *
       * .google.protobuf.Duration interval = 2 [(.yandex.cloud.required) = true];
       */
      public Builder clearInterval() {
        if (intervalBuilder_ == null) {
          interval_ = null;
          onChanged();
        } else {
          interval_ = null;
          intervalBuilder_ = null;
        }
        return this;
      }
      /**
       * 
       * Base interval between consecutive health checks.
       * 
       *
       * .google.protobuf.Duration interval = 2 [(.yandex.cloud.required) = true];
       */
      public com.google.protobuf.Duration.Builder getIntervalBuilder() {
        
        onChanged();
        return getIntervalFieldBuilder().getBuilder();
      }
      /**
       * 
       * Base interval between consecutive health checks.
       * 
       *
       * .google.protobuf.Duration interval = 2 [(.yandex.cloud.required) = true];
       */
      public com.google.protobuf.DurationOrBuilder getIntervalOrBuilder() {
        if (intervalBuilder_ != null) {
          return intervalBuilder_.getMessageOrBuilder();
        } else {
          return interval_ == null ?
              com.google.protobuf.Duration.getDefaultInstance() : interval_;
        }
      }
      /**
       * 
       * Base interval between consecutive health checks.
       * 
       *
       * .google.protobuf.Duration interval = 2 [(.yandex.cloud.required) = true];
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.protobuf.Duration, com.google.protobuf.Duration.Builder, com.google.protobuf.DurationOrBuilder> 
          getIntervalFieldBuilder() {
        if (intervalBuilder_ == null) {
          intervalBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.protobuf.Duration, com.google.protobuf.Duration.Builder, com.google.protobuf.DurationOrBuilder>(
                  getInterval(),
                  getParentForChildren(),
                  isClean());
          interval_ = null;
        }
        return intervalBuilder_;
      }
      private double intervalJitterPercent_ ;
      /**
       * double interval_jitter_percent = 3;
       * @return The intervalJitterPercent.
       */
      @java.lang.Override
      public double getIntervalJitterPercent() {
        return intervalJitterPercent_;
      }
      /**
       * double interval_jitter_percent = 3;
       * @param value The intervalJitterPercent to set.
       * @return This builder for chaining.
       */
      public Builder setIntervalJitterPercent(double value) {
        
        intervalJitterPercent_ = value;
        onChanged();
        return this;
      }
      /**
       * double interval_jitter_percent = 3;
       * @return This builder for chaining.
       */
      public Builder clearIntervalJitterPercent() {
        
        intervalJitterPercent_ = 0D;
        onChanged();
        return this;
      }
      private long healthyThreshold_ ;
      /**
       * 
       * Number of consecutive successful health checks required to mark an unhealthy target as healthy.
       * Both `0` and `1` values amount to one successful check required.
       * The value is ignored when a load balancer is initialized; a target is marked healthy after one successful check.
       * Default value: `0`.
       * 
       *
       * int64 healthy_threshold = 4;
       * @return The healthyThreshold.
       */
      @java.lang.Override
      public long getHealthyThreshold() {
        return healthyThreshold_;
      }
      /**
       * 
       * Number of consecutive successful health checks required to mark an unhealthy target as healthy.
       * Both `0` and `1` values amount to one successful check required.
       * The value is ignored when a load balancer is initialized; a target is marked healthy after one successful check.
       * Default value: `0`.
       * 
       *
       * int64 healthy_threshold = 4;
       * @param value The healthyThreshold to set.
       * @return This builder for chaining.
       */
      public Builder setHealthyThreshold(long value) {
        
        healthyThreshold_ = value;
        onChanged();
        return this;
      }
      /**
       * 
       * Number of consecutive successful health checks required to mark an unhealthy target as healthy.
       * Both `0` and `1` values amount to one successful check required.
       * The value is ignored when a load balancer is initialized; a target is marked healthy after one successful check.
       * Default value: `0`.
       * 
       *
       * int64 healthy_threshold = 4;
       * @return This builder for chaining.
       */
      public Builder clearHealthyThreshold() {
        
        healthyThreshold_ = 0L;
        onChanged();
        return this;
      }
      private long unhealthyThreshold_ ;
      /**
       * 
       * Number of consecutive failed health checks required to mark a healthy target as unhealthy.
       * Both `0` and `1` values amount to one unsuccessful check required.
       * The value is ignored if a health check is failed due to an HTTP `503 Service Unavailable` response from the target
       * (not applicable to TCP stream health checks). The target is immediately marked unhealthy.
       * Default value: `0`.
       * 
       *
       * int64 unhealthy_threshold = 5;
       * @return The unhealthyThreshold.
       */
      @java.lang.Override
      public long getUnhealthyThreshold() {
        return unhealthyThreshold_;
      }
      /**
       * 
       * Number of consecutive failed health checks required to mark a healthy target as unhealthy.
       * Both `0` and `1` values amount to one unsuccessful check required.
       * The value is ignored if a health check is failed due to an HTTP `503 Service Unavailable` response from the target
       * (not applicable to TCP stream health checks). The target is immediately marked unhealthy.
       * Default value: `0`.
       * 
       *
       * int64 unhealthy_threshold = 5;
       * @param value The unhealthyThreshold to set.
       * @return This builder for chaining.
       */
      public Builder setUnhealthyThreshold(long value) {
        
        unhealthyThreshold_ = value;
        onChanged();
        return this;
      }
      /**
       * 
       * Number of consecutive failed health checks required to mark a healthy target as unhealthy.
       * Both `0` and `1` values amount to one unsuccessful check required.
       * The value is ignored if a health check is failed due to an HTTP `503 Service Unavailable` response from the target
       * (not applicable to TCP stream health checks). The target is immediately marked unhealthy.
       * Default value: `0`.
       * 
       *
       * int64 unhealthy_threshold = 5;
       * @return This builder for chaining.
       */
      public Builder clearUnhealthyThreshold() {
        
        unhealthyThreshold_ = 0L;
        onChanged();
        return this;
      }
      private long healthcheckPort_ ;
      /**
       * 
       * Port used for health checks.
       * If not specified, the backend port ([HttpBackend.port] or [GrpcBackend.port]) is used for health checks.
       * 
       *
       * int64 healthcheck_port = 6 [(.yandex.cloud.value) = "0-65535"];
       * @return The healthcheckPort.
       */
      @java.lang.Override
      public long getHealthcheckPort() {
        return healthcheckPort_;
      }
      /**
       * 
       * Port used for health checks.
       * If not specified, the backend port ([HttpBackend.port] or [GrpcBackend.port]) is used for health checks.
       * 
       *
       * int64 healthcheck_port = 6 [(.yandex.cloud.value) = "0-65535"];
       * @param value The healthcheckPort to set.
       * @return This builder for chaining.
       */
      public Builder setHealthcheckPort(long value) {
        
        healthcheckPort_ = value;
        onChanged();
        return this;
      }
      /**
       * 
       * Port used for health checks.
       * If not specified, the backend port ([HttpBackend.port] or [GrpcBackend.port]) is used for health checks.
       * 
       *
       * int64 healthcheck_port = 6 [(.yandex.cloud.value) = "0-65535"];
       * @return This builder for chaining.
       */
      public Builder clearHealthcheckPort() {
        
        healthcheckPort_ = 0L;
        onChanged();
        return this;
      }
      private com.google.protobuf.SingleFieldBuilderV3<
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.StreamHealthCheck, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.StreamHealthCheck.Builder, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.StreamHealthCheckOrBuilder> streamBuilder_;
      /**
       * 
       * TCP stream health check settings.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.HealthCheck.StreamHealthCheck stream = 7;
       * @return Whether the stream field is set.
       */
      @java.lang.Override
      public boolean hasStream() {
        return healthcheckCase_ == 7;
      }
      /**
       * 
       * TCP stream health check settings.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.HealthCheck.StreamHealthCheck stream = 7;
       * @return The stream.
       */
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.StreamHealthCheck getStream() {
        if (streamBuilder_ == null) {
          if (healthcheckCase_ == 7) {
            return (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.StreamHealthCheck) healthcheck_;
          }
          return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.StreamHealthCheck.getDefaultInstance();
        } else {
          if (healthcheckCase_ == 7) {
            return streamBuilder_.getMessage();
          }
          return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.StreamHealthCheck.getDefaultInstance();
        }
      }
      /**
       * 
       * TCP stream health check settings.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.HealthCheck.StreamHealthCheck stream = 7;
       */
      public Builder setStream(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.StreamHealthCheck value) {
        if (streamBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          healthcheck_ = value;
          onChanged();
        } else {
          streamBuilder_.setMessage(value);
        }
        healthcheckCase_ = 7;
        return this;
      }
      /**
       * 
       * TCP stream health check settings.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.HealthCheck.StreamHealthCheck stream = 7;
       */
      public Builder setStream(
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.StreamHealthCheck.Builder builderForValue) {
        if (streamBuilder_ == null) {
          healthcheck_ = builderForValue.build();
          onChanged();
        } else {
          streamBuilder_.setMessage(builderForValue.build());
        }
        healthcheckCase_ = 7;
        return this;
      }
      /**
       * 
       * TCP stream health check settings.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.HealthCheck.StreamHealthCheck stream = 7;
       */
      public Builder mergeStream(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.StreamHealthCheck value) {
        if (streamBuilder_ == null) {
          if (healthcheckCase_ == 7 &&
              healthcheck_ != yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.StreamHealthCheck.getDefaultInstance()) {
            healthcheck_ = yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.StreamHealthCheck.newBuilder((yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.StreamHealthCheck) healthcheck_)
                .mergeFrom(value).buildPartial();
          } else {
            healthcheck_ = value;
          }
          onChanged();
        } else {
          if (healthcheckCase_ == 7) {
            streamBuilder_.mergeFrom(value);
          }
          streamBuilder_.setMessage(value);
        }
        healthcheckCase_ = 7;
        return this;
      }
      /**
       * 
       * TCP stream health check settings.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.HealthCheck.StreamHealthCheck stream = 7;
       */
      public Builder clearStream() {
        if (streamBuilder_ == null) {
          if (healthcheckCase_ == 7) {
            healthcheckCase_ = 0;
            healthcheck_ = null;
            onChanged();
          }
        } else {
          if (healthcheckCase_ == 7) {
            healthcheckCase_ = 0;
            healthcheck_ = null;
          }
          streamBuilder_.clear();
        }
        return this;
      }
      /**
       * 
       * TCP stream health check settings.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.HealthCheck.StreamHealthCheck stream = 7;
       */
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.StreamHealthCheck.Builder getStreamBuilder() {
        return getStreamFieldBuilder().getBuilder();
      }
      /**
       * 
       * TCP stream health check settings.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.HealthCheck.StreamHealthCheck stream = 7;
       */
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.StreamHealthCheckOrBuilder getStreamOrBuilder() {
        if ((healthcheckCase_ == 7) && (streamBuilder_ != null)) {
          return streamBuilder_.getMessageOrBuilder();
        } else {
          if (healthcheckCase_ == 7) {
            return (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.StreamHealthCheck) healthcheck_;
          }
          return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.StreamHealthCheck.getDefaultInstance();
        }
      }
      /**
       * 
       * TCP stream health check settings.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.HealthCheck.StreamHealthCheck stream = 7;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.StreamHealthCheck, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.StreamHealthCheck.Builder, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.StreamHealthCheckOrBuilder> 
          getStreamFieldBuilder() {
        if (streamBuilder_ == null) {
          if (!(healthcheckCase_ == 7)) {
            healthcheck_ = yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.StreamHealthCheck.getDefaultInstance();
          }
          streamBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.StreamHealthCheck, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.StreamHealthCheck.Builder, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.StreamHealthCheckOrBuilder>(
                  (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.StreamHealthCheck) healthcheck_,
                  getParentForChildren(),
                  isClean());
          healthcheck_ = null;
        }
        healthcheckCase_ = 7;
        onChanged();;
        return streamBuilder_;
      }
      private com.google.protobuf.SingleFieldBuilderV3<
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.HttpHealthCheck, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.HttpHealthCheck.Builder, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.HttpHealthCheckOrBuilder> httpBuilder_;
      /**
       * 
       * HTTP health check settings.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.HealthCheck.HttpHealthCheck http = 8;
       * @return Whether the http field is set.
       */
      @java.lang.Override
      public boolean hasHttp() {
        return healthcheckCase_ == 8;
      }
      /**
       * 
       * HTTP health check settings.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.HealthCheck.HttpHealthCheck http = 8;
       * @return The http.
       */
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.HttpHealthCheck getHttp() {
        if (httpBuilder_ == null) {
          if (healthcheckCase_ == 8) {
            return (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.HttpHealthCheck) healthcheck_;
          }
          return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.HttpHealthCheck.getDefaultInstance();
        } else {
          if (healthcheckCase_ == 8) {
            return httpBuilder_.getMessage();
          }
          return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.HttpHealthCheck.getDefaultInstance();
        }
      }
      /**
       * 
       * HTTP health check settings.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.HealthCheck.HttpHealthCheck http = 8;
       */
      public Builder setHttp(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.HttpHealthCheck value) {
        if (httpBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          healthcheck_ = value;
          onChanged();
        } else {
          httpBuilder_.setMessage(value);
        }
        healthcheckCase_ = 8;
        return this;
      }
      /**
       * 
       * HTTP health check settings.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.HealthCheck.HttpHealthCheck http = 8;
       */
      public Builder setHttp(
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.HttpHealthCheck.Builder builderForValue) {
        if (httpBuilder_ == null) {
          healthcheck_ = builderForValue.build();
          onChanged();
        } else {
          httpBuilder_.setMessage(builderForValue.build());
        }
        healthcheckCase_ = 8;
        return this;
      }
      /**
       * 
       * HTTP health check settings.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.HealthCheck.HttpHealthCheck http = 8;
       */
      public Builder mergeHttp(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.HttpHealthCheck value) {
        if (httpBuilder_ == null) {
          if (healthcheckCase_ == 8 &&
              healthcheck_ != yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.HttpHealthCheck.getDefaultInstance()) {
            healthcheck_ = yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.HttpHealthCheck.newBuilder((yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.HttpHealthCheck) healthcheck_)
                .mergeFrom(value).buildPartial();
          } else {
            healthcheck_ = value;
          }
          onChanged();
        } else {
          if (healthcheckCase_ == 8) {
            httpBuilder_.mergeFrom(value);
          }
          httpBuilder_.setMessage(value);
        }
        healthcheckCase_ = 8;
        return this;
      }
      /**
       * 
       * HTTP health check settings.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.HealthCheck.HttpHealthCheck http = 8;
       */
      public Builder clearHttp() {
        if (httpBuilder_ == null) {
          if (healthcheckCase_ == 8) {
            healthcheckCase_ = 0;
            healthcheck_ = null;
            onChanged();
          }
        } else {
          if (healthcheckCase_ == 8) {
            healthcheckCase_ = 0;
            healthcheck_ = null;
          }
          httpBuilder_.clear();
        }
        return this;
      }
      /**
       * 
       * HTTP health check settings.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.HealthCheck.HttpHealthCheck http = 8;
       */
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.HttpHealthCheck.Builder getHttpBuilder() {
        return getHttpFieldBuilder().getBuilder();
      }
      /**
       * 
       * HTTP health check settings.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.HealthCheck.HttpHealthCheck http = 8;
       */
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.HttpHealthCheckOrBuilder getHttpOrBuilder() {
        if ((healthcheckCase_ == 8) && (httpBuilder_ != null)) {
          return httpBuilder_.getMessageOrBuilder();
        } else {
          if (healthcheckCase_ == 8) {
            return (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.HttpHealthCheck) healthcheck_;
          }
          return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.HttpHealthCheck.getDefaultInstance();
        }
      }
      /**
       * 
       * HTTP health check settings.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.HealthCheck.HttpHealthCheck http = 8;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.HttpHealthCheck, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.HttpHealthCheck.Builder, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.HttpHealthCheckOrBuilder> 
          getHttpFieldBuilder() {
        if (httpBuilder_ == null) {
          if (!(healthcheckCase_ == 8)) {
            healthcheck_ = yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.HttpHealthCheck.getDefaultInstance();
          }
          httpBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.HttpHealthCheck, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.HttpHealthCheck.Builder, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.HttpHealthCheckOrBuilder>(
                  (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.HttpHealthCheck) healthcheck_,
                  getParentForChildren(),
                  isClean());
          healthcheck_ = null;
        }
        healthcheckCase_ = 8;
        onChanged();;
        return httpBuilder_;
      }
      private com.google.protobuf.SingleFieldBuilderV3<
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.GrpcHealthCheck, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.GrpcHealthCheck.Builder, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.GrpcHealthCheckOrBuilder> grpcBuilder_;
      /**
       * 
       * gRPC health check settings.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.HealthCheck.GrpcHealthCheck grpc = 9;
       * @return Whether the grpc field is set.
       */
      @java.lang.Override
      public boolean hasGrpc() {
        return healthcheckCase_ == 9;
      }
      /**
       * 
       * gRPC health check settings.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.HealthCheck.GrpcHealthCheck grpc = 9;
       * @return The grpc.
       */
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.GrpcHealthCheck getGrpc() {
        if (grpcBuilder_ == null) {
          if (healthcheckCase_ == 9) {
            return (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.GrpcHealthCheck) healthcheck_;
          }
          return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.GrpcHealthCheck.getDefaultInstance();
        } else {
          if (healthcheckCase_ == 9) {
            return grpcBuilder_.getMessage();
          }
          return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.GrpcHealthCheck.getDefaultInstance();
        }
      }
      /**
       * 
       * gRPC health check settings.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.HealthCheck.GrpcHealthCheck grpc = 9;
       */
      public Builder setGrpc(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.GrpcHealthCheck value) {
        if (grpcBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          healthcheck_ = value;
          onChanged();
        } else {
          grpcBuilder_.setMessage(value);
        }
        healthcheckCase_ = 9;
        return this;
      }
      /**
       * 
       * gRPC health check settings.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.HealthCheck.GrpcHealthCheck grpc = 9;
       */
      public Builder setGrpc(
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.GrpcHealthCheck.Builder builderForValue) {
        if (grpcBuilder_ == null) {
          healthcheck_ = builderForValue.build();
          onChanged();
        } else {
          grpcBuilder_.setMessage(builderForValue.build());
        }
        healthcheckCase_ = 9;
        return this;
      }
      /**
       * 
       * gRPC health check settings.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.HealthCheck.GrpcHealthCheck grpc = 9;
       */
      public Builder mergeGrpc(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.GrpcHealthCheck value) {
        if (grpcBuilder_ == null) {
          if (healthcheckCase_ == 9 &&
              healthcheck_ != yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.GrpcHealthCheck.getDefaultInstance()) {
            healthcheck_ = yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.GrpcHealthCheck.newBuilder((yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.GrpcHealthCheck) healthcheck_)
                .mergeFrom(value).buildPartial();
          } else {
            healthcheck_ = value;
          }
          onChanged();
        } else {
          if (healthcheckCase_ == 9) {
            grpcBuilder_.mergeFrom(value);
          }
          grpcBuilder_.setMessage(value);
        }
        healthcheckCase_ = 9;
        return this;
      }
      /**
       * 
       * gRPC health check settings.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.HealthCheck.GrpcHealthCheck grpc = 9;
       */
      public Builder clearGrpc() {
        if (grpcBuilder_ == null) {
          if (healthcheckCase_ == 9) {
            healthcheckCase_ = 0;
            healthcheck_ = null;
            onChanged();
          }
        } else {
          if (healthcheckCase_ == 9) {
            healthcheckCase_ = 0;
            healthcheck_ = null;
          }
          grpcBuilder_.clear();
        }
        return this;
      }
      /**
       * 
       * gRPC health check settings.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.HealthCheck.GrpcHealthCheck grpc = 9;
       */
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.GrpcHealthCheck.Builder getGrpcBuilder() {
        return getGrpcFieldBuilder().getBuilder();
      }
      /**
       * 
       * gRPC health check settings.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.HealthCheck.GrpcHealthCheck grpc = 9;
       */
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.GrpcHealthCheckOrBuilder getGrpcOrBuilder() {
        if ((healthcheckCase_ == 9) && (grpcBuilder_ != null)) {
          return grpcBuilder_.getMessageOrBuilder();
        } else {
          if (healthcheckCase_ == 9) {
            return (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.GrpcHealthCheck) healthcheck_;
          }
          return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.GrpcHealthCheck.getDefaultInstance();
        }
      }
      /**
       * 
       * gRPC health check settings.
       * 
       *
       * .yandex.cloud.apploadbalancer.v1.HealthCheck.GrpcHealthCheck grpc = 9;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.GrpcHealthCheck, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.GrpcHealthCheck.Builder, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.GrpcHealthCheckOrBuilder> 
          getGrpcFieldBuilder() {
        if (grpcBuilder_ == null) {
          if (!(healthcheckCase_ == 9)) {
            healthcheck_ = yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.GrpcHealthCheck.getDefaultInstance();
          }
          grpcBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.GrpcHealthCheck, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.GrpcHealthCheck.Builder, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.GrpcHealthCheckOrBuilder>(
                  (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck.GrpcHealthCheck) healthcheck_,
                  getParentForChildren(),
                  isClean());
          healthcheck_ = null;
        }
        healthcheckCase_ = 9;
        onChanged();;
        return grpcBuilder_;
      }
      private com.google.protobuf.SingleFieldBuilderV3<
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.PlaintextTransportSettings, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.PlaintextTransportSettings.Builder, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.PlaintextTransportSettingsOrBuilder> plaintextBuilder_;
      /**
       * .yandex.cloud.apploadbalancer.v1.PlaintextTransportSettings plaintext = 10;
       * @return Whether the plaintext field is set.
       */
      @java.lang.Override
      public boolean hasPlaintext() {
        return transportSettingsCase_ == 10;
      }
      /**
       * .yandex.cloud.apploadbalancer.v1.PlaintextTransportSettings plaintext = 10;
       * @return The plaintext.
       */
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.PlaintextTransportSettings getPlaintext() {
        if (plaintextBuilder_ == null) {
          if (transportSettingsCase_ == 10) {
            return (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.PlaintextTransportSettings) transportSettings_;
          }
          return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.PlaintextTransportSettings.getDefaultInstance();
        } else {
          if (transportSettingsCase_ == 10) {
            return plaintextBuilder_.getMessage();
          }
          return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.PlaintextTransportSettings.getDefaultInstance();
        }
      }
      /**
       * .yandex.cloud.apploadbalancer.v1.PlaintextTransportSettings plaintext = 10;
       */
      public Builder setPlaintext(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.PlaintextTransportSettings value) {
        if (plaintextBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          transportSettings_ = value;
          onChanged();
        } else {
          plaintextBuilder_.setMessage(value);
        }
        transportSettingsCase_ = 10;
        return this;
      }
      /**
       * .yandex.cloud.apploadbalancer.v1.PlaintextTransportSettings plaintext = 10;
       */
      public Builder setPlaintext(
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.PlaintextTransportSettings.Builder builderForValue) {
        if (plaintextBuilder_ == null) {
          transportSettings_ = builderForValue.build();
          onChanged();
        } else {
          plaintextBuilder_.setMessage(builderForValue.build());
        }
        transportSettingsCase_ = 10;
        return this;
      }
      /**
       * .yandex.cloud.apploadbalancer.v1.PlaintextTransportSettings plaintext = 10;
       */
      public Builder mergePlaintext(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.PlaintextTransportSettings value) {
        if (plaintextBuilder_ == null) {
          if (transportSettingsCase_ == 10 &&
              transportSettings_ != yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.PlaintextTransportSettings.getDefaultInstance()) {
            transportSettings_ = yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.PlaintextTransportSettings.newBuilder((yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.PlaintextTransportSettings) transportSettings_)
                .mergeFrom(value).buildPartial();
          } else {
            transportSettings_ = value;
          }
          onChanged();
        } else {
          if (transportSettingsCase_ == 10) {
            plaintextBuilder_.mergeFrom(value);
          }
          plaintextBuilder_.setMessage(value);
        }
        transportSettingsCase_ = 10;
        return this;
      }
      /**
       * .yandex.cloud.apploadbalancer.v1.PlaintextTransportSettings plaintext = 10;
       */
      public Builder clearPlaintext() {
        if (plaintextBuilder_ == null) {
          if (transportSettingsCase_ == 10) {
            transportSettingsCase_ = 0;
            transportSettings_ = null;
            onChanged();
          }
        } else {
          if (transportSettingsCase_ == 10) {
            transportSettingsCase_ = 0;
            transportSettings_ = null;
          }
          plaintextBuilder_.clear();
        }
        return this;
      }
      /**
       * .yandex.cloud.apploadbalancer.v1.PlaintextTransportSettings plaintext = 10;
       */
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.PlaintextTransportSettings.Builder getPlaintextBuilder() {
        return getPlaintextFieldBuilder().getBuilder();
      }
      /**
       * .yandex.cloud.apploadbalancer.v1.PlaintextTransportSettings plaintext = 10;
       */
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.PlaintextTransportSettingsOrBuilder getPlaintextOrBuilder() {
        if ((transportSettingsCase_ == 10) && (plaintextBuilder_ != null)) {
          return plaintextBuilder_.getMessageOrBuilder();
        } else {
          if (transportSettingsCase_ == 10) {
            return (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.PlaintextTransportSettings) transportSettings_;
          }
          return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.PlaintextTransportSettings.getDefaultInstance();
        }
      }
      /**
       * .yandex.cloud.apploadbalancer.v1.PlaintextTransportSettings plaintext = 10;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.PlaintextTransportSettings, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.PlaintextTransportSettings.Builder, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.PlaintextTransportSettingsOrBuilder> 
          getPlaintextFieldBuilder() {
        if (plaintextBuilder_ == null) {
          if (!(transportSettingsCase_ == 10)) {
            transportSettings_ = yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.PlaintextTransportSettings.getDefaultInstance();
          }
          plaintextBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.PlaintextTransportSettings, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.PlaintextTransportSettings.Builder, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.PlaintextTransportSettingsOrBuilder>(
                  (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.PlaintextTransportSettings) transportSettings_,
                  getParentForChildren(),
                  isClean());
          transportSettings_ = null;
        }
        transportSettingsCase_ = 10;
        onChanged();;
        return plaintextBuilder_;
      }
      private com.google.protobuf.SingleFieldBuilderV3<
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.SecureTransportSettings, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.SecureTransportSettings.Builder, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.SecureTransportSettingsOrBuilder> tlsBuilder_;
      /**
       * .yandex.cloud.apploadbalancer.v1.SecureTransportSettings tls = 11;
       * @return Whether the tls field is set.
       */
      @java.lang.Override
      public boolean hasTls() {
        return transportSettingsCase_ == 11;
      }
      /**
       * .yandex.cloud.apploadbalancer.v1.SecureTransportSettings tls = 11;
       * @return The tls.
       */
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.SecureTransportSettings getTls() {
        if (tlsBuilder_ == null) {
          if (transportSettingsCase_ == 11) {
            return (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.SecureTransportSettings) transportSettings_;
          }
          return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.SecureTransportSettings.getDefaultInstance();
        } else {
          if (transportSettingsCase_ == 11) {
            return tlsBuilder_.getMessage();
          }
          return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.SecureTransportSettings.getDefaultInstance();
        }
      }
      /**
       * .yandex.cloud.apploadbalancer.v1.SecureTransportSettings tls = 11;
       */
      public Builder setTls(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.SecureTransportSettings value) {
        if (tlsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          transportSettings_ = value;
          onChanged();
        } else {
          tlsBuilder_.setMessage(value);
        }
        transportSettingsCase_ = 11;
        return this;
      }
      /**
       * .yandex.cloud.apploadbalancer.v1.SecureTransportSettings tls = 11;
       */
      public Builder setTls(
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.SecureTransportSettings.Builder builderForValue) {
        if (tlsBuilder_ == null) {
          transportSettings_ = builderForValue.build();
          onChanged();
        } else {
          tlsBuilder_.setMessage(builderForValue.build());
        }
        transportSettingsCase_ = 11;
        return this;
      }
      /**
       * .yandex.cloud.apploadbalancer.v1.SecureTransportSettings tls = 11;
       */
      public Builder mergeTls(yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.SecureTransportSettings value) {
        if (tlsBuilder_ == null) {
          if (transportSettingsCase_ == 11 &&
              transportSettings_ != yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.SecureTransportSettings.getDefaultInstance()) {
            transportSettings_ = yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.SecureTransportSettings.newBuilder((yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.SecureTransportSettings) transportSettings_)
                .mergeFrom(value).buildPartial();
          } else {
            transportSettings_ = value;
          }
          onChanged();
        } else {
          if (transportSettingsCase_ == 11) {
            tlsBuilder_.mergeFrom(value);
          }
          tlsBuilder_.setMessage(value);
        }
        transportSettingsCase_ = 11;
        return this;
      }
      /**
       * .yandex.cloud.apploadbalancer.v1.SecureTransportSettings tls = 11;
       */
      public Builder clearTls() {
        if (tlsBuilder_ == null) {
          if (transportSettingsCase_ == 11) {
            transportSettingsCase_ = 0;
            transportSettings_ = null;
            onChanged();
          }
        } else {
          if (transportSettingsCase_ == 11) {
            transportSettingsCase_ = 0;
            transportSettings_ = null;
          }
          tlsBuilder_.clear();
        }
        return this;
      }
      /**
       * .yandex.cloud.apploadbalancer.v1.SecureTransportSettings tls = 11;
       */
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.SecureTransportSettings.Builder getTlsBuilder() {
        return getTlsFieldBuilder().getBuilder();
      }
      /**
       * .yandex.cloud.apploadbalancer.v1.SecureTransportSettings tls = 11;
       */
      @java.lang.Override
      public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.SecureTransportSettingsOrBuilder getTlsOrBuilder() {
        if ((transportSettingsCase_ == 11) && (tlsBuilder_ != null)) {
          return tlsBuilder_.getMessageOrBuilder();
        } else {
          if (transportSettingsCase_ == 11) {
            return (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.SecureTransportSettings) transportSettings_;
          }
          return yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.SecureTransportSettings.getDefaultInstance();
        }
      }
      /**
       * .yandex.cloud.apploadbalancer.v1.SecureTransportSettings tls = 11;
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.SecureTransportSettings, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.SecureTransportSettings.Builder, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.SecureTransportSettingsOrBuilder> 
          getTlsFieldBuilder() {
        if (tlsBuilder_ == null) {
          if (!(transportSettingsCase_ == 11)) {
            transportSettings_ = yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.SecureTransportSettings.getDefaultInstance();
          }
          tlsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.SecureTransportSettings, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.SecureTransportSettings.Builder, yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.SecureTransportSettingsOrBuilder>(
                  (yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.SecureTransportSettings) transportSettings_,
                  getParentForChildren(),
                  isClean());
          transportSettings_ = null;
        }
        transportSettingsCase_ = 11;
        onChanged();;
        return tlsBuilder_;
      }
      @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:yandex.cloud.apploadbalancer.v1.HealthCheck)
    }
    // @@protoc_insertion_point(class_scope:yandex.cloud.apploadbalancer.v1.HealthCheck)
    private static final yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck();
    }
    public static yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }
    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public HealthCheck parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new HealthCheck(input, extensionRegistry);
      }
    };
    public static com.google.protobuf.Parser parser() {
      return PARSER;
    }
    @java.lang.Override
    public com.google.protobuf.Parser getParserForType() {
      return PARSER;
    }
    @java.lang.Override
    public yandex.cloud.api.apploadbalancer.v1.BackendGroupOuterClass.HealthCheck getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }
  }
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_yandex_cloud_apploadbalancer_v1_BackendGroup_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_yandex_cloud_apploadbalancer_v1_BackendGroup_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_yandex_cloud_apploadbalancer_v1_BackendGroup_LabelsEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_yandex_cloud_apploadbalancer_v1_BackendGroup_LabelsEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_yandex_cloud_apploadbalancer_v1_StreamBackendGroup_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_yandex_cloud_apploadbalancer_v1_StreamBackendGroup_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_yandex_cloud_apploadbalancer_v1_HttpBackendGroup_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_yandex_cloud_apploadbalancer_v1_HttpBackendGroup_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_yandex_cloud_apploadbalancer_v1_GrpcBackendGroup_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_yandex_cloud_apploadbalancer_v1_GrpcBackendGroup_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_yandex_cloud_apploadbalancer_v1_HeaderSessionAffinity_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_yandex_cloud_apploadbalancer_v1_HeaderSessionAffinity_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_yandex_cloud_apploadbalancer_v1_CookieSessionAffinity_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_yandex_cloud_apploadbalancer_v1_CookieSessionAffinity_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_yandex_cloud_apploadbalancer_v1_ConnectionSessionAffinity_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_yandex_cloud_apploadbalancer_v1_ConnectionSessionAffinity_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_yandex_cloud_apploadbalancer_v1_LoadBalancingConfig_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_yandex_cloud_apploadbalancer_v1_LoadBalancingConfig_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_yandex_cloud_apploadbalancer_v1_StreamBackend_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_yandex_cloud_apploadbalancer_v1_StreamBackend_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_yandex_cloud_apploadbalancer_v1_HttpBackend_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_yandex_cloud_apploadbalancer_v1_HttpBackend_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_yandex_cloud_apploadbalancer_v1_GrpcBackend_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_yandex_cloud_apploadbalancer_v1_GrpcBackend_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_yandex_cloud_apploadbalancer_v1_TargetGroupsBackend_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_yandex_cloud_apploadbalancer_v1_TargetGroupsBackend_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_yandex_cloud_apploadbalancer_v1_PlaintextTransportSettings_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_yandex_cloud_apploadbalancer_v1_PlaintextTransportSettings_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_yandex_cloud_apploadbalancer_v1_SecureTransportSettings_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_yandex_cloud_apploadbalancer_v1_SecureTransportSettings_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_yandex_cloud_apploadbalancer_v1_BackendTls_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_yandex_cloud_apploadbalancer_v1_BackendTls_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_yandex_cloud_apploadbalancer_v1_StorageBucketBackend_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_yandex_cloud_apploadbalancer_v1_StorageBucketBackend_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_yandex_cloud_apploadbalancer_v1_HealthCheck_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_yandex_cloud_apploadbalancer_v1_HealthCheck_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_yandex_cloud_apploadbalancer_v1_HealthCheck_StreamHealthCheck_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_yandex_cloud_apploadbalancer_v1_HealthCheck_StreamHealthCheck_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_yandex_cloud_apploadbalancer_v1_HealthCheck_HttpHealthCheck_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_yandex_cloud_apploadbalancer_v1_HealthCheck_HttpHealthCheck_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_yandex_cloud_apploadbalancer_v1_HealthCheck_GrpcHealthCheck_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_yandex_cloud_apploadbalancer_v1_HealthCheck_GrpcHealthCheck_fieldAccessorTable;
  public static com.google.protobuf.Descriptors.FileDescriptor
      getDescriptor() {
    return descriptor;
  }
  private static  com.google.protobuf.Descriptors.FileDescriptor
      descriptor;
  static {
    java.lang.String[] descriptorData = {
      "\n3yandex/cloud/apploadbalancer/v1/backen" +
      "d_group.proto\022\037yandex.cloud.apploadbalan" +
      "cer.v1\032\036google/protobuf/duration.proto\032\037" +
      "google/protobuf/timestamp.proto\032\036google/" +
      "protobuf/wrappers.proto\032-yandex/cloud/ap" +
      "ploadbalancer/v1/payload.proto\032)yandex/c" +
      "loud/apploadbalancer/v1/tls.proto\032\035yande" +
      "x/cloud/validation.proto\"\322\003\n\014BackendGrou" +
      "p\022\n\n\002id\030\001 \001(\t\022\014\n\004name\030\002 \001(\t\022\023\n\013descripti" +
      "on\030\003 \001(\t\022\021\n\tfolder_id\030\004 \001(\t\022I\n\006labels\030\005 " +
      "\003(\01329.yandex.cloud.apploadbalancer.v1.Ba" +
      "ckendGroup.LabelsEntry\022A\n\004http\030\006 \001(\01321.y" +
      "andex.cloud.apploadbalancer.v1.HttpBacke" +
      "ndGroupH\000\022A\n\004grpc\030\007 \001(\01321.yandex.cloud.a" +
      "pploadbalancer.v1.GrpcBackendGroupH\000\022E\n\006" +
      "stream\030\n \001(\01323.yandex.cloud.apploadbalan" +
      "cer.v1.StreamBackendGroupH\000\022.\n\ncreated_a" +
      "t\030\t \001(\0132\032.google.protobuf.Timestamp\032-\n\013L" +
      "abelsEntry\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\002" +
      "8\001B\t\n\007backend\"\274\001\n\022StreamBackendGroup\022@\n\010" +
      "backends\030\001 \003(\0132..yandex.cloud.apploadbal" +
      "ancer.v1.StreamBackend\022P\n\nconnection\030\002 \001" +
      "(\0132:.yandex.cloud.apploadbalancer.v1.Con" +
      "nectionSessionAffinityH\000B\022\n\020session_affi" +
      "nity\"\314\002\n\020HttpBackendGroup\022>\n\010backends\030\001 " +
      "\003(\0132,.yandex.cloud.apploadbalancer.v1.Ht" +
      "tpBackend\022P\n\nconnection\030\002 \001(\0132:.yandex.c" +
      "loud.apploadbalancer.v1.ConnectionSessio" +
      "nAffinityH\000\022H\n\006header\030\003 \001(\01326.yandex.clo" +
      "ud.apploadbalancer.v1.HeaderSessionAffin" +
      "ityH\000\022H\n\006cookie\030\004 \001(\01326.yandex.cloud.app" +
      "loadbalancer.v1.CookieSessionAffinityH\000B" +
      "\022\n\020session_affinity\"\314\002\n\020GrpcBackendGroup" +
      "\022>\n\010backends\030\001 \003(\0132,.yandex.cloud.apploa" +
      "dbalancer.v1.GrpcBackend\022P\n\nconnection\030\002" +
      " \001(\0132:.yandex.cloud.apploadbalancer.v1.C" +
      "onnectionSessionAffinityH\000\022H\n\006header\030\003 \001" +
      "(\01326.yandex.cloud.apploadbalancer.v1.Hea" +
      "derSessionAffinityH\000\022H\n\006cookie\030\004 \001(\01326.y" +
      "andex.cloud.apploadbalancer.v1.CookieSes" +
      "sionAffinityH\000B\022\n\020session_affinity\"7\n\025He" +
      "aderSessionAffinity\022\036\n\013header_name\030\001 \001(\t" +
      "B\t\212\3101\0051-256\"X\n\025CookieSessionAffinity\022\027\n\004" +
      "name\030\001 \001(\tB\t\212\3101\0051-256\022&\n\003ttl\030\002 \001(\0132\031.goo" +
      "gle.protobuf.Duration\".\n\031ConnectionSessi" +
      "onAffinity\022\021\n\tsource_ip\030\001 \001(\010\"\307\001\n\023LoadBa" +
      "lancingConfig\022\"\n\017panic_threshold\030\001 \001(\003B\t" +
      "\372\3071\0050-100\0221\n\036locality_aware_routing_perc" +
      "ent\030\002 \001(\003B\t\372\3071\0050-100\022\027\n\017strict_locality\030" +
      "\003 \001(\010\022@\n\004mode\030\004 \001(\01622.yandex.cloud.applo" +
      "adbalancer.v1.LoadBalancingMode\"\346\003\n\rStre" +
      "amBackend\022.\n\004name\030\001 \001(\tB \362\3071\034[a-z][-a-z0" +
      "-9]{1,61}[a-z0-9]\0223\n\016backend_weight\030\002 \001(" +
      "\0132\033.google.protobuf.Int64Value\022S\n\025load_b" +
      "alancing_config\030\003 \001(\01324.yandex.cloud.app" +
      "loadbalancer.v1.LoadBalancingConfig\022\031\n\004p" +
      "ort\030\004 \001(\003B\013\372\3071\0070-65535\022M\n\rtarget_groups\030" +
      "\005 \001(\01324.yandex.cloud.apploadbalancer.v1." +
      "TargetGroupsBackendH\000\022B\n\014healthchecks\030\006 " +
      "\003(\0132,.yandex.cloud.apploadbalancer.v1.He" +
      "althCheck\0228\n\003tls\030\007 \001(\0132+.yandex.cloud.ap" +
      "ploadbalancer.v1.BackendTls\022\035\n\025enable_pr" +
      "oxy_protocol\030\010 \001(\010B\024\n\014backend_type\022\004\300\3011\001" +
      "\"\255\004\n\013HttpBackend\0222\n\004name\030\001 \001(\tB$\350\3071\001\362\3071\034" +
      "[a-z][-a-z0-9]{1,61}[a-z0-9]\0223\n\016backend_" +
      "weight\030\002 \001(\0132\033.google.protobuf.Int64Valu" +
      "e\022S\n\025load_balancing_config\030\003 \001(\01324.yande" +
      "x.cloud.apploadbalancer.v1.LoadBalancing" +
      "Config\022\031\n\004port\030\004 \001(\003B\013\372\3071\0070-65535\022M\n\rtar" +
      "get_groups\030\005 \001(\01324.yandex.cloud.apploadb" +
      "alancer.v1.TargetGroupsBackendH\000\022O\n\016stor" +
      "age_bucket\030\t \001(\01325.yandex.cloud.apploadb" +
      "alancer.v1.StorageBucketBackendH\000\022B\n\014hea" +
      "lthchecks\030\006 \003(\0132,.yandex.cloud.apploadba" +
      "lancer.v1.HealthCheck\0228\n\003tls\030\007 \001(\0132+.yan" +
      "dex.cloud.apploadbalancer.v1.BackendTls\022" +
      "\021\n\tuse_http2\030\010 \001(\010B\024\n\014backend_type\022\004\300\3011\001" +
      "\"\311\003\n\013GrpcBackend\0222\n\004name\030\001 \001(\tB$\350\3071\001\362\3071\034" +
      "[a-z][-a-z0-9]{1,61}[a-z0-9]\0223\n\016backend_" +
      "weight\030\002 \001(\0132\033.google.protobuf.Int64Valu" +
      "e\022S\n\025load_balancing_config\030\003 \001(\01324.yande" +
      "x.cloud.apploadbalancer.v1.LoadBalancing" +
      "Config\022\031\n\004port\030\004 \001(\003B\013\372\3071\0070-65535\022M\n\rtar" +
      "get_groups\030\005 \001(\01324.yandex.cloud.apploadb" +
      "alancer.v1.TargetGroupsBackendH\000\022B\n\014heal" +
      "thchecks\030\007 \003(\0132,.yandex.cloud.apploadbal" +
      "ancer.v1.HealthCheck\0228\n\003tls\030\010 \001(\0132+.yand" +
      "ex.cloud.apploadbalancer.v1.BackendTlsB\024" +
      "\n\014backend_type\022\004\300\3011\001\"7\n\023TargetGroupsBack" +
      "end\022 \n\020target_group_ids\030\001 \003(\tB\006\202\3101\002>0\"\034\n" +
      "\032PlaintextTransportSettings\"v\n\027SecureTra" +
      "nsportSettings\022\013\n\003sni\030\001 \001(\t\022N\n\022validatio" +
      "n_context\030\003 \001(\01322.yandex.cloud.apploadba" +
      "lancer.v1.ValidationContext\"i\n\nBackendTl" +
      "s\022\013\n\003sni\030\001 \001(\t\022N\n\022validation_context\030\003 \001" +
      "(\01322.yandex.cloud.apploadbalancer.v1.Val" +
      "idationContext\",\n\024StorageBucketBackend\022\024" +
      "\n\006bucket\030\001 \001(\tB\004\350\3071\001\"\240\007\n\013HealthCheck\0220\n\007" +
      "timeout\030\001 \001(\0132\031.google.protobuf.Duration" +
      "B\004\350\3071\001\0221\n\010interval\030\002 \001(\0132\031.google.protob" +
      "uf.DurationB\004\350\3071\001\022\037\n\027interval_jitter_per" +
      "cent\030\003 \001(\001\022\031\n\021healthy_threshold\030\004 \001(\003\022\033\n" +
      "\023unhealthy_threshold\030\005 \001(\003\022%\n\020healthchec" +
      "k_port\030\006 \001(\003B\013\372\3071\0070-65535\022P\n\006stream\030\007 \001(" +
      "\0132>.yandex.cloud.apploadbalancer.v1.Heal" +
      "thCheck.StreamHealthCheckH\000\022L\n\004http\030\010 \001(" +
      "\0132<.yandex.cloud.apploadbalancer.v1.Heal" +
      "thCheck.HttpHealthCheckH\000\022L\n\004grpc\030\t \001(\0132" +
      "<.yandex.cloud.apploadbalancer.v1.Health" +
      "Check.GrpcHealthCheckH\000\022P\n\tplaintext\030\n \001" +
      "(\0132;.yandex.cloud.apploadbalancer.v1.Pla" +
      "intextTransportSettingsH\001\022G\n\003tls\030\013 \001(\01328" +
      ".yandex.cloud.apploadbalancer.v1.SecureT" +
      "ransportSettingsH\001\032\206\001\n\021StreamHealthCheck" +
      "\0226\n\004send\030\001 \001(\0132(.yandex.cloud.apploadbal" +
      "ancer.v1.Payload\0229\n\007receive\030\002 \001(\0132(.yand" +
      "ex.cloud.apploadbalancer.v1.Payload\032F\n\017H" +
      "ttpHealthCheck\022\014\n\004host\030\001 \001(\t\022\022\n\004path\030\002 \001" +
      "(\tB\004\350\3071\001\022\021\n\tuse_http2\030\003 \001(\010\032\'\n\017GrpcHealt" +
      "hCheck\022\024\n\014service_name\030\001 \001(\tB\023\n\013healthch" +
      "eck\022\004\300\3011\001B\024\n\022transport_settings*T\n\021LoadB" +
      "alancingMode\022\017\n\013ROUND_ROBIN\020\000\022\n\n\006RANDOM\020" +
      "\001\022\021\n\rLEAST_REQUEST\020\002\022\017\n\013MAGLEV_HASH\020\003Bz\n" +
      "#yandex.cloud.api.apploadbalancer.v1ZSgi" +
      "thub.com/yandex-cloud/go-genproto/yandex" +
      "/cloud/apploadbalancer/v1;apploadbalance" +
      "rb\006proto3"
    };
    descriptor = com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
          com.google.protobuf.DurationProto.getDescriptor(),
          com.google.protobuf.TimestampProto.getDescriptor(),
          com.google.protobuf.WrappersProto.getDescriptor(),
          yandex.cloud.api.apploadbalancer.v1.PayloadOuterClass.getDescriptor(),
          yandex.cloud.api.apploadbalancer.v1.Tls.getDescriptor(),
          yandex.cloud.api.Validation.getDescriptor(),
        });
    internal_static_yandex_cloud_apploadbalancer_v1_BackendGroup_descriptor =
      getDescriptor().getMessageTypes().get(0);
    internal_static_yandex_cloud_apploadbalancer_v1_BackendGroup_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_yandex_cloud_apploadbalancer_v1_BackendGroup_descriptor,
        new java.lang.String[] { "Id", "Name", "Description", "FolderId", "Labels", "Http", "Grpc", "Stream", "CreatedAt", "Backend", });
    internal_static_yandex_cloud_apploadbalancer_v1_BackendGroup_LabelsEntry_descriptor =
      internal_static_yandex_cloud_apploadbalancer_v1_BackendGroup_descriptor.getNestedTypes().get(0);
    internal_static_yandex_cloud_apploadbalancer_v1_BackendGroup_LabelsEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_yandex_cloud_apploadbalancer_v1_BackendGroup_LabelsEntry_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_yandex_cloud_apploadbalancer_v1_StreamBackendGroup_descriptor =
      getDescriptor().getMessageTypes().get(1);
    internal_static_yandex_cloud_apploadbalancer_v1_StreamBackendGroup_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_yandex_cloud_apploadbalancer_v1_StreamBackendGroup_descriptor,
        new java.lang.String[] { "Backends", "Connection", "SessionAffinity", });
    internal_static_yandex_cloud_apploadbalancer_v1_HttpBackendGroup_descriptor =
      getDescriptor().getMessageTypes().get(2);
    internal_static_yandex_cloud_apploadbalancer_v1_HttpBackendGroup_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_yandex_cloud_apploadbalancer_v1_HttpBackendGroup_descriptor,
        new java.lang.String[] { "Backends", "Connection", "Header", "Cookie", "SessionAffinity", });
    internal_static_yandex_cloud_apploadbalancer_v1_GrpcBackendGroup_descriptor =
      getDescriptor().getMessageTypes().get(3);
    internal_static_yandex_cloud_apploadbalancer_v1_GrpcBackendGroup_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_yandex_cloud_apploadbalancer_v1_GrpcBackendGroup_descriptor,
        new java.lang.String[] { "Backends", "Connection", "Header", "Cookie", "SessionAffinity", });
    internal_static_yandex_cloud_apploadbalancer_v1_HeaderSessionAffinity_descriptor =
      getDescriptor().getMessageTypes().get(4);
    internal_static_yandex_cloud_apploadbalancer_v1_HeaderSessionAffinity_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_yandex_cloud_apploadbalancer_v1_HeaderSessionAffinity_descriptor,
        new java.lang.String[] { "HeaderName", });
    internal_static_yandex_cloud_apploadbalancer_v1_CookieSessionAffinity_descriptor =
      getDescriptor().getMessageTypes().get(5);
    internal_static_yandex_cloud_apploadbalancer_v1_CookieSessionAffinity_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_yandex_cloud_apploadbalancer_v1_CookieSessionAffinity_descriptor,
        new java.lang.String[] { "Name", "Ttl", });
    internal_static_yandex_cloud_apploadbalancer_v1_ConnectionSessionAffinity_descriptor =
      getDescriptor().getMessageTypes().get(6);
    internal_static_yandex_cloud_apploadbalancer_v1_ConnectionSessionAffinity_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_yandex_cloud_apploadbalancer_v1_ConnectionSessionAffinity_descriptor,
        new java.lang.String[] { "SourceIp", });
    internal_static_yandex_cloud_apploadbalancer_v1_LoadBalancingConfig_descriptor =
      getDescriptor().getMessageTypes().get(7);
    internal_static_yandex_cloud_apploadbalancer_v1_LoadBalancingConfig_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_yandex_cloud_apploadbalancer_v1_LoadBalancingConfig_descriptor,
        new java.lang.String[] { "PanicThreshold", "LocalityAwareRoutingPercent", "StrictLocality", "Mode", });
    internal_static_yandex_cloud_apploadbalancer_v1_StreamBackend_descriptor =
      getDescriptor().getMessageTypes().get(8);
    internal_static_yandex_cloud_apploadbalancer_v1_StreamBackend_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_yandex_cloud_apploadbalancer_v1_StreamBackend_descriptor,
        new java.lang.String[] { "Name", "BackendWeight", "LoadBalancingConfig", "Port", "TargetGroups", "Healthchecks", "Tls", "EnableProxyProtocol", "BackendType", });
    internal_static_yandex_cloud_apploadbalancer_v1_HttpBackend_descriptor =
      getDescriptor().getMessageTypes().get(9);
    internal_static_yandex_cloud_apploadbalancer_v1_HttpBackend_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_yandex_cloud_apploadbalancer_v1_HttpBackend_descriptor,
        new java.lang.String[] { "Name", "BackendWeight", "LoadBalancingConfig", "Port", "TargetGroups", "StorageBucket", "Healthchecks", "Tls", "UseHttp2", "BackendType", });
    internal_static_yandex_cloud_apploadbalancer_v1_GrpcBackend_descriptor =
      getDescriptor().getMessageTypes().get(10);
    internal_static_yandex_cloud_apploadbalancer_v1_GrpcBackend_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_yandex_cloud_apploadbalancer_v1_GrpcBackend_descriptor,
        new java.lang.String[] { "Name", "BackendWeight", "LoadBalancingConfig", "Port", "TargetGroups", "Healthchecks", "Tls", "BackendType", });
    internal_static_yandex_cloud_apploadbalancer_v1_TargetGroupsBackend_descriptor =
      getDescriptor().getMessageTypes().get(11);
    internal_static_yandex_cloud_apploadbalancer_v1_TargetGroupsBackend_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_yandex_cloud_apploadbalancer_v1_TargetGroupsBackend_descriptor,
        new java.lang.String[] { "TargetGroupIds", });
    internal_static_yandex_cloud_apploadbalancer_v1_PlaintextTransportSettings_descriptor =
      getDescriptor().getMessageTypes().get(12);
    internal_static_yandex_cloud_apploadbalancer_v1_PlaintextTransportSettings_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_yandex_cloud_apploadbalancer_v1_PlaintextTransportSettings_descriptor,
        new java.lang.String[] { });
    internal_static_yandex_cloud_apploadbalancer_v1_SecureTransportSettings_descriptor =
      getDescriptor().getMessageTypes().get(13);
    internal_static_yandex_cloud_apploadbalancer_v1_SecureTransportSettings_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_yandex_cloud_apploadbalancer_v1_SecureTransportSettings_descriptor,
        new java.lang.String[] { "Sni", "ValidationContext", });
    internal_static_yandex_cloud_apploadbalancer_v1_BackendTls_descriptor =
      getDescriptor().getMessageTypes().get(14);
    internal_static_yandex_cloud_apploadbalancer_v1_BackendTls_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_yandex_cloud_apploadbalancer_v1_BackendTls_descriptor,
        new java.lang.String[] { "Sni", "ValidationContext", });
    internal_static_yandex_cloud_apploadbalancer_v1_StorageBucketBackend_descriptor =
      getDescriptor().getMessageTypes().get(15);
    internal_static_yandex_cloud_apploadbalancer_v1_StorageBucketBackend_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_yandex_cloud_apploadbalancer_v1_StorageBucketBackend_descriptor,
        new java.lang.String[] { "Bucket", });
    internal_static_yandex_cloud_apploadbalancer_v1_HealthCheck_descriptor =
      getDescriptor().getMessageTypes().get(16);
    internal_static_yandex_cloud_apploadbalancer_v1_HealthCheck_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_yandex_cloud_apploadbalancer_v1_HealthCheck_descriptor,
        new java.lang.String[] { "Timeout", "Interval", "IntervalJitterPercent", "HealthyThreshold", "UnhealthyThreshold", "HealthcheckPort", "Stream", "Http", "Grpc", "Plaintext", "Tls", "Healthcheck", "TransportSettings", });
    internal_static_yandex_cloud_apploadbalancer_v1_HealthCheck_StreamHealthCheck_descriptor =
      internal_static_yandex_cloud_apploadbalancer_v1_HealthCheck_descriptor.getNestedTypes().get(0);
    internal_static_yandex_cloud_apploadbalancer_v1_HealthCheck_StreamHealthCheck_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_yandex_cloud_apploadbalancer_v1_HealthCheck_StreamHealthCheck_descriptor,
        new java.lang.String[] { "Send", "Receive", });
    internal_static_yandex_cloud_apploadbalancer_v1_HealthCheck_HttpHealthCheck_descriptor =
      internal_static_yandex_cloud_apploadbalancer_v1_HealthCheck_descriptor.getNestedTypes().get(1);
    internal_static_yandex_cloud_apploadbalancer_v1_HealthCheck_HttpHealthCheck_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_yandex_cloud_apploadbalancer_v1_HealthCheck_HttpHealthCheck_descriptor,
        new java.lang.String[] { "Host", "Path", "UseHttp2", });
    internal_static_yandex_cloud_apploadbalancer_v1_HealthCheck_GrpcHealthCheck_descriptor =
      internal_static_yandex_cloud_apploadbalancer_v1_HealthCheck_descriptor.getNestedTypes().get(2);
    internal_static_yandex_cloud_apploadbalancer_v1_HealthCheck_GrpcHealthCheck_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_yandex_cloud_apploadbalancer_v1_HealthCheck_GrpcHealthCheck_descriptor,
        new java.lang.String[] { "ServiceName", });
    com.google.protobuf.ExtensionRegistry registry =
        com.google.protobuf.ExtensionRegistry.newInstance();
    registry.add(yandex.cloud.api.Validation.exactlyOne);
    registry.add(yandex.cloud.api.Validation.length);
    registry.add(yandex.cloud.api.Validation.pattern);
    registry.add(yandex.cloud.api.Validation.required);
    registry.add(yandex.cloud.api.Validation.size);
    registry.add(yandex.cloud.api.Validation.value);
    com.google.protobuf.Descriptors.FileDescriptor
        .internalUpdateFileDescriptor(descriptor, registry);
    com.google.protobuf.DurationProto.getDescriptor();
    com.google.protobuf.TimestampProto.getDescriptor();
    com.google.protobuf.WrappersProto.getDescriptor();
    yandex.cloud.api.apploadbalancer.v1.PayloadOuterClass.getDescriptor();
    yandex.cloud.api.apploadbalancer.v1.Tls.getDescriptor();
    yandex.cloud.api.Validation.getDescriptor();
  }
  // @@protoc_insertion_point(outer_class_scope)
}
                                                                                                                                                                               © 2015 - 2025 Weber Informatics LLC | Privacy Policy