// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: google/ads/googleads/v14/services/recommendation_service.proto

package com.google.ads.googleads.v14.services;

/**
 * <pre>
 * Information about the operation to apply a recommendation and any parameters
 * to customize it.
 * </pre>
 *
 * Protobuf type {@code google.ads.googleads.v14.services.ApplyRecommendationOperation}
 */
public final class ApplyRecommendationOperation extends
    com.google.protobuf.GeneratedMessageV3 implements
    // @@protoc_insertion_point(message_implements:google.ads.googleads.v14.services.ApplyRecommendationOperation)
    ApplyRecommendationOperationOrBuilder {
private static final long serialVersionUID = 0L;
  // Use ApplyRecommendationOperation.newBuilder() to construct.
  private ApplyRecommendationOperation(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
    super(builder);
  }
  private ApplyRecommendationOperation() {
    resourceName_ = "";
  }

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

  public static final com.google.protobuf.Descriptors.Descriptor
      getDescriptor() {
    return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_descriptor;
  }

  @java.lang.Override
  protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internalGetFieldAccessorTable() {
    return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_fieldAccessorTable
        .ensureFieldAccessorsInitialized(
            com.google.ads.googleads.v14.services.ApplyRecommendationOperation.class, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.Builder.class);
  }

  public interface CampaignBudgetParametersOrBuilder extends
      // @@protoc_insertion_point(interface_extends:google.ads.googleads.v14.services.ApplyRecommendationOperation.CampaignBudgetParameters)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * New budget amount to set for target budget resource. This is a required
     * field.
     * </pre>
     *
     * <code>optional int64 new_budget_amount_micros = 2;</code>
     * @return Whether the newBudgetAmountMicros field is set.
     */
    boolean hasNewBudgetAmountMicros();
    /**
     * <pre>
     * New budget amount to set for target budget resource. This is a required
     * field.
     * </pre>
     *
     * <code>optional int64 new_budget_amount_micros = 2;</code>
     * @return The newBudgetAmountMicros.
     */
    long getNewBudgetAmountMicros();
  }
  /**
   * <pre>
   * Parameters to use when applying a campaign budget recommendation.
   * </pre>
   *
   * Protobuf type {@code google.ads.googleads.v14.services.ApplyRecommendationOperation.CampaignBudgetParameters}
   */
  public static final class CampaignBudgetParameters extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:google.ads.googleads.v14.services.ApplyRecommendationOperation.CampaignBudgetParameters)
      CampaignBudgetParametersOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use CampaignBudgetParameters.newBuilder() to construct.
    private CampaignBudgetParameters(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private CampaignBudgetParameters() {
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_CampaignBudgetParameters_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_CampaignBudgetParameters_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CampaignBudgetParameters.class, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CampaignBudgetParameters.Builder.class);
    }

    private int bitField0_;
    public static final int NEW_BUDGET_AMOUNT_MICROS_FIELD_NUMBER = 2;
    private long newBudgetAmountMicros_ = 0L;
    /**
     * <pre>
     * New budget amount to set for target budget resource. This is a required
     * field.
     * </pre>
     *
     * <code>optional int64 new_budget_amount_micros = 2;</code>
     * @return Whether the newBudgetAmountMicros field is set.
     */
    @java.lang.Override
    public boolean hasNewBudgetAmountMicros() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * New budget amount to set for target budget resource. This is a required
     * field.
     * </pre>
     *
     * <code>optional int64 new_budget_amount_micros = 2;</code>
     * @return The newBudgetAmountMicros.
     */
    @java.lang.Override
    public long getNewBudgetAmountMicros() {
      return newBudgetAmountMicros_;
    }

    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 (((bitField0_ & 0x00000001) != 0)) {
        output.writeInt64(2, newBudgetAmountMicros_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(2, newBudgetAmountMicros_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CampaignBudgetParameters)) {
        return super.equals(obj);
      }
      com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CampaignBudgetParameters other = (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CampaignBudgetParameters) obj;

      if (hasNewBudgetAmountMicros() != other.hasNewBudgetAmountMicros()) return false;
      if (hasNewBudgetAmountMicros()) {
        if (getNewBudgetAmountMicros()
            != other.getNewBudgetAmountMicros()) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

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

    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CampaignBudgetParameters parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CampaignBudgetParameters parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CampaignBudgetParameters parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CampaignBudgetParameters parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CampaignBudgetParameters parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CampaignBudgetParameters parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CampaignBudgetParameters parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CampaignBudgetParameters parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CampaignBudgetParameters parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CampaignBudgetParameters parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CampaignBudgetParameters parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CampaignBudgetParameters parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CampaignBudgetParameters prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Parameters to use when applying a campaign budget recommendation.
     * </pre>
     *
     * Protobuf type {@code google.ads.googleads.v14.services.ApplyRecommendationOperation.CampaignBudgetParameters}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:google.ads.googleads.v14.services.ApplyRecommendationOperation.CampaignBudgetParameters)
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CampaignBudgetParametersOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_CampaignBudgetParameters_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_CampaignBudgetParameters_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CampaignBudgetParameters.class, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CampaignBudgetParameters.Builder.class);
      }

      // Construct using com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CampaignBudgetParameters.newBuilder()
      private Builder() {

      }

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

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

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_CampaignBudgetParameters_descriptor;
      }

      @java.lang.Override
      public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CampaignBudgetParameters getDefaultInstanceForType() {
        return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CampaignBudgetParameters.getDefaultInstance();
      }

      @java.lang.Override
      public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CampaignBudgetParameters build() {
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CampaignBudgetParameters result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CampaignBudgetParameters buildPartial() {
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CampaignBudgetParameters result = new com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CampaignBudgetParameters(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CampaignBudgetParameters result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.newBudgetAmountMicros_ = newBudgetAmountMicros_;
          to_bitField0_ |= 0x00000001;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CampaignBudgetParameters) {
          return mergeFrom((com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CampaignBudgetParameters)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CampaignBudgetParameters other) {
        if (other == com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CampaignBudgetParameters.getDefaultInstance()) return this;
        if (other.hasNewBudgetAmountMicros()) {
          setNewBudgetAmountMicros(other.getNewBudgetAmountMicros());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 16: {
                newBudgetAmountMicros_ = input.readInt64();
                bitField0_ |= 0x00000001;
                break;
              } // case 16
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private long newBudgetAmountMicros_ ;
      /**
       * <pre>
       * New budget amount to set for target budget resource. This is a required
       * field.
       * </pre>
       *
       * <code>optional int64 new_budget_amount_micros = 2;</code>
       * @return Whether the newBudgetAmountMicros field is set.
       */
      @java.lang.Override
      public boolean hasNewBudgetAmountMicros() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * New budget amount to set for target budget resource. This is a required
       * field.
       * </pre>
       *
       * <code>optional int64 new_budget_amount_micros = 2;</code>
       * @return The newBudgetAmountMicros.
       */
      @java.lang.Override
      public long getNewBudgetAmountMicros() {
        return newBudgetAmountMicros_;
      }
      /**
       * <pre>
       * New budget amount to set for target budget resource. This is a required
       * field.
       * </pre>
       *
       * <code>optional int64 new_budget_amount_micros = 2;</code>
       * @param value The newBudgetAmountMicros to set.
       * @return This builder for chaining.
       */
      public Builder setNewBudgetAmountMicros(long value) {

        newBudgetAmountMicros_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * New budget amount to set for target budget resource. This is a required
       * field.
       * </pre>
       *
       * <code>optional int64 new_budget_amount_micros = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearNewBudgetAmountMicros() {
        bitField0_ = (bitField0_ & ~0x00000001);
        newBudgetAmountMicros_ = 0L;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:google.ads.googleads.v14.services.ApplyRecommendationOperation.CampaignBudgetParameters)
    }

    // @@protoc_insertion_point(class_scope:google.ads.googleads.v14.services.ApplyRecommendationOperation.CampaignBudgetParameters)
    private static final com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CampaignBudgetParameters DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CampaignBudgetParameters();
    }

    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CampaignBudgetParameters getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CampaignBudgetParameters getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ForecastingSetTargetRoasParametersOrBuilder extends
      // @@protoc_insertion_point(interface_extends:google.ads.googleads.v14.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParameters)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * New target ROAS (revenue per unit of spend) to set for a campaign
     * resource.
     * The value is between 0.01 and 1000.0, inclusive.
     * </pre>
     *
     * <code>optional double target_roas = 1;</code>
     * @return Whether the targetRoas field is set.
     */
    boolean hasTargetRoas();
    /**
     * <pre>
     * New target ROAS (revenue per unit of spend) to set for a campaign
     * resource.
     * The value is between 0.01 and 1000.0, inclusive.
     * </pre>
     *
     * <code>optional double target_roas = 1;</code>
     * @return The targetRoas.
     */
    double getTargetRoas();

    /**
     * <pre>
     * New campaign budget amount to set for a campaign resource.
     * </pre>
     *
     * <code>optional int64 campaign_budget_amount_micros = 2;</code>
     * @return Whether the campaignBudgetAmountMicros field is set.
     */
    boolean hasCampaignBudgetAmountMicros();
    /**
     * <pre>
     * New campaign budget amount to set for a campaign resource.
     * </pre>
     *
     * <code>optional int64 campaign_budget_amount_micros = 2;</code>
     * @return The campaignBudgetAmountMicros.
     */
    long getCampaignBudgetAmountMicros();
  }
  /**
   * <pre>
   * Parameters to use when applying a forecasting set target roas
   * recommendation.
   * </pre>
   *
   * Protobuf type {@code google.ads.googleads.v14.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParameters}
   */
  public static final class ForecastingSetTargetRoasParameters extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:google.ads.googleads.v14.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParameters)
      ForecastingSetTargetRoasParametersOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ForecastingSetTargetRoasParameters.newBuilder() to construct.
    private ForecastingSetTargetRoasParameters(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ForecastingSetTargetRoasParameters() {
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_ForecastingSetTargetRoasParameters_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_ForecastingSetTargetRoasParameters_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParameters.class, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParameters.Builder.class);
    }

    private int bitField0_;
    public static final int TARGET_ROAS_FIELD_NUMBER = 1;
    private double targetRoas_ = 0D;
    /**
     * <pre>
     * New target ROAS (revenue per unit of spend) to set for a campaign
     * resource.
     * The value is between 0.01 and 1000.0, inclusive.
     * </pre>
     *
     * <code>optional double target_roas = 1;</code>
     * @return Whether the targetRoas field is set.
     */
    @java.lang.Override
    public boolean hasTargetRoas() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * New target ROAS (revenue per unit of spend) to set for a campaign
     * resource.
     * The value is between 0.01 and 1000.0, inclusive.
     * </pre>
     *
     * <code>optional double target_roas = 1;</code>
     * @return The targetRoas.
     */
    @java.lang.Override
    public double getTargetRoas() {
      return targetRoas_;
    }

    public static final int CAMPAIGN_BUDGET_AMOUNT_MICROS_FIELD_NUMBER = 2;
    private long campaignBudgetAmountMicros_ = 0L;
    /**
     * <pre>
     * New campaign budget amount to set for a campaign resource.
     * </pre>
     *
     * <code>optional int64 campaign_budget_amount_micros = 2;</code>
     * @return Whether the campaignBudgetAmountMicros field is set.
     */
    @java.lang.Override
    public boolean hasCampaignBudgetAmountMicros() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * New campaign budget amount to set for a campaign resource.
     * </pre>
     *
     * <code>optional int64 campaign_budget_amount_micros = 2;</code>
     * @return The campaignBudgetAmountMicros.
     */
    @java.lang.Override
    public long getCampaignBudgetAmountMicros() {
      return campaignBudgetAmountMicros_;
    }

    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 (((bitField0_ & 0x00000001) != 0)) {
        output.writeDouble(1, targetRoas_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeInt64(2, campaignBudgetAmountMicros_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeDoubleSize(1, targetRoas_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(2, campaignBudgetAmountMicros_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParameters)) {
        return super.equals(obj);
      }
      com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParameters other = (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParameters) obj;

      if (hasTargetRoas() != other.hasTargetRoas()) return false;
      if (hasTargetRoas()) {
        if (java.lang.Double.doubleToLongBits(getTargetRoas())
            != java.lang.Double.doubleToLongBits(
                other.getTargetRoas())) return false;
      }
      if (hasCampaignBudgetAmountMicros() != other.hasCampaignBudgetAmountMicros()) return false;
      if (hasCampaignBudgetAmountMicros()) {
        if (getCampaignBudgetAmountMicros()
            != other.getCampaignBudgetAmountMicros()) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasTargetRoas()) {
        hash = (37 * hash) + TARGET_ROAS_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            java.lang.Double.doubleToLongBits(getTargetRoas()));
      }
      if (hasCampaignBudgetAmountMicros()) {
        hash = (37 * hash) + CAMPAIGN_BUDGET_AMOUNT_MICROS_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getCampaignBudgetAmountMicros());
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParameters parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParameters parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParameters parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParameters parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParameters parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParameters parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParameters parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParameters parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParameters parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParameters parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParameters parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParameters parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParameters prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Parameters to use when applying a forecasting set target roas
     * recommendation.
     * </pre>
     *
     * Protobuf type {@code google.ads.googleads.v14.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParameters}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:google.ads.googleads.v14.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParameters)
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParametersOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_ForecastingSetTargetRoasParameters_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_ForecastingSetTargetRoasParameters_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParameters.class, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParameters.Builder.class);
      }

      // Construct using com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParameters.newBuilder()
      private Builder() {

      }

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

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

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_ForecastingSetTargetRoasParameters_descriptor;
      }

      @java.lang.Override
      public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParameters getDefaultInstanceForType() {
        return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParameters.getDefaultInstance();
      }

      @java.lang.Override
      public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParameters build() {
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParameters result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParameters buildPartial() {
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParameters result = new com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParameters(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParameters result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.targetRoas_ = targetRoas_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.campaignBudgetAmountMicros_ = campaignBudgetAmountMicros_;
          to_bitField0_ |= 0x00000002;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParameters) {
          return mergeFrom((com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParameters)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParameters other) {
        if (other == com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParameters.getDefaultInstance()) return this;
        if (other.hasTargetRoas()) {
          setTargetRoas(other.getTargetRoas());
        }
        if (other.hasCampaignBudgetAmountMicros()) {
          setCampaignBudgetAmountMicros(other.getCampaignBudgetAmountMicros());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 9: {
                targetRoas_ = input.readDouble();
                bitField0_ |= 0x00000001;
                break;
              } // case 9
              case 16: {
                campaignBudgetAmountMicros_ = input.readInt64();
                bitField0_ |= 0x00000002;
                break;
              } // case 16
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private double targetRoas_ ;
      /**
       * <pre>
       * New target ROAS (revenue per unit of spend) to set for a campaign
       * resource.
       * The value is between 0.01 and 1000.0, inclusive.
       * </pre>
       *
       * <code>optional double target_roas = 1;</code>
       * @return Whether the targetRoas field is set.
       */
      @java.lang.Override
      public boolean hasTargetRoas() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * New target ROAS (revenue per unit of spend) to set for a campaign
       * resource.
       * The value is between 0.01 and 1000.0, inclusive.
       * </pre>
       *
       * <code>optional double target_roas = 1;</code>
       * @return The targetRoas.
       */
      @java.lang.Override
      public double getTargetRoas() {
        return targetRoas_;
      }
      /**
       * <pre>
       * New target ROAS (revenue per unit of spend) to set for a campaign
       * resource.
       * The value is between 0.01 and 1000.0, inclusive.
       * </pre>
       *
       * <code>optional double target_roas = 1;</code>
       * @param value The targetRoas to set.
       * @return This builder for chaining.
       */
      public Builder setTargetRoas(double value) {

        targetRoas_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * New target ROAS (revenue per unit of spend) to set for a campaign
       * resource.
       * The value is between 0.01 and 1000.0, inclusive.
       * </pre>
       *
       * <code>optional double target_roas = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearTargetRoas() {
        bitField0_ = (bitField0_ & ~0x00000001);
        targetRoas_ = 0D;
        onChanged();
        return this;
      }

      private long campaignBudgetAmountMicros_ ;
      /**
       * <pre>
       * New campaign budget amount to set for a campaign resource.
       * </pre>
       *
       * <code>optional int64 campaign_budget_amount_micros = 2;</code>
       * @return Whether the campaignBudgetAmountMicros field is set.
       */
      @java.lang.Override
      public boolean hasCampaignBudgetAmountMicros() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * New campaign budget amount to set for a campaign resource.
       * </pre>
       *
       * <code>optional int64 campaign_budget_amount_micros = 2;</code>
       * @return The campaignBudgetAmountMicros.
       */
      @java.lang.Override
      public long getCampaignBudgetAmountMicros() {
        return campaignBudgetAmountMicros_;
      }
      /**
       * <pre>
       * New campaign budget amount to set for a campaign resource.
       * </pre>
       *
       * <code>optional int64 campaign_budget_amount_micros = 2;</code>
       * @param value The campaignBudgetAmountMicros to set.
       * @return This builder for chaining.
       */
      public Builder setCampaignBudgetAmountMicros(long value) {

        campaignBudgetAmountMicros_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * New campaign budget amount to set for a campaign resource.
       * </pre>
       *
       * <code>optional int64 campaign_budget_amount_micros = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearCampaignBudgetAmountMicros() {
        bitField0_ = (bitField0_ & ~0x00000002);
        campaignBudgetAmountMicros_ = 0L;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:google.ads.googleads.v14.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParameters)
    }

    // @@protoc_insertion_point(class_scope:google.ads.googleads.v14.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParameters)
    private static final com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParameters DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParameters();
    }

    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParameters getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParameters getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TextAdParametersOrBuilder extends
      // @@protoc_insertion_point(interface_extends:google.ads.googleads.v14.services.ApplyRecommendationOperation.TextAdParameters)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * New ad to add to recommended ad group. All necessary fields need to be
     * set in this message. This is a required field.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.resources.Ad ad = 1;</code>
     * @return Whether the ad field is set.
     */
    boolean hasAd();
    /**
     * <pre>
     * New ad to add to recommended ad group. All necessary fields need to be
     * set in this message. This is a required field.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.resources.Ad ad = 1;</code>
     * @return The ad.
     */
    com.google.ads.googleads.v14.resources.Ad getAd();
    /**
     * <pre>
     * New ad to add to recommended ad group. All necessary fields need to be
     * set in this message. This is a required field.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.resources.Ad ad = 1;</code>
     */
    com.google.ads.googleads.v14.resources.AdOrBuilder getAdOrBuilder();
  }
  /**
   * <pre>
   * Parameters to use when applying a text ad recommendation.
   * </pre>
   *
   * Protobuf type {@code google.ads.googleads.v14.services.ApplyRecommendationOperation.TextAdParameters}
   */
  public static final class TextAdParameters extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:google.ads.googleads.v14.services.ApplyRecommendationOperation.TextAdParameters)
      TextAdParametersOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use TextAdParameters.newBuilder() to construct.
    private TextAdParameters(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private TextAdParameters() {
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_TextAdParameters_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_TextAdParameters_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TextAdParameters.class, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TextAdParameters.Builder.class);
    }

    public static final int AD_FIELD_NUMBER = 1;
    private com.google.ads.googleads.v14.resources.Ad ad_;
    /**
     * <pre>
     * New ad to add to recommended ad group. All necessary fields need to be
     * set in this message. This is a required field.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.resources.Ad ad = 1;</code>
     * @return Whether the ad field is set.
     */
    @java.lang.Override
    public boolean hasAd() {
      return ad_ != null;
    }
    /**
     * <pre>
     * New ad to add to recommended ad group. All necessary fields need to be
     * set in this message. This is a required field.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.resources.Ad ad = 1;</code>
     * @return The ad.
     */
    @java.lang.Override
    public com.google.ads.googleads.v14.resources.Ad getAd() {
      return ad_ == null ? com.google.ads.googleads.v14.resources.Ad.getDefaultInstance() : ad_;
    }
    /**
     * <pre>
     * New ad to add to recommended ad group. All necessary fields need to be
     * set in this message. This is a required field.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.resources.Ad ad = 1;</code>
     */
    @java.lang.Override
    public com.google.ads.googleads.v14.resources.AdOrBuilder getAdOrBuilder() {
      return ad_ == null ? com.google.ads.googleads.v14.resources.Ad.getDefaultInstance() : ad_;
    }

    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 (ad_ != null) {
        output.writeMessage(1, getAd());
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (ad_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getAd());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TextAdParameters)) {
        return super.equals(obj);
      }
      com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TextAdParameters other = (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TextAdParameters) obj;

      if (hasAd() != other.hasAd()) return false;
      if (hasAd()) {
        if (!getAd()
            .equals(other.getAd())) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

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

    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TextAdParameters parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TextAdParameters parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TextAdParameters parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TextAdParameters parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TextAdParameters parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TextAdParameters parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TextAdParameters parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TextAdParameters parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TextAdParameters parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TextAdParameters parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TextAdParameters parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TextAdParameters parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TextAdParameters prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Parameters to use when applying a text ad recommendation.
     * </pre>
     *
     * Protobuf type {@code google.ads.googleads.v14.services.ApplyRecommendationOperation.TextAdParameters}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:google.ads.googleads.v14.services.ApplyRecommendationOperation.TextAdParameters)
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TextAdParametersOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_TextAdParameters_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_TextAdParameters_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TextAdParameters.class, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TextAdParameters.Builder.class);
      }

      // Construct using com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TextAdParameters.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        ad_ = null;
        if (adBuilder_ != null) {
          adBuilder_.dispose();
          adBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_TextAdParameters_descriptor;
      }

      @java.lang.Override
      public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TextAdParameters getDefaultInstanceForType() {
        return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TextAdParameters.getDefaultInstance();
      }

      @java.lang.Override
      public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TextAdParameters build() {
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TextAdParameters result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TextAdParameters buildPartial() {
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TextAdParameters result = new com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TextAdParameters(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TextAdParameters result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.ad_ = adBuilder_ == null
              ? ad_
              : adBuilder_.build();
        }
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TextAdParameters) {
          return mergeFrom((com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TextAdParameters)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TextAdParameters other) {
        if (other == com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TextAdParameters.getDefaultInstance()) return this;
        if (other.hasAd()) {
          mergeAd(other.getAd());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                input.readMessage(
                    getAdFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private com.google.ads.googleads.v14.resources.Ad ad_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.ads.googleads.v14.resources.Ad, com.google.ads.googleads.v14.resources.Ad.Builder, com.google.ads.googleads.v14.resources.AdOrBuilder> adBuilder_;
      /**
       * <pre>
       * New ad to add to recommended ad group. All necessary fields need to be
       * set in this message. This is a required field.
       * </pre>
       *
       * <code>.google.ads.googleads.v14.resources.Ad ad = 1;</code>
       * @return Whether the ad field is set.
       */
      public boolean hasAd() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * New ad to add to recommended ad group. All necessary fields need to be
       * set in this message. This is a required field.
       * </pre>
       *
       * <code>.google.ads.googleads.v14.resources.Ad ad = 1;</code>
       * @return The ad.
       */
      public com.google.ads.googleads.v14.resources.Ad getAd() {
        if (adBuilder_ == null) {
          return ad_ == null ? com.google.ads.googleads.v14.resources.Ad.getDefaultInstance() : ad_;
        } else {
          return adBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * New ad to add to recommended ad group. All necessary fields need to be
       * set in this message. This is a required field.
       * </pre>
       *
       * <code>.google.ads.googleads.v14.resources.Ad ad = 1;</code>
       */
      public Builder setAd(com.google.ads.googleads.v14.resources.Ad value) {
        if (adBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ad_ = value;
        } else {
          adBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * New ad to add to recommended ad group. All necessary fields need to be
       * set in this message. This is a required field.
       * </pre>
       *
       * <code>.google.ads.googleads.v14.resources.Ad ad = 1;</code>
       */
      public Builder setAd(
          com.google.ads.googleads.v14.resources.Ad.Builder builderForValue) {
        if (adBuilder_ == null) {
          ad_ = builderForValue.build();
        } else {
          adBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * New ad to add to recommended ad group. All necessary fields need to be
       * set in this message. This is a required field.
       * </pre>
       *
       * <code>.google.ads.googleads.v14.resources.Ad ad = 1;</code>
       */
      public Builder mergeAd(com.google.ads.googleads.v14.resources.Ad value) {
        if (adBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            ad_ != null &&
            ad_ != com.google.ads.googleads.v14.resources.Ad.getDefaultInstance()) {
            getAdBuilder().mergeFrom(value);
          } else {
            ad_ = value;
          }
        } else {
          adBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * New ad to add to recommended ad group. All necessary fields need to be
       * set in this message. This is a required field.
       * </pre>
       *
       * <code>.google.ads.googleads.v14.resources.Ad ad = 1;</code>
       */
      public Builder clearAd() {
        bitField0_ = (bitField0_ & ~0x00000001);
        ad_ = null;
        if (adBuilder_ != null) {
          adBuilder_.dispose();
          adBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * New ad to add to recommended ad group. All necessary fields need to be
       * set in this message. This is a required field.
       * </pre>
       *
       * <code>.google.ads.googleads.v14.resources.Ad ad = 1;</code>
       */
      public com.google.ads.googleads.v14.resources.Ad.Builder getAdBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getAdFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * New ad to add to recommended ad group. All necessary fields need to be
       * set in this message. This is a required field.
       * </pre>
       *
       * <code>.google.ads.googleads.v14.resources.Ad ad = 1;</code>
       */
      public com.google.ads.googleads.v14.resources.AdOrBuilder getAdOrBuilder() {
        if (adBuilder_ != null) {
          return adBuilder_.getMessageOrBuilder();
        } else {
          return ad_ == null ?
              com.google.ads.googleads.v14.resources.Ad.getDefaultInstance() : ad_;
        }
      }
      /**
       * <pre>
       * New ad to add to recommended ad group. All necessary fields need to be
       * set in this message. This is a required field.
       * </pre>
       *
       * <code>.google.ads.googleads.v14.resources.Ad ad = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.ads.googleads.v14.resources.Ad, com.google.ads.googleads.v14.resources.Ad.Builder, com.google.ads.googleads.v14.resources.AdOrBuilder> 
          getAdFieldBuilder() {
        if (adBuilder_ == null) {
          adBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.ads.googleads.v14.resources.Ad, com.google.ads.googleads.v14.resources.Ad.Builder, com.google.ads.googleads.v14.resources.AdOrBuilder>(
                  getAd(),
                  getParentForChildren(),
                  isClean());
          ad_ = null;
        }
        return adBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:google.ads.googleads.v14.services.ApplyRecommendationOperation.TextAdParameters)
    }

    // @@protoc_insertion_point(class_scope:google.ads.googleads.v14.services.ApplyRecommendationOperation.TextAdParameters)
    private static final com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TextAdParameters DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TextAdParameters();
    }

    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TextAdParameters getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TextAdParameters getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface KeywordParametersOrBuilder extends
      // @@protoc_insertion_point(interface_extends:google.ads.googleads.v14.services.ApplyRecommendationOperation.KeywordParameters)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * The ad group resource to add keyword to. This is a required field.
     * </pre>
     *
     * <code>optional string ad_group = 4;</code>
     * @return Whether the adGroup field is set.
     */
    boolean hasAdGroup();
    /**
     * <pre>
     * The ad group resource to add keyword to. This is a required field.
     * </pre>
     *
     * <code>optional string ad_group = 4;</code>
     * @return The adGroup.
     */
    java.lang.String getAdGroup();
    /**
     * <pre>
     * The ad group resource to add keyword to. This is a required field.
     * </pre>
     *
     * <code>optional string ad_group = 4;</code>
     * @return The bytes for adGroup.
     */
    com.google.protobuf.ByteString
        getAdGroupBytes();

    /**
     * <pre>
     * The match type of the keyword. This is a required field.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.enums.KeywordMatchTypeEnum.KeywordMatchType match_type = 2;</code>
     * @return The enum numeric value on the wire for matchType.
     */
    int getMatchTypeValue();
    /**
     * <pre>
     * The match type of the keyword. This is a required field.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.enums.KeywordMatchTypeEnum.KeywordMatchType match_type = 2;</code>
     * @return The matchType.
     */
    com.google.ads.googleads.v14.enums.KeywordMatchTypeEnum.KeywordMatchType getMatchType();

    /**
     * <pre>
     * Optional, CPC bid to set for the keyword. If not set, keyword will use
     * bid based on bidding strategy used by target ad group.
     * </pre>
     *
     * <code>optional int64 cpc_bid_micros = 5;</code>
     * @return Whether the cpcBidMicros field is set.
     */
    boolean hasCpcBidMicros();
    /**
     * <pre>
     * Optional, CPC bid to set for the keyword. If not set, keyword will use
     * bid based on bidding strategy used by target ad group.
     * </pre>
     *
     * <code>optional int64 cpc_bid_micros = 5;</code>
     * @return The cpcBidMicros.
     */
    long getCpcBidMicros();
  }
  /**
   * <pre>
   * Parameters to use when applying keyword recommendation.
   * </pre>
   *
   * Protobuf type {@code google.ads.googleads.v14.services.ApplyRecommendationOperation.KeywordParameters}
   */
  public static final class KeywordParameters extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:google.ads.googleads.v14.services.ApplyRecommendationOperation.KeywordParameters)
      KeywordParametersOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use KeywordParameters.newBuilder() to construct.
    private KeywordParameters(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private KeywordParameters() {
      adGroup_ = "";
      matchType_ = 0;
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_KeywordParameters_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_KeywordParameters_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.ads.googleads.v14.services.ApplyRecommendationOperation.KeywordParameters.class, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.KeywordParameters.Builder.class);
    }

    private int bitField0_;
    public static final int AD_GROUP_FIELD_NUMBER = 4;
    @SuppressWarnings("serial")
    private volatile java.lang.Object adGroup_ = "";
    /**
     * <pre>
     * The ad group resource to add keyword to. This is a required field.
     * </pre>
     *
     * <code>optional string ad_group = 4;</code>
     * @return Whether the adGroup field is set.
     */
    @java.lang.Override
    public boolean hasAdGroup() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * The ad group resource to add keyword to. This is a required field.
     * </pre>
     *
     * <code>optional string ad_group = 4;</code>
     * @return The adGroup.
     */
    @java.lang.Override
    public java.lang.String getAdGroup() {
      java.lang.Object ref = adGroup_;
      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();
        adGroup_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * The ad group resource to add keyword to. This is a required field.
     * </pre>
     *
     * <code>optional string ad_group = 4;</code>
     * @return The bytes for adGroup.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getAdGroupBytes() {
      java.lang.Object ref = adGroup_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        adGroup_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int MATCH_TYPE_FIELD_NUMBER = 2;
    private int matchType_ = 0;
    /**
     * <pre>
     * The match type of the keyword. This is a required field.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.enums.KeywordMatchTypeEnum.KeywordMatchType match_type = 2;</code>
     * @return The enum numeric value on the wire for matchType.
     */
    @java.lang.Override public int getMatchTypeValue() {
      return matchType_;
    }
    /**
     * <pre>
     * The match type of the keyword. This is a required field.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.enums.KeywordMatchTypeEnum.KeywordMatchType match_type = 2;</code>
     * @return The matchType.
     */
    @java.lang.Override public com.google.ads.googleads.v14.enums.KeywordMatchTypeEnum.KeywordMatchType getMatchType() {
      com.google.ads.googleads.v14.enums.KeywordMatchTypeEnum.KeywordMatchType result = com.google.ads.googleads.v14.enums.KeywordMatchTypeEnum.KeywordMatchType.forNumber(matchType_);
      return result == null ? com.google.ads.googleads.v14.enums.KeywordMatchTypeEnum.KeywordMatchType.UNRECOGNIZED : result;
    }

    public static final int CPC_BID_MICROS_FIELD_NUMBER = 5;
    private long cpcBidMicros_ = 0L;
    /**
     * <pre>
     * Optional, CPC bid to set for the keyword. If not set, keyword will use
     * bid based on bidding strategy used by target ad group.
     * </pre>
     *
     * <code>optional int64 cpc_bid_micros = 5;</code>
     * @return Whether the cpcBidMicros field is set.
     */
    @java.lang.Override
    public boolean hasCpcBidMicros() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * Optional, CPC bid to set for the keyword. If not set, keyword will use
     * bid based on bidding strategy used by target ad group.
     * </pre>
     *
     * <code>optional int64 cpc_bid_micros = 5;</code>
     * @return The cpcBidMicros.
     */
    @java.lang.Override
    public long getCpcBidMicros() {
      return cpcBidMicros_;
    }

    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 (matchType_ != com.google.ads.googleads.v14.enums.KeywordMatchTypeEnum.KeywordMatchType.UNSPECIFIED.getNumber()) {
        output.writeEnum(2, matchType_);
      }
      if (((bitField0_ & 0x00000001) != 0)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, adGroup_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeInt64(5, cpcBidMicros_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (matchType_ != com.google.ads.googleads.v14.enums.KeywordMatchTypeEnum.KeywordMatchType.UNSPECIFIED.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(2, matchType_);
      }
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, adGroup_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(5, cpcBidMicros_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.google.ads.googleads.v14.services.ApplyRecommendationOperation.KeywordParameters)) {
        return super.equals(obj);
      }
      com.google.ads.googleads.v14.services.ApplyRecommendationOperation.KeywordParameters other = (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.KeywordParameters) obj;

      if (hasAdGroup() != other.hasAdGroup()) return false;
      if (hasAdGroup()) {
        if (!getAdGroup()
            .equals(other.getAdGroup())) return false;
      }
      if (matchType_ != other.matchType_) return false;
      if (hasCpcBidMicros() != other.hasCpcBidMicros()) return false;
      if (hasCpcBidMicros()) {
        if (getCpcBidMicros()
            != other.getCpcBidMicros()) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasAdGroup()) {
        hash = (37 * hash) + AD_GROUP_FIELD_NUMBER;
        hash = (53 * hash) + getAdGroup().hashCode();
      }
      hash = (37 * hash) + MATCH_TYPE_FIELD_NUMBER;
      hash = (53 * hash) + matchType_;
      if (hasCpcBidMicros()) {
        hash = (37 * hash) + CPC_BID_MICROS_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getCpcBidMicros());
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.KeywordParameters parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.KeywordParameters parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.KeywordParameters parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.KeywordParameters parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.KeywordParameters parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.KeywordParameters parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.KeywordParameters parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.KeywordParameters parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.KeywordParameters parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.KeywordParameters parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.KeywordParameters parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.KeywordParameters parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.KeywordParameters prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Parameters to use when applying keyword recommendation.
     * </pre>
     *
     * Protobuf type {@code google.ads.googleads.v14.services.ApplyRecommendationOperation.KeywordParameters}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:google.ads.googleads.v14.services.ApplyRecommendationOperation.KeywordParameters)
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.KeywordParametersOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_KeywordParameters_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_KeywordParameters_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.ads.googleads.v14.services.ApplyRecommendationOperation.KeywordParameters.class, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.KeywordParameters.Builder.class);
      }

      // Construct using com.google.ads.googleads.v14.services.ApplyRecommendationOperation.KeywordParameters.newBuilder()
      private Builder() {

      }

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

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

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_KeywordParameters_descriptor;
      }

      @java.lang.Override
      public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.KeywordParameters getDefaultInstanceForType() {
        return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.KeywordParameters.getDefaultInstance();
      }

      @java.lang.Override
      public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.KeywordParameters build() {
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.KeywordParameters result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.KeywordParameters buildPartial() {
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.KeywordParameters result = new com.google.ads.googleads.v14.services.ApplyRecommendationOperation.KeywordParameters(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.KeywordParameters result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.adGroup_ = adGroup_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.matchType_ = matchType_;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.cpcBidMicros_ = cpcBidMicros_;
          to_bitField0_ |= 0x00000002;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.ads.googleads.v14.services.ApplyRecommendationOperation.KeywordParameters) {
          return mergeFrom((com.google.ads.googleads.v14.services.ApplyRecommendationOperation.KeywordParameters)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.KeywordParameters other) {
        if (other == com.google.ads.googleads.v14.services.ApplyRecommendationOperation.KeywordParameters.getDefaultInstance()) return this;
        if (other.hasAdGroup()) {
          adGroup_ = other.adGroup_;
          bitField0_ |= 0x00000001;
          onChanged();
        }
        if (other.matchType_ != 0) {
          setMatchTypeValue(other.getMatchTypeValue());
        }
        if (other.hasCpcBidMicros()) {
          setCpcBidMicros(other.getCpcBidMicros());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 16: {
                matchType_ = input.readEnum();
                bitField0_ |= 0x00000002;
                break;
              } // case 16
              case 34: {
                adGroup_ = input.readStringRequireUtf8();
                bitField0_ |= 0x00000001;
                break;
              } // case 34
              case 40: {
                cpcBidMicros_ = input.readInt64();
                bitField0_ |= 0x00000004;
                break;
              } // case 40
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.lang.Object adGroup_ = "";
      /**
       * <pre>
       * The ad group resource to add keyword to. This is a required field.
       * </pre>
       *
       * <code>optional string ad_group = 4;</code>
       * @return Whether the adGroup field is set.
       */
      public boolean hasAdGroup() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * The ad group resource to add keyword to. This is a required field.
       * </pre>
       *
       * <code>optional string ad_group = 4;</code>
       * @return The adGroup.
       */
      public java.lang.String getAdGroup() {
        java.lang.Object ref = adGroup_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          adGroup_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The ad group resource to add keyword to. This is a required field.
       * </pre>
       *
       * <code>optional string ad_group = 4;</code>
       * @return The bytes for adGroup.
       */
      public com.google.protobuf.ByteString
          getAdGroupBytes() {
        java.lang.Object ref = adGroup_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          adGroup_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The ad group resource to add keyword to. This is a required field.
       * </pre>
       *
       * <code>optional string ad_group = 4;</code>
       * @param value The adGroup to set.
       * @return This builder for chaining.
       */
      public Builder setAdGroup(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        adGroup_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The ad group resource to add keyword to. This is a required field.
       * </pre>
       *
       * <code>optional string ad_group = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearAdGroup() {
        adGroup_ = getDefaultInstance().getAdGroup();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The ad group resource to add keyword to. This is a required field.
       * </pre>
       *
       * <code>optional string ad_group = 4;</code>
       * @param value The bytes for adGroup to set.
       * @return This builder for chaining.
       */
      public Builder setAdGroupBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        adGroup_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }

      private int matchType_ = 0;
      /**
       * <pre>
       * The match type of the keyword. This is a required field.
       * </pre>
       *
       * <code>.google.ads.googleads.v14.enums.KeywordMatchTypeEnum.KeywordMatchType match_type = 2;</code>
       * @return The enum numeric value on the wire for matchType.
       */
      @java.lang.Override public int getMatchTypeValue() {
        return matchType_;
      }
      /**
       * <pre>
       * The match type of the keyword. This is a required field.
       * </pre>
       *
       * <code>.google.ads.googleads.v14.enums.KeywordMatchTypeEnum.KeywordMatchType match_type = 2;</code>
       * @param value The enum numeric value on the wire for matchType to set.
       * @return This builder for chaining.
       */
      public Builder setMatchTypeValue(int value) {
        matchType_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The match type of the keyword. This is a required field.
       * </pre>
       *
       * <code>.google.ads.googleads.v14.enums.KeywordMatchTypeEnum.KeywordMatchType match_type = 2;</code>
       * @return The matchType.
       */
      @java.lang.Override
      public com.google.ads.googleads.v14.enums.KeywordMatchTypeEnum.KeywordMatchType getMatchType() {
        com.google.ads.googleads.v14.enums.KeywordMatchTypeEnum.KeywordMatchType result = com.google.ads.googleads.v14.enums.KeywordMatchTypeEnum.KeywordMatchType.forNumber(matchType_);
        return result == null ? com.google.ads.googleads.v14.enums.KeywordMatchTypeEnum.KeywordMatchType.UNRECOGNIZED : result;
      }
      /**
       * <pre>
       * The match type of the keyword. This is a required field.
       * </pre>
       *
       * <code>.google.ads.googleads.v14.enums.KeywordMatchTypeEnum.KeywordMatchType match_type = 2;</code>
       * @param value The matchType to set.
       * @return This builder for chaining.
       */
      public Builder setMatchType(com.google.ads.googleads.v14.enums.KeywordMatchTypeEnum.KeywordMatchType value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000002;
        matchType_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The match type of the keyword. This is a required field.
       * </pre>
       *
       * <code>.google.ads.googleads.v14.enums.KeywordMatchTypeEnum.KeywordMatchType match_type = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearMatchType() {
        bitField0_ = (bitField0_ & ~0x00000002);
        matchType_ = 0;
        onChanged();
        return this;
      }

      private long cpcBidMicros_ ;
      /**
       * <pre>
       * Optional, CPC bid to set for the keyword. If not set, keyword will use
       * bid based on bidding strategy used by target ad group.
       * </pre>
       *
       * <code>optional int64 cpc_bid_micros = 5;</code>
       * @return Whether the cpcBidMicros field is set.
       */
      @java.lang.Override
      public boolean hasCpcBidMicros() {
        return ((bitField0_ & 0x00000004) != 0);
      }
      /**
       * <pre>
       * Optional, CPC bid to set for the keyword. If not set, keyword will use
       * bid based on bidding strategy used by target ad group.
       * </pre>
       *
       * <code>optional int64 cpc_bid_micros = 5;</code>
       * @return The cpcBidMicros.
       */
      @java.lang.Override
      public long getCpcBidMicros() {
        return cpcBidMicros_;
      }
      /**
       * <pre>
       * Optional, CPC bid to set for the keyword. If not set, keyword will use
       * bid based on bidding strategy used by target ad group.
       * </pre>
       *
       * <code>optional int64 cpc_bid_micros = 5;</code>
       * @param value The cpcBidMicros to set.
       * @return This builder for chaining.
       */
      public Builder setCpcBidMicros(long value) {

        cpcBidMicros_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Optional, CPC bid to set for the keyword. If not set, keyword will use
       * bid based on bidding strategy used by target ad group.
       * </pre>
       *
       * <code>optional int64 cpc_bid_micros = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearCpcBidMicros() {
        bitField0_ = (bitField0_ & ~0x00000004);
        cpcBidMicros_ = 0L;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:google.ads.googleads.v14.services.ApplyRecommendationOperation.KeywordParameters)
    }

    // @@protoc_insertion_point(class_scope:google.ads.googleads.v14.services.ApplyRecommendationOperation.KeywordParameters)
    private static final com.google.ads.googleads.v14.services.ApplyRecommendationOperation.KeywordParameters DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.ads.googleads.v14.services.ApplyRecommendationOperation.KeywordParameters();
    }

    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.KeywordParameters getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.KeywordParameters getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TargetCpaOptInParametersOrBuilder extends
      // @@protoc_insertion_point(interface_extends:google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetCpaOptInParameters)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Average CPA to use for Target CPA bidding strategy. This is a required
     * field.
     * </pre>
     *
     * <code>optional int64 target_cpa_micros = 3;</code>
     * @return Whether the targetCpaMicros field is set.
     */
    boolean hasTargetCpaMicros();
    /**
     * <pre>
     * Average CPA to use for Target CPA bidding strategy. This is a required
     * field.
     * </pre>
     *
     * <code>optional int64 target_cpa_micros = 3;</code>
     * @return The targetCpaMicros.
     */
    long getTargetCpaMicros();

    /**
     * <pre>
     * Optional, budget amount to set for the campaign.
     * </pre>
     *
     * <code>optional int64 new_campaign_budget_amount_micros = 4;</code>
     * @return Whether the newCampaignBudgetAmountMicros field is set.
     */
    boolean hasNewCampaignBudgetAmountMicros();
    /**
     * <pre>
     * Optional, budget amount to set for the campaign.
     * </pre>
     *
     * <code>optional int64 new_campaign_budget_amount_micros = 4;</code>
     * @return The newCampaignBudgetAmountMicros.
     */
    long getNewCampaignBudgetAmountMicros();
  }
  /**
   * <pre>
   * Parameters to use when applying Target CPA recommendation.
   * </pre>
   *
   * Protobuf type {@code google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetCpaOptInParameters}
   */
  public static final class TargetCpaOptInParameters extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetCpaOptInParameters)
      TargetCpaOptInParametersOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use TargetCpaOptInParameters.newBuilder() to construct.
    private TargetCpaOptInParameters(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private TargetCpaOptInParameters() {
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_TargetCpaOptInParameters_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_TargetCpaOptInParameters_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetCpaOptInParameters.class, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetCpaOptInParameters.Builder.class);
    }

    private int bitField0_;
    public static final int TARGET_CPA_MICROS_FIELD_NUMBER = 3;
    private long targetCpaMicros_ = 0L;
    /**
     * <pre>
     * Average CPA to use for Target CPA bidding strategy. This is a required
     * field.
     * </pre>
     *
     * <code>optional int64 target_cpa_micros = 3;</code>
     * @return Whether the targetCpaMicros field is set.
     */
    @java.lang.Override
    public boolean hasTargetCpaMicros() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * Average CPA to use for Target CPA bidding strategy. This is a required
     * field.
     * </pre>
     *
     * <code>optional int64 target_cpa_micros = 3;</code>
     * @return The targetCpaMicros.
     */
    @java.lang.Override
    public long getTargetCpaMicros() {
      return targetCpaMicros_;
    }

    public static final int NEW_CAMPAIGN_BUDGET_AMOUNT_MICROS_FIELD_NUMBER = 4;
    private long newCampaignBudgetAmountMicros_ = 0L;
    /**
     * <pre>
     * Optional, budget amount to set for the campaign.
     * </pre>
     *
     * <code>optional int64 new_campaign_budget_amount_micros = 4;</code>
     * @return Whether the newCampaignBudgetAmountMicros field is set.
     */
    @java.lang.Override
    public boolean hasNewCampaignBudgetAmountMicros() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * Optional, budget amount to set for the campaign.
     * </pre>
     *
     * <code>optional int64 new_campaign_budget_amount_micros = 4;</code>
     * @return The newCampaignBudgetAmountMicros.
     */
    @java.lang.Override
    public long getNewCampaignBudgetAmountMicros() {
      return newCampaignBudgetAmountMicros_;
    }

    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 (((bitField0_ & 0x00000001) != 0)) {
        output.writeInt64(3, targetCpaMicros_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeInt64(4, newCampaignBudgetAmountMicros_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(3, targetCpaMicros_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(4, newCampaignBudgetAmountMicros_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetCpaOptInParameters)) {
        return super.equals(obj);
      }
      com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetCpaOptInParameters other = (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetCpaOptInParameters) obj;

      if (hasTargetCpaMicros() != other.hasTargetCpaMicros()) return false;
      if (hasTargetCpaMicros()) {
        if (getTargetCpaMicros()
            != other.getTargetCpaMicros()) return false;
      }
      if (hasNewCampaignBudgetAmountMicros() != other.hasNewCampaignBudgetAmountMicros()) return false;
      if (hasNewCampaignBudgetAmountMicros()) {
        if (getNewCampaignBudgetAmountMicros()
            != other.getNewCampaignBudgetAmountMicros()) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasTargetCpaMicros()) {
        hash = (37 * hash) + TARGET_CPA_MICROS_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getTargetCpaMicros());
      }
      if (hasNewCampaignBudgetAmountMicros()) {
        hash = (37 * hash) + NEW_CAMPAIGN_BUDGET_AMOUNT_MICROS_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getNewCampaignBudgetAmountMicros());
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetCpaOptInParameters parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetCpaOptInParameters parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetCpaOptInParameters parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetCpaOptInParameters parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetCpaOptInParameters parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetCpaOptInParameters parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetCpaOptInParameters parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetCpaOptInParameters parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetCpaOptInParameters parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetCpaOptInParameters parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetCpaOptInParameters parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetCpaOptInParameters parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetCpaOptInParameters prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Parameters to use when applying Target CPA recommendation.
     * </pre>
     *
     * Protobuf type {@code google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetCpaOptInParameters}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetCpaOptInParameters)
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetCpaOptInParametersOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_TargetCpaOptInParameters_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_TargetCpaOptInParameters_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetCpaOptInParameters.class, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetCpaOptInParameters.Builder.class);
      }

      // Construct using com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetCpaOptInParameters.newBuilder()
      private Builder() {

      }

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

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

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_TargetCpaOptInParameters_descriptor;
      }

      @java.lang.Override
      public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetCpaOptInParameters getDefaultInstanceForType() {
        return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetCpaOptInParameters.getDefaultInstance();
      }

      @java.lang.Override
      public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetCpaOptInParameters build() {
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetCpaOptInParameters result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetCpaOptInParameters buildPartial() {
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetCpaOptInParameters result = new com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetCpaOptInParameters(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetCpaOptInParameters result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.targetCpaMicros_ = targetCpaMicros_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.newCampaignBudgetAmountMicros_ = newCampaignBudgetAmountMicros_;
          to_bitField0_ |= 0x00000002;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetCpaOptInParameters) {
          return mergeFrom((com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetCpaOptInParameters)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetCpaOptInParameters other) {
        if (other == com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetCpaOptInParameters.getDefaultInstance()) return this;
        if (other.hasTargetCpaMicros()) {
          setTargetCpaMicros(other.getTargetCpaMicros());
        }
        if (other.hasNewCampaignBudgetAmountMicros()) {
          setNewCampaignBudgetAmountMicros(other.getNewCampaignBudgetAmountMicros());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 24: {
                targetCpaMicros_ = input.readInt64();
                bitField0_ |= 0x00000001;
                break;
              } // case 24
              case 32: {
                newCampaignBudgetAmountMicros_ = input.readInt64();
                bitField0_ |= 0x00000002;
                break;
              } // case 32
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private long targetCpaMicros_ ;
      /**
       * <pre>
       * Average CPA to use for Target CPA bidding strategy. This is a required
       * field.
       * </pre>
       *
       * <code>optional int64 target_cpa_micros = 3;</code>
       * @return Whether the targetCpaMicros field is set.
       */
      @java.lang.Override
      public boolean hasTargetCpaMicros() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Average CPA to use for Target CPA bidding strategy. This is a required
       * field.
       * </pre>
       *
       * <code>optional int64 target_cpa_micros = 3;</code>
       * @return The targetCpaMicros.
       */
      @java.lang.Override
      public long getTargetCpaMicros() {
        return targetCpaMicros_;
      }
      /**
       * <pre>
       * Average CPA to use for Target CPA bidding strategy. This is a required
       * field.
       * </pre>
       *
       * <code>optional int64 target_cpa_micros = 3;</code>
       * @param value The targetCpaMicros to set.
       * @return This builder for chaining.
       */
      public Builder setTargetCpaMicros(long value) {

        targetCpaMicros_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Average CPA to use for Target CPA bidding strategy. This is a required
       * field.
       * </pre>
       *
       * <code>optional int64 target_cpa_micros = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearTargetCpaMicros() {
        bitField0_ = (bitField0_ & ~0x00000001);
        targetCpaMicros_ = 0L;
        onChanged();
        return this;
      }

      private long newCampaignBudgetAmountMicros_ ;
      /**
       * <pre>
       * Optional, budget amount to set for the campaign.
       * </pre>
       *
       * <code>optional int64 new_campaign_budget_amount_micros = 4;</code>
       * @return Whether the newCampaignBudgetAmountMicros field is set.
       */
      @java.lang.Override
      public boolean hasNewCampaignBudgetAmountMicros() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * Optional, budget amount to set for the campaign.
       * </pre>
       *
       * <code>optional int64 new_campaign_budget_amount_micros = 4;</code>
       * @return The newCampaignBudgetAmountMicros.
       */
      @java.lang.Override
      public long getNewCampaignBudgetAmountMicros() {
        return newCampaignBudgetAmountMicros_;
      }
      /**
       * <pre>
       * Optional, budget amount to set for the campaign.
       * </pre>
       *
       * <code>optional int64 new_campaign_budget_amount_micros = 4;</code>
       * @param value The newCampaignBudgetAmountMicros to set.
       * @return This builder for chaining.
       */
      public Builder setNewCampaignBudgetAmountMicros(long value) {

        newCampaignBudgetAmountMicros_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Optional, budget amount to set for the campaign.
       * </pre>
       *
       * <code>optional int64 new_campaign_budget_amount_micros = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearNewCampaignBudgetAmountMicros() {
        bitField0_ = (bitField0_ & ~0x00000002);
        newCampaignBudgetAmountMicros_ = 0L;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetCpaOptInParameters)
    }

    // @@protoc_insertion_point(class_scope:google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetCpaOptInParameters)
    private static final com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetCpaOptInParameters DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetCpaOptInParameters();
    }

    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetCpaOptInParameters getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetCpaOptInParameters getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface TargetRoasOptInParametersOrBuilder extends
      // @@protoc_insertion_point(interface_extends:google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetRoasOptInParameters)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Average ROAS (revenue per unit of spend) to use for Target ROAS bidding
     * strategy. The value is between 0.01 and 1000.0, inclusive. This is a
     * required field, unless new_campaign_budget_amount_micros is set.
     * </pre>
     *
     * <code>optional double target_roas = 1;</code>
     * @return Whether the targetRoas field is set.
     */
    boolean hasTargetRoas();
    /**
     * <pre>
     * Average ROAS (revenue per unit of spend) to use for Target ROAS bidding
     * strategy. The value is between 0.01 and 1000.0, inclusive. This is a
     * required field, unless new_campaign_budget_amount_micros is set.
     * </pre>
     *
     * <code>optional double target_roas = 1;</code>
     * @return The targetRoas.
     */
    double getTargetRoas();

    /**
     * <pre>
     * Optional, budget amount to set for the campaign.
     * </pre>
     *
     * <code>optional int64 new_campaign_budget_amount_micros = 2;</code>
     * @return Whether the newCampaignBudgetAmountMicros field is set.
     */
    boolean hasNewCampaignBudgetAmountMicros();
    /**
     * <pre>
     * Optional, budget amount to set for the campaign.
     * </pre>
     *
     * <code>optional int64 new_campaign_budget_amount_micros = 2;</code>
     * @return The newCampaignBudgetAmountMicros.
     */
    long getNewCampaignBudgetAmountMicros();
  }
  /**
   * <pre>
   * Parameters to use when applying a Target ROAS opt-in recommendation.
   * </pre>
   *
   * Protobuf type {@code google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetRoasOptInParameters}
   */
  public static final class TargetRoasOptInParameters extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetRoasOptInParameters)
      TargetRoasOptInParametersOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use TargetRoasOptInParameters.newBuilder() to construct.
    private TargetRoasOptInParameters(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private TargetRoasOptInParameters() {
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_TargetRoasOptInParameters_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_TargetRoasOptInParameters_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetRoasOptInParameters.class, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetRoasOptInParameters.Builder.class);
    }

    private int bitField0_;
    public static final int TARGET_ROAS_FIELD_NUMBER = 1;
    private double targetRoas_ = 0D;
    /**
     * <pre>
     * Average ROAS (revenue per unit of spend) to use for Target ROAS bidding
     * strategy. The value is between 0.01 and 1000.0, inclusive. This is a
     * required field, unless new_campaign_budget_amount_micros is set.
     * </pre>
     *
     * <code>optional double target_roas = 1;</code>
     * @return Whether the targetRoas field is set.
     */
    @java.lang.Override
    public boolean hasTargetRoas() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * Average ROAS (revenue per unit of spend) to use for Target ROAS bidding
     * strategy. The value is between 0.01 and 1000.0, inclusive. This is a
     * required field, unless new_campaign_budget_amount_micros is set.
     * </pre>
     *
     * <code>optional double target_roas = 1;</code>
     * @return The targetRoas.
     */
    @java.lang.Override
    public double getTargetRoas() {
      return targetRoas_;
    }

    public static final int NEW_CAMPAIGN_BUDGET_AMOUNT_MICROS_FIELD_NUMBER = 2;
    private long newCampaignBudgetAmountMicros_ = 0L;
    /**
     * <pre>
     * Optional, budget amount to set for the campaign.
     * </pre>
     *
     * <code>optional int64 new_campaign_budget_amount_micros = 2;</code>
     * @return Whether the newCampaignBudgetAmountMicros field is set.
     */
    @java.lang.Override
    public boolean hasNewCampaignBudgetAmountMicros() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * Optional, budget amount to set for the campaign.
     * </pre>
     *
     * <code>optional int64 new_campaign_budget_amount_micros = 2;</code>
     * @return The newCampaignBudgetAmountMicros.
     */
    @java.lang.Override
    public long getNewCampaignBudgetAmountMicros() {
      return newCampaignBudgetAmountMicros_;
    }

    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 (((bitField0_ & 0x00000001) != 0)) {
        output.writeDouble(1, targetRoas_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        output.writeInt64(2, newCampaignBudgetAmountMicros_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeDoubleSize(1, targetRoas_);
      }
      if (((bitField0_ & 0x00000002) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(2, newCampaignBudgetAmountMicros_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetRoasOptInParameters)) {
        return super.equals(obj);
      }
      com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetRoasOptInParameters other = (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetRoasOptInParameters) obj;

      if (hasTargetRoas() != other.hasTargetRoas()) return false;
      if (hasTargetRoas()) {
        if (java.lang.Double.doubleToLongBits(getTargetRoas())
            != java.lang.Double.doubleToLongBits(
                other.getTargetRoas())) return false;
      }
      if (hasNewCampaignBudgetAmountMicros() != other.hasNewCampaignBudgetAmountMicros()) return false;
      if (hasNewCampaignBudgetAmountMicros()) {
        if (getNewCampaignBudgetAmountMicros()
            != other.getNewCampaignBudgetAmountMicros()) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasTargetRoas()) {
        hash = (37 * hash) + TARGET_ROAS_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            java.lang.Double.doubleToLongBits(getTargetRoas()));
      }
      if (hasNewCampaignBudgetAmountMicros()) {
        hash = (37 * hash) + NEW_CAMPAIGN_BUDGET_AMOUNT_MICROS_FIELD_NUMBER;
        hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
            getNewCampaignBudgetAmountMicros());
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetRoasOptInParameters parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetRoasOptInParameters parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetRoasOptInParameters parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetRoasOptInParameters parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetRoasOptInParameters parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetRoasOptInParameters parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetRoasOptInParameters parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetRoasOptInParameters parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetRoasOptInParameters parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetRoasOptInParameters parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetRoasOptInParameters parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetRoasOptInParameters parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetRoasOptInParameters prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Parameters to use when applying a Target ROAS opt-in recommendation.
     * </pre>
     *
     * Protobuf type {@code google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetRoasOptInParameters}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetRoasOptInParameters)
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetRoasOptInParametersOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_TargetRoasOptInParameters_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_TargetRoasOptInParameters_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetRoasOptInParameters.class, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetRoasOptInParameters.Builder.class);
      }

      // Construct using com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetRoasOptInParameters.newBuilder()
      private Builder() {

      }

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

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

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_TargetRoasOptInParameters_descriptor;
      }

      @java.lang.Override
      public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetRoasOptInParameters getDefaultInstanceForType() {
        return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetRoasOptInParameters.getDefaultInstance();
      }

      @java.lang.Override
      public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetRoasOptInParameters build() {
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetRoasOptInParameters result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetRoasOptInParameters buildPartial() {
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetRoasOptInParameters result = new com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetRoasOptInParameters(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetRoasOptInParameters result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.targetRoas_ = targetRoas_;
          to_bitField0_ |= 0x00000001;
        }
        if (((from_bitField0_ & 0x00000002) != 0)) {
          result.newCampaignBudgetAmountMicros_ = newCampaignBudgetAmountMicros_;
          to_bitField0_ |= 0x00000002;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetRoasOptInParameters) {
          return mergeFrom((com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetRoasOptInParameters)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetRoasOptInParameters other) {
        if (other == com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetRoasOptInParameters.getDefaultInstance()) return this;
        if (other.hasTargetRoas()) {
          setTargetRoas(other.getTargetRoas());
        }
        if (other.hasNewCampaignBudgetAmountMicros()) {
          setNewCampaignBudgetAmountMicros(other.getNewCampaignBudgetAmountMicros());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 9: {
                targetRoas_ = input.readDouble();
                bitField0_ |= 0x00000001;
                break;
              } // case 9
              case 16: {
                newCampaignBudgetAmountMicros_ = input.readInt64();
                bitField0_ |= 0x00000002;
                break;
              } // case 16
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private double targetRoas_ ;
      /**
       * <pre>
       * Average ROAS (revenue per unit of spend) to use for Target ROAS bidding
       * strategy. The value is between 0.01 and 1000.0, inclusive. This is a
       * required field, unless new_campaign_budget_amount_micros is set.
       * </pre>
       *
       * <code>optional double target_roas = 1;</code>
       * @return Whether the targetRoas field is set.
       */
      @java.lang.Override
      public boolean hasTargetRoas() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Average ROAS (revenue per unit of spend) to use for Target ROAS bidding
       * strategy. The value is between 0.01 and 1000.0, inclusive. This is a
       * required field, unless new_campaign_budget_amount_micros is set.
       * </pre>
       *
       * <code>optional double target_roas = 1;</code>
       * @return The targetRoas.
       */
      @java.lang.Override
      public double getTargetRoas() {
        return targetRoas_;
      }
      /**
       * <pre>
       * Average ROAS (revenue per unit of spend) to use for Target ROAS bidding
       * strategy. The value is between 0.01 and 1000.0, inclusive. This is a
       * required field, unless new_campaign_budget_amount_micros is set.
       * </pre>
       *
       * <code>optional double target_roas = 1;</code>
       * @param value The targetRoas to set.
       * @return This builder for chaining.
       */
      public Builder setTargetRoas(double value) {

        targetRoas_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Average ROAS (revenue per unit of spend) to use for Target ROAS bidding
       * strategy. The value is between 0.01 and 1000.0, inclusive. This is a
       * required field, unless new_campaign_budget_amount_micros is set.
       * </pre>
       *
       * <code>optional double target_roas = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearTargetRoas() {
        bitField0_ = (bitField0_ & ~0x00000001);
        targetRoas_ = 0D;
        onChanged();
        return this;
      }

      private long newCampaignBudgetAmountMicros_ ;
      /**
       * <pre>
       * Optional, budget amount to set for the campaign.
       * </pre>
       *
       * <code>optional int64 new_campaign_budget_amount_micros = 2;</code>
       * @return Whether the newCampaignBudgetAmountMicros field is set.
       */
      @java.lang.Override
      public boolean hasNewCampaignBudgetAmountMicros() {
        return ((bitField0_ & 0x00000002) != 0);
      }
      /**
       * <pre>
       * Optional, budget amount to set for the campaign.
       * </pre>
       *
       * <code>optional int64 new_campaign_budget_amount_micros = 2;</code>
       * @return The newCampaignBudgetAmountMicros.
       */
      @java.lang.Override
      public long getNewCampaignBudgetAmountMicros() {
        return newCampaignBudgetAmountMicros_;
      }
      /**
       * <pre>
       * Optional, budget amount to set for the campaign.
       * </pre>
       *
       * <code>optional int64 new_campaign_budget_amount_micros = 2;</code>
       * @param value The newCampaignBudgetAmountMicros to set.
       * @return This builder for chaining.
       */
      public Builder setNewCampaignBudgetAmountMicros(long value) {

        newCampaignBudgetAmountMicros_ = value;
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Optional, budget amount to set for the campaign.
       * </pre>
       *
       * <code>optional int64 new_campaign_budget_amount_micros = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearNewCampaignBudgetAmountMicros() {
        bitField0_ = (bitField0_ & ~0x00000002);
        newCampaignBudgetAmountMicros_ = 0L;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetRoasOptInParameters)
    }

    // @@protoc_insertion_point(class_scope:google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetRoasOptInParameters)
    private static final com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetRoasOptInParameters DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetRoasOptInParameters();
    }

    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetRoasOptInParameters getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetRoasOptInParameters getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface CalloutExtensionParametersOrBuilder extends
      // @@protoc_insertion_point(interface_extends:google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutExtensionParameters)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Callout extensions to be added. This is a required field.
     * </pre>
     *
     * <code>repeated .google.ads.googleads.v14.common.CalloutFeedItem callout_extensions = 1;</code>
     */
    java.util.List<com.google.ads.googleads.v14.common.CalloutFeedItem> 
        getCalloutExtensionsList();
    /**
     * <pre>
     * Callout extensions to be added. This is a required field.
     * </pre>
     *
     * <code>repeated .google.ads.googleads.v14.common.CalloutFeedItem callout_extensions = 1;</code>
     */
    com.google.ads.googleads.v14.common.CalloutFeedItem getCalloutExtensions(int index);
    /**
     * <pre>
     * Callout extensions to be added. This is a required field.
     * </pre>
     *
     * <code>repeated .google.ads.googleads.v14.common.CalloutFeedItem callout_extensions = 1;</code>
     */
    int getCalloutExtensionsCount();
    /**
     * <pre>
     * Callout extensions to be added. This is a required field.
     * </pre>
     *
     * <code>repeated .google.ads.googleads.v14.common.CalloutFeedItem callout_extensions = 1;</code>
     */
    java.util.List<? extends com.google.ads.googleads.v14.common.CalloutFeedItemOrBuilder> 
        getCalloutExtensionsOrBuilderList();
    /**
     * <pre>
     * Callout extensions to be added. This is a required field.
     * </pre>
     *
     * <code>repeated .google.ads.googleads.v14.common.CalloutFeedItem callout_extensions = 1;</code>
     */
    com.google.ads.googleads.v14.common.CalloutFeedItemOrBuilder getCalloutExtensionsOrBuilder(
        int index);
  }
  /**
   * <pre>
   * Parameters to use when applying callout extension recommendation.
   * </pre>
   *
   * Protobuf type {@code google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutExtensionParameters}
   */
  public static final class CalloutExtensionParameters extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutExtensionParameters)
      CalloutExtensionParametersOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use CalloutExtensionParameters.newBuilder() to construct.
    private CalloutExtensionParameters(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private CalloutExtensionParameters() {
      calloutExtensions_ = java.util.Collections.emptyList();
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_CalloutExtensionParameters_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_CalloutExtensionParameters_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutExtensionParameters.class, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutExtensionParameters.Builder.class);
    }

    public static final int CALLOUT_EXTENSIONS_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private java.util.List<com.google.ads.googleads.v14.common.CalloutFeedItem> calloutExtensions_;
    /**
     * <pre>
     * Callout extensions to be added. This is a required field.
     * </pre>
     *
     * <code>repeated .google.ads.googleads.v14.common.CalloutFeedItem callout_extensions = 1;</code>
     */
    @java.lang.Override
    public java.util.List<com.google.ads.googleads.v14.common.CalloutFeedItem> getCalloutExtensionsList() {
      return calloutExtensions_;
    }
    /**
     * <pre>
     * Callout extensions to be added. This is a required field.
     * </pre>
     *
     * <code>repeated .google.ads.googleads.v14.common.CalloutFeedItem callout_extensions = 1;</code>
     */
    @java.lang.Override
    public java.util.List<? extends com.google.ads.googleads.v14.common.CalloutFeedItemOrBuilder> 
        getCalloutExtensionsOrBuilderList() {
      return calloutExtensions_;
    }
    /**
     * <pre>
     * Callout extensions to be added. This is a required field.
     * </pre>
     *
     * <code>repeated .google.ads.googleads.v14.common.CalloutFeedItem callout_extensions = 1;</code>
     */
    @java.lang.Override
    public int getCalloutExtensionsCount() {
      return calloutExtensions_.size();
    }
    /**
     * <pre>
     * Callout extensions to be added. This is a required field.
     * </pre>
     *
     * <code>repeated .google.ads.googleads.v14.common.CalloutFeedItem callout_extensions = 1;</code>
     */
    @java.lang.Override
    public com.google.ads.googleads.v14.common.CalloutFeedItem getCalloutExtensions(int index) {
      return calloutExtensions_.get(index);
    }
    /**
     * <pre>
     * Callout extensions to be added. This is a required field.
     * </pre>
     *
     * <code>repeated .google.ads.googleads.v14.common.CalloutFeedItem callout_extensions = 1;</code>
     */
    @java.lang.Override
    public com.google.ads.googleads.v14.common.CalloutFeedItemOrBuilder getCalloutExtensionsOrBuilder(
        int index) {
      return calloutExtensions_.get(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 < calloutExtensions_.size(); i++) {
        output.writeMessage(1, calloutExtensions_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      for (int i = 0; i < calloutExtensions_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, calloutExtensions_.get(i));
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutExtensionParameters)) {
        return super.equals(obj);
      }
      com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutExtensionParameters other = (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutExtensionParameters) obj;

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

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

    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutExtensionParameters parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutExtensionParameters parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutExtensionParameters parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutExtensionParameters parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutExtensionParameters parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutExtensionParameters parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutExtensionParameters parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutExtensionParameters parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutExtensionParameters parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutExtensionParameters parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutExtensionParameters parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutExtensionParameters parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutExtensionParameters prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Parameters to use when applying callout extension recommendation.
     * </pre>
     *
     * Protobuf type {@code google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutExtensionParameters}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutExtensionParameters)
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutExtensionParametersOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_CalloutExtensionParameters_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_CalloutExtensionParameters_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutExtensionParameters.class, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutExtensionParameters.Builder.class);
      }

      // Construct using com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutExtensionParameters.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        if (calloutExtensionsBuilder_ == null) {
          calloutExtensions_ = java.util.Collections.emptyList();
        } else {
          calloutExtensions_ = null;
          calloutExtensionsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_CalloutExtensionParameters_descriptor;
      }

      @java.lang.Override
      public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutExtensionParameters getDefaultInstanceForType() {
        return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutExtensionParameters.getDefaultInstance();
      }

      @java.lang.Override
      public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutExtensionParameters build() {
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutExtensionParameters result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutExtensionParameters buildPartial() {
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutExtensionParameters result = new com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutExtensionParameters(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutExtensionParameters result) {
        if (calloutExtensionsBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            calloutExtensions_ = java.util.Collections.unmodifiableList(calloutExtensions_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.calloutExtensions_ = calloutExtensions_;
        } else {
          result.calloutExtensions_ = calloutExtensionsBuilder_.build();
        }
      }

      private void buildPartial0(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutExtensionParameters result) {
        int from_bitField0_ = bitField0_;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutExtensionParameters) {
          return mergeFrom((com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutExtensionParameters)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutExtensionParameters other) {
        if (other == com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutExtensionParameters.getDefaultInstance()) return this;
        if (calloutExtensionsBuilder_ == null) {
          if (!other.calloutExtensions_.isEmpty()) {
            if (calloutExtensions_.isEmpty()) {
              calloutExtensions_ = other.calloutExtensions_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureCalloutExtensionsIsMutable();
              calloutExtensions_.addAll(other.calloutExtensions_);
            }
            onChanged();
          }
        } else {
          if (!other.calloutExtensions_.isEmpty()) {
            if (calloutExtensionsBuilder_.isEmpty()) {
              calloutExtensionsBuilder_.dispose();
              calloutExtensionsBuilder_ = null;
              calloutExtensions_ = other.calloutExtensions_;
              bitField0_ = (bitField0_ & ~0x00000001);
              calloutExtensionsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getCalloutExtensionsFieldBuilder() : null;
            } else {
              calloutExtensionsBuilder_.addAllMessages(other.calloutExtensions_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                com.google.ads.googleads.v14.common.CalloutFeedItem m =
                    input.readMessage(
                        com.google.ads.googleads.v14.common.CalloutFeedItem.parser(),
                        extensionRegistry);
                if (calloutExtensionsBuilder_ == null) {
                  ensureCalloutExtensionsIsMutable();
                  calloutExtensions_.add(m);
                } else {
                  calloutExtensionsBuilder_.addMessage(m);
                }
                break;
              } // case 10
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.util.List<com.google.ads.googleads.v14.common.CalloutFeedItem> calloutExtensions_ =
        java.util.Collections.emptyList();
      private void ensureCalloutExtensionsIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          calloutExtensions_ = new java.util.ArrayList<com.google.ads.googleads.v14.common.CalloutFeedItem>(calloutExtensions_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.ads.googleads.v14.common.CalloutFeedItem, com.google.ads.googleads.v14.common.CalloutFeedItem.Builder, com.google.ads.googleads.v14.common.CalloutFeedItemOrBuilder> calloutExtensionsBuilder_;

      /**
       * <pre>
       * Callout extensions to be added. This is a required field.
       * </pre>
       *
       * <code>repeated .google.ads.googleads.v14.common.CalloutFeedItem callout_extensions = 1;</code>
       */
      public java.util.List<com.google.ads.googleads.v14.common.CalloutFeedItem> getCalloutExtensionsList() {
        if (calloutExtensionsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(calloutExtensions_);
        } else {
          return calloutExtensionsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * Callout extensions to be added. This is a required field.
       * </pre>
       *
       * <code>repeated .google.ads.googleads.v14.common.CalloutFeedItem callout_extensions = 1;</code>
       */
      public int getCalloutExtensionsCount() {
        if (calloutExtensionsBuilder_ == null) {
          return calloutExtensions_.size();
        } else {
          return calloutExtensionsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * Callout extensions to be added. This is a required field.
       * </pre>
       *
       * <code>repeated .google.ads.googleads.v14.common.CalloutFeedItem callout_extensions = 1;</code>
       */
      public com.google.ads.googleads.v14.common.CalloutFeedItem getCalloutExtensions(int index) {
        if (calloutExtensionsBuilder_ == null) {
          return calloutExtensions_.get(index);
        } else {
          return calloutExtensionsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * Callout extensions to be added. This is a required field.
       * </pre>
       *
       * <code>repeated .google.ads.googleads.v14.common.CalloutFeedItem callout_extensions = 1;</code>
       */
      public Builder setCalloutExtensions(
          int index, com.google.ads.googleads.v14.common.CalloutFeedItem value) {
        if (calloutExtensionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureCalloutExtensionsIsMutable();
          calloutExtensions_.set(index, value);
          onChanged();
        } else {
          calloutExtensionsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Callout extensions to be added. This is a required field.
       * </pre>
       *
       * <code>repeated .google.ads.googleads.v14.common.CalloutFeedItem callout_extensions = 1;</code>
       */
      public Builder setCalloutExtensions(
          int index, com.google.ads.googleads.v14.common.CalloutFeedItem.Builder builderForValue) {
        if (calloutExtensionsBuilder_ == null) {
          ensureCalloutExtensionsIsMutable();
          calloutExtensions_.set(index, builderForValue.build());
          onChanged();
        } else {
          calloutExtensionsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Callout extensions to be added. This is a required field.
       * </pre>
       *
       * <code>repeated .google.ads.googleads.v14.common.CalloutFeedItem callout_extensions = 1;</code>
       */
      public Builder addCalloutExtensions(com.google.ads.googleads.v14.common.CalloutFeedItem value) {
        if (calloutExtensionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureCalloutExtensionsIsMutable();
          calloutExtensions_.add(value);
          onChanged();
        } else {
          calloutExtensionsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * Callout extensions to be added. This is a required field.
       * </pre>
       *
       * <code>repeated .google.ads.googleads.v14.common.CalloutFeedItem callout_extensions = 1;</code>
       */
      public Builder addCalloutExtensions(
          int index, com.google.ads.googleads.v14.common.CalloutFeedItem value) {
        if (calloutExtensionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureCalloutExtensionsIsMutable();
          calloutExtensions_.add(index, value);
          onChanged();
        } else {
          calloutExtensionsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Callout extensions to be added. This is a required field.
       * </pre>
       *
       * <code>repeated .google.ads.googleads.v14.common.CalloutFeedItem callout_extensions = 1;</code>
       */
      public Builder addCalloutExtensions(
          com.google.ads.googleads.v14.common.CalloutFeedItem.Builder builderForValue) {
        if (calloutExtensionsBuilder_ == null) {
          ensureCalloutExtensionsIsMutable();
          calloutExtensions_.add(builderForValue.build());
          onChanged();
        } else {
          calloutExtensionsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Callout extensions to be added. This is a required field.
       * </pre>
       *
       * <code>repeated .google.ads.googleads.v14.common.CalloutFeedItem callout_extensions = 1;</code>
       */
      public Builder addCalloutExtensions(
          int index, com.google.ads.googleads.v14.common.CalloutFeedItem.Builder builderForValue) {
        if (calloutExtensionsBuilder_ == null) {
          ensureCalloutExtensionsIsMutable();
          calloutExtensions_.add(index, builderForValue.build());
          onChanged();
        } else {
          calloutExtensionsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Callout extensions to be added. This is a required field.
       * </pre>
       *
       * <code>repeated .google.ads.googleads.v14.common.CalloutFeedItem callout_extensions = 1;</code>
       */
      public Builder addAllCalloutExtensions(
          java.lang.Iterable<? extends com.google.ads.googleads.v14.common.CalloutFeedItem> values) {
        if (calloutExtensionsBuilder_ == null) {
          ensureCalloutExtensionsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, calloutExtensions_);
          onChanged();
        } else {
          calloutExtensionsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * Callout extensions to be added. This is a required field.
       * </pre>
       *
       * <code>repeated .google.ads.googleads.v14.common.CalloutFeedItem callout_extensions = 1;</code>
       */
      public Builder clearCalloutExtensions() {
        if (calloutExtensionsBuilder_ == null) {
          calloutExtensions_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          calloutExtensionsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Callout extensions to be added. This is a required field.
       * </pre>
       *
       * <code>repeated .google.ads.googleads.v14.common.CalloutFeedItem callout_extensions = 1;</code>
       */
      public Builder removeCalloutExtensions(int index) {
        if (calloutExtensionsBuilder_ == null) {
          ensureCalloutExtensionsIsMutable();
          calloutExtensions_.remove(index);
          onChanged();
        } else {
          calloutExtensionsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * Callout extensions to be added. This is a required field.
       * </pre>
       *
       * <code>repeated .google.ads.googleads.v14.common.CalloutFeedItem callout_extensions = 1;</code>
       */
      public com.google.ads.googleads.v14.common.CalloutFeedItem.Builder getCalloutExtensionsBuilder(
          int index) {
        return getCalloutExtensionsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * Callout extensions to be added. This is a required field.
       * </pre>
       *
       * <code>repeated .google.ads.googleads.v14.common.CalloutFeedItem callout_extensions = 1;</code>
       */
      public com.google.ads.googleads.v14.common.CalloutFeedItemOrBuilder getCalloutExtensionsOrBuilder(
          int index) {
        if (calloutExtensionsBuilder_ == null) {
          return calloutExtensions_.get(index);  } else {
          return calloutExtensionsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * Callout extensions to be added. This is a required field.
       * </pre>
       *
       * <code>repeated .google.ads.googleads.v14.common.CalloutFeedItem callout_extensions = 1;</code>
       */
      public java.util.List<? extends com.google.ads.googleads.v14.common.CalloutFeedItemOrBuilder> 
           getCalloutExtensionsOrBuilderList() {
        if (calloutExtensionsBuilder_ != null) {
          return calloutExtensionsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(calloutExtensions_);
        }
      }
      /**
       * <pre>
       * Callout extensions to be added. This is a required field.
       * </pre>
       *
       * <code>repeated .google.ads.googleads.v14.common.CalloutFeedItem callout_extensions = 1;</code>
       */
      public com.google.ads.googleads.v14.common.CalloutFeedItem.Builder addCalloutExtensionsBuilder() {
        return getCalloutExtensionsFieldBuilder().addBuilder(
            com.google.ads.googleads.v14.common.CalloutFeedItem.getDefaultInstance());
      }
      /**
       * <pre>
       * Callout extensions to be added. This is a required field.
       * </pre>
       *
       * <code>repeated .google.ads.googleads.v14.common.CalloutFeedItem callout_extensions = 1;</code>
       */
      public com.google.ads.googleads.v14.common.CalloutFeedItem.Builder addCalloutExtensionsBuilder(
          int index) {
        return getCalloutExtensionsFieldBuilder().addBuilder(
            index, com.google.ads.googleads.v14.common.CalloutFeedItem.getDefaultInstance());
      }
      /**
       * <pre>
       * Callout extensions to be added. This is a required field.
       * </pre>
       *
       * <code>repeated .google.ads.googleads.v14.common.CalloutFeedItem callout_extensions = 1;</code>
       */
      public java.util.List<com.google.ads.googleads.v14.common.CalloutFeedItem.Builder> 
           getCalloutExtensionsBuilderList() {
        return getCalloutExtensionsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.ads.googleads.v14.common.CalloutFeedItem, com.google.ads.googleads.v14.common.CalloutFeedItem.Builder, com.google.ads.googleads.v14.common.CalloutFeedItemOrBuilder> 
          getCalloutExtensionsFieldBuilder() {
        if (calloutExtensionsBuilder_ == null) {
          calloutExtensionsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.ads.googleads.v14.common.CalloutFeedItem, com.google.ads.googleads.v14.common.CalloutFeedItem.Builder, com.google.ads.googleads.v14.common.CalloutFeedItemOrBuilder>(
                  calloutExtensions_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          calloutExtensions_ = null;
        }
        return calloutExtensionsBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutExtensionParameters)
    }

    // @@protoc_insertion_point(class_scope:google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutExtensionParameters)
    private static final com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutExtensionParameters DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutExtensionParameters();
    }

    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutExtensionParameters getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutExtensionParameters getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface CallExtensionParametersOrBuilder extends
      // @@protoc_insertion_point(interface_extends:google.ads.googleads.v14.services.ApplyRecommendationOperation.CallExtensionParameters)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Call extensions to be added. This is a required field.
     * </pre>
     *
     * <code>repeated .google.ads.googleads.v14.common.CallFeedItem call_extensions = 1;</code>
     */
    java.util.List<com.google.ads.googleads.v14.common.CallFeedItem> 
        getCallExtensionsList();
    /**
     * <pre>
     * Call extensions to be added. This is a required field.
     * </pre>
     *
     * <code>repeated .google.ads.googleads.v14.common.CallFeedItem call_extensions = 1;</code>
     */
    com.google.ads.googleads.v14.common.CallFeedItem getCallExtensions(int index);
    /**
     * <pre>
     * Call extensions to be added. This is a required field.
     * </pre>
     *
     * <code>repeated .google.ads.googleads.v14.common.CallFeedItem call_extensions = 1;</code>
     */
    int getCallExtensionsCount();
    /**
     * <pre>
     * Call extensions to be added. This is a required field.
     * </pre>
     *
     * <code>repeated .google.ads.googleads.v14.common.CallFeedItem call_extensions = 1;</code>
     */
    java.util.List<? extends com.google.ads.googleads.v14.common.CallFeedItemOrBuilder> 
        getCallExtensionsOrBuilderList();
    /**
     * <pre>
     * Call extensions to be added. This is a required field.
     * </pre>
     *
     * <code>repeated .google.ads.googleads.v14.common.CallFeedItem call_extensions = 1;</code>
     */
    com.google.ads.googleads.v14.common.CallFeedItemOrBuilder getCallExtensionsOrBuilder(
        int index);
  }
  /**
   * <pre>
   * Parameters to use when applying call extension recommendation.
   * </pre>
   *
   * Protobuf type {@code google.ads.googleads.v14.services.ApplyRecommendationOperation.CallExtensionParameters}
   */
  public static final class CallExtensionParameters extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:google.ads.googleads.v14.services.ApplyRecommendationOperation.CallExtensionParameters)
      CallExtensionParametersOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use CallExtensionParameters.newBuilder() to construct.
    private CallExtensionParameters(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private CallExtensionParameters() {
      callExtensions_ = java.util.Collections.emptyList();
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_CallExtensionParameters_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_CallExtensionParameters_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallExtensionParameters.class, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallExtensionParameters.Builder.class);
    }

    public static final int CALL_EXTENSIONS_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private java.util.List<com.google.ads.googleads.v14.common.CallFeedItem> callExtensions_;
    /**
     * <pre>
     * Call extensions to be added. This is a required field.
     * </pre>
     *
     * <code>repeated .google.ads.googleads.v14.common.CallFeedItem call_extensions = 1;</code>
     */
    @java.lang.Override
    public java.util.List<com.google.ads.googleads.v14.common.CallFeedItem> getCallExtensionsList() {
      return callExtensions_;
    }
    /**
     * <pre>
     * Call extensions to be added. This is a required field.
     * </pre>
     *
     * <code>repeated .google.ads.googleads.v14.common.CallFeedItem call_extensions = 1;</code>
     */
    @java.lang.Override
    public java.util.List<? extends com.google.ads.googleads.v14.common.CallFeedItemOrBuilder> 
        getCallExtensionsOrBuilderList() {
      return callExtensions_;
    }
    /**
     * <pre>
     * Call extensions to be added. This is a required field.
     * </pre>
     *
     * <code>repeated .google.ads.googleads.v14.common.CallFeedItem call_extensions = 1;</code>
     */
    @java.lang.Override
    public int getCallExtensionsCount() {
      return callExtensions_.size();
    }
    /**
     * <pre>
     * Call extensions to be added. This is a required field.
     * </pre>
     *
     * <code>repeated .google.ads.googleads.v14.common.CallFeedItem call_extensions = 1;</code>
     */
    @java.lang.Override
    public com.google.ads.googleads.v14.common.CallFeedItem getCallExtensions(int index) {
      return callExtensions_.get(index);
    }
    /**
     * <pre>
     * Call extensions to be added. This is a required field.
     * </pre>
     *
     * <code>repeated .google.ads.googleads.v14.common.CallFeedItem call_extensions = 1;</code>
     */
    @java.lang.Override
    public com.google.ads.googleads.v14.common.CallFeedItemOrBuilder getCallExtensionsOrBuilder(
        int index) {
      return callExtensions_.get(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 < callExtensions_.size(); i++) {
        output.writeMessage(1, callExtensions_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      for (int i = 0; i < callExtensions_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, callExtensions_.get(i));
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallExtensionParameters)) {
        return super.equals(obj);
      }
      com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallExtensionParameters other = (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallExtensionParameters) obj;

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

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

    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallExtensionParameters parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallExtensionParameters parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallExtensionParameters parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallExtensionParameters parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallExtensionParameters parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallExtensionParameters parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallExtensionParameters parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallExtensionParameters parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallExtensionParameters parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallExtensionParameters parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallExtensionParameters parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallExtensionParameters parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallExtensionParameters prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Parameters to use when applying call extension recommendation.
     * </pre>
     *
     * Protobuf type {@code google.ads.googleads.v14.services.ApplyRecommendationOperation.CallExtensionParameters}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:google.ads.googleads.v14.services.ApplyRecommendationOperation.CallExtensionParameters)
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallExtensionParametersOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_CallExtensionParameters_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_CallExtensionParameters_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallExtensionParameters.class, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallExtensionParameters.Builder.class);
      }

      // Construct using com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallExtensionParameters.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        if (callExtensionsBuilder_ == null) {
          callExtensions_ = java.util.Collections.emptyList();
        } else {
          callExtensions_ = null;
          callExtensionsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_CallExtensionParameters_descriptor;
      }

      @java.lang.Override
      public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallExtensionParameters getDefaultInstanceForType() {
        return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallExtensionParameters.getDefaultInstance();
      }

      @java.lang.Override
      public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallExtensionParameters build() {
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallExtensionParameters result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallExtensionParameters buildPartial() {
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallExtensionParameters result = new com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallExtensionParameters(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallExtensionParameters result) {
        if (callExtensionsBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            callExtensions_ = java.util.Collections.unmodifiableList(callExtensions_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.callExtensions_ = callExtensions_;
        } else {
          result.callExtensions_ = callExtensionsBuilder_.build();
        }
      }

      private void buildPartial0(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallExtensionParameters result) {
        int from_bitField0_ = bitField0_;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallExtensionParameters) {
          return mergeFrom((com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallExtensionParameters)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallExtensionParameters other) {
        if (other == com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallExtensionParameters.getDefaultInstance()) return this;
        if (callExtensionsBuilder_ == null) {
          if (!other.callExtensions_.isEmpty()) {
            if (callExtensions_.isEmpty()) {
              callExtensions_ = other.callExtensions_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureCallExtensionsIsMutable();
              callExtensions_.addAll(other.callExtensions_);
            }
            onChanged();
          }
        } else {
          if (!other.callExtensions_.isEmpty()) {
            if (callExtensionsBuilder_.isEmpty()) {
              callExtensionsBuilder_.dispose();
              callExtensionsBuilder_ = null;
              callExtensions_ = other.callExtensions_;
              bitField0_ = (bitField0_ & ~0x00000001);
              callExtensionsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getCallExtensionsFieldBuilder() : null;
            } else {
              callExtensionsBuilder_.addAllMessages(other.callExtensions_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                com.google.ads.googleads.v14.common.CallFeedItem m =
                    input.readMessage(
                        com.google.ads.googleads.v14.common.CallFeedItem.parser(),
                        extensionRegistry);
                if (callExtensionsBuilder_ == null) {
                  ensureCallExtensionsIsMutable();
                  callExtensions_.add(m);
                } else {
                  callExtensionsBuilder_.addMessage(m);
                }
                break;
              } // case 10
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.util.List<com.google.ads.googleads.v14.common.CallFeedItem> callExtensions_ =
        java.util.Collections.emptyList();
      private void ensureCallExtensionsIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          callExtensions_ = new java.util.ArrayList<com.google.ads.googleads.v14.common.CallFeedItem>(callExtensions_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.ads.googleads.v14.common.CallFeedItem, com.google.ads.googleads.v14.common.CallFeedItem.Builder, com.google.ads.googleads.v14.common.CallFeedItemOrBuilder> callExtensionsBuilder_;

      /**
       * <pre>
       * Call extensions to be added. This is a required field.
       * </pre>
       *
       * <code>repeated .google.ads.googleads.v14.common.CallFeedItem call_extensions = 1;</code>
       */
      public java.util.List<com.google.ads.googleads.v14.common.CallFeedItem> getCallExtensionsList() {
        if (callExtensionsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(callExtensions_);
        } else {
          return callExtensionsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * Call extensions to be added. This is a required field.
       * </pre>
       *
       * <code>repeated .google.ads.googleads.v14.common.CallFeedItem call_extensions = 1;</code>
       */
      public int getCallExtensionsCount() {
        if (callExtensionsBuilder_ == null) {
          return callExtensions_.size();
        } else {
          return callExtensionsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * Call extensions to be added. This is a required field.
       * </pre>
       *
       * <code>repeated .google.ads.googleads.v14.common.CallFeedItem call_extensions = 1;</code>
       */
      public com.google.ads.googleads.v14.common.CallFeedItem getCallExtensions(int index) {
        if (callExtensionsBuilder_ == null) {
          return callExtensions_.get(index);
        } else {
          return callExtensionsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * Call extensions to be added. This is a required field.
       * </pre>
       *
       * <code>repeated .google.ads.googleads.v14.common.CallFeedItem call_extensions = 1;</code>
       */
      public Builder setCallExtensions(
          int index, com.google.ads.googleads.v14.common.CallFeedItem value) {
        if (callExtensionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureCallExtensionsIsMutable();
          callExtensions_.set(index, value);
          onChanged();
        } else {
          callExtensionsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Call extensions to be added. This is a required field.
       * </pre>
       *
       * <code>repeated .google.ads.googleads.v14.common.CallFeedItem call_extensions = 1;</code>
       */
      public Builder setCallExtensions(
          int index, com.google.ads.googleads.v14.common.CallFeedItem.Builder builderForValue) {
        if (callExtensionsBuilder_ == null) {
          ensureCallExtensionsIsMutable();
          callExtensions_.set(index, builderForValue.build());
          onChanged();
        } else {
          callExtensionsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Call extensions to be added. This is a required field.
       * </pre>
       *
       * <code>repeated .google.ads.googleads.v14.common.CallFeedItem call_extensions = 1;</code>
       */
      public Builder addCallExtensions(com.google.ads.googleads.v14.common.CallFeedItem value) {
        if (callExtensionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureCallExtensionsIsMutable();
          callExtensions_.add(value);
          onChanged();
        } else {
          callExtensionsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * Call extensions to be added. This is a required field.
       * </pre>
       *
       * <code>repeated .google.ads.googleads.v14.common.CallFeedItem call_extensions = 1;</code>
       */
      public Builder addCallExtensions(
          int index, com.google.ads.googleads.v14.common.CallFeedItem value) {
        if (callExtensionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureCallExtensionsIsMutable();
          callExtensions_.add(index, value);
          onChanged();
        } else {
          callExtensionsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Call extensions to be added. This is a required field.
       * </pre>
       *
       * <code>repeated .google.ads.googleads.v14.common.CallFeedItem call_extensions = 1;</code>
       */
      public Builder addCallExtensions(
          com.google.ads.googleads.v14.common.CallFeedItem.Builder builderForValue) {
        if (callExtensionsBuilder_ == null) {
          ensureCallExtensionsIsMutable();
          callExtensions_.add(builderForValue.build());
          onChanged();
        } else {
          callExtensionsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Call extensions to be added. This is a required field.
       * </pre>
       *
       * <code>repeated .google.ads.googleads.v14.common.CallFeedItem call_extensions = 1;</code>
       */
      public Builder addCallExtensions(
          int index, com.google.ads.googleads.v14.common.CallFeedItem.Builder builderForValue) {
        if (callExtensionsBuilder_ == null) {
          ensureCallExtensionsIsMutable();
          callExtensions_.add(index, builderForValue.build());
          onChanged();
        } else {
          callExtensionsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Call extensions to be added. This is a required field.
       * </pre>
       *
       * <code>repeated .google.ads.googleads.v14.common.CallFeedItem call_extensions = 1;</code>
       */
      public Builder addAllCallExtensions(
          java.lang.Iterable<? extends com.google.ads.googleads.v14.common.CallFeedItem> values) {
        if (callExtensionsBuilder_ == null) {
          ensureCallExtensionsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, callExtensions_);
          onChanged();
        } else {
          callExtensionsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * Call extensions to be added. This is a required field.
       * </pre>
       *
       * <code>repeated .google.ads.googleads.v14.common.CallFeedItem call_extensions = 1;</code>
       */
      public Builder clearCallExtensions() {
        if (callExtensionsBuilder_ == null) {
          callExtensions_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          callExtensionsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Call extensions to be added. This is a required field.
       * </pre>
       *
       * <code>repeated .google.ads.googleads.v14.common.CallFeedItem call_extensions = 1;</code>
       */
      public Builder removeCallExtensions(int index) {
        if (callExtensionsBuilder_ == null) {
          ensureCallExtensionsIsMutable();
          callExtensions_.remove(index);
          onChanged();
        } else {
          callExtensionsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * Call extensions to be added. This is a required field.
       * </pre>
       *
       * <code>repeated .google.ads.googleads.v14.common.CallFeedItem call_extensions = 1;</code>
       */
      public com.google.ads.googleads.v14.common.CallFeedItem.Builder getCallExtensionsBuilder(
          int index) {
        return getCallExtensionsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * Call extensions to be added. This is a required field.
       * </pre>
       *
       * <code>repeated .google.ads.googleads.v14.common.CallFeedItem call_extensions = 1;</code>
       */
      public com.google.ads.googleads.v14.common.CallFeedItemOrBuilder getCallExtensionsOrBuilder(
          int index) {
        if (callExtensionsBuilder_ == null) {
          return callExtensions_.get(index);  } else {
          return callExtensionsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * Call extensions to be added. This is a required field.
       * </pre>
       *
       * <code>repeated .google.ads.googleads.v14.common.CallFeedItem call_extensions = 1;</code>
       */
      public java.util.List<? extends com.google.ads.googleads.v14.common.CallFeedItemOrBuilder> 
           getCallExtensionsOrBuilderList() {
        if (callExtensionsBuilder_ != null) {
          return callExtensionsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(callExtensions_);
        }
      }
      /**
       * <pre>
       * Call extensions to be added. This is a required field.
       * </pre>
       *
       * <code>repeated .google.ads.googleads.v14.common.CallFeedItem call_extensions = 1;</code>
       */
      public com.google.ads.googleads.v14.common.CallFeedItem.Builder addCallExtensionsBuilder() {
        return getCallExtensionsFieldBuilder().addBuilder(
            com.google.ads.googleads.v14.common.CallFeedItem.getDefaultInstance());
      }
      /**
       * <pre>
       * Call extensions to be added. This is a required field.
       * </pre>
       *
       * <code>repeated .google.ads.googleads.v14.common.CallFeedItem call_extensions = 1;</code>
       */
      public com.google.ads.googleads.v14.common.CallFeedItem.Builder addCallExtensionsBuilder(
          int index) {
        return getCallExtensionsFieldBuilder().addBuilder(
            index, com.google.ads.googleads.v14.common.CallFeedItem.getDefaultInstance());
      }
      /**
       * <pre>
       * Call extensions to be added. This is a required field.
       * </pre>
       *
       * <code>repeated .google.ads.googleads.v14.common.CallFeedItem call_extensions = 1;</code>
       */
      public java.util.List<com.google.ads.googleads.v14.common.CallFeedItem.Builder> 
           getCallExtensionsBuilderList() {
        return getCallExtensionsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.ads.googleads.v14.common.CallFeedItem, com.google.ads.googleads.v14.common.CallFeedItem.Builder, com.google.ads.googleads.v14.common.CallFeedItemOrBuilder> 
          getCallExtensionsFieldBuilder() {
        if (callExtensionsBuilder_ == null) {
          callExtensionsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.ads.googleads.v14.common.CallFeedItem, com.google.ads.googleads.v14.common.CallFeedItem.Builder, com.google.ads.googleads.v14.common.CallFeedItemOrBuilder>(
                  callExtensions_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          callExtensions_ = null;
        }
        return callExtensionsBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:google.ads.googleads.v14.services.ApplyRecommendationOperation.CallExtensionParameters)
    }

    // @@protoc_insertion_point(class_scope:google.ads.googleads.v14.services.ApplyRecommendationOperation.CallExtensionParameters)
    private static final com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallExtensionParameters DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallExtensionParameters();
    }

    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallExtensionParameters getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallExtensionParameters getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SitelinkExtensionParametersOrBuilder extends
      // @@protoc_insertion_point(interface_extends:google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkExtensionParameters)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Sitelinks to be added. This is a required field.
     * </pre>
     *
     * <code>repeated .google.ads.googleads.v14.common.SitelinkFeedItem sitelink_extensions = 1;</code>
     */
    java.util.List<com.google.ads.googleads.v14.common.SitelinkFeedItem> 
        getSitelinkExtensionsList();
    /**
     * <pre>
     * Sitelinks to be added. This is a required field.
     * </pre>
     *
     * <code>repeated .google.ads.googleads.v14.common.SitelinkFeedItem sitelink_extensions = 1;</code>
     */
    com.google.ads.googleads.v14.common.SitelinkFeedItem getSitelinkExtensions(int index);
    /**
     * <pre>
     * Sitelinks to be added. This is a required field.
     * </pre>
     *
     * <code>repeated .google.ads.googleads.v14.common.SitelinkFeedItem sitelink_extensions = 1;</code>
     */
    int getSitelinkExtensionsCount();
    /**
     * <pre>
     * Sitelinks to be added. This is a required field.
     * </pre>
     *
     * <code>repeated .google.ads.googleads.v14.common.SitelinkFeedItem sitelink_extensions = 1;</code>
     */
    java.util.List<? extends com.google.ads.googleads.v14.common.SitelinkFeedItemOrBuilder> 
        getSitelinkExtensionsOrBuilderList();
    /**
     * <pre>
     * Sitelinks to be added. This is a required field.
     * </pre>
     *
     * <code>repeated .google.ads.googleads.v14.common.SitelinkFeedItem sitelink_extensions = 1;</code>
     */
    com.google.ads.googleads.v14.common.SitelinkFeedItemOrBuilder getSitelinkExtensionsOrBuilder(
        int index);
  }
  /**
   * <pre>
   * Parameters to use when applying sitelink recommendation.
   * </pre>
   *
   * Protobuf type {@code google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkExtensionParameters}
   */
  public static final class SitelinkExtensionParameters extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkExtensionParameters)
      SitelinkExtensionParametersOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use SitelinkExtensionParameters.newBuilder() to construct.
    private SitelinkExtensionParameters(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private SitelinkExtensionParameters() {
      sitelinkExtensions_ = java.util.Collections.emptyList();
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_SitelinkExtensionParameters_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_SitelinkExtensionParameters_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkExtensionParameters.class, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkExtensionParameters.Builder.class);
    }

    public static final int SITELINK_EXTENSIONS_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private java.util.List<com.google.ads.googleads.v14.common.SitelinkFeedItem> sitelinkExtensions_;
    /**
     * <pre>
     * Sitelinks to be added. This is a required field.
     * </pre>
     *
     * <code>repeated .google.ads.googleads.v14.common.SitelinkFeedItem sitelink_extensions = 1;</code>
     */
    @java.lang.Override
    public java.util.List<com.google.ads.googleads.v14.common.SitelinkFeedItem> getSitelinkExtensionsList() {
      return sitelinkExtensions_;
    }
    /**
     * <pre>
     * Sitelinks to be added. This is a required field.
     * </pre>
     *
     * <code>repeated .google.ads.googleads.v14.common.SitelinkFeedItem sitelink_extensions = 1;</code>
     */
    @java.lang.Override
    public java.util.List<? extends com.google.ads.googleads.v14.common.SitelinkFeedItemOrBuilder> 
        getSitelinkExtensionsOrBuilderList() {
      return sitelinkExtensions_;
    }
    /**
     * <pre>
     * Sitelinks to be added. This is a required field.
     * </pre>
     *
     * <code>repeated .google.ads.googleads.v14.common.SitelinkFeedItem sitelink_extensions = 1;</code>
     */
    @java.lang.Override
    public int getSitelinkExtensionsCount() {
      return sitelinkExtensions_.size();
    }
    /**
     * <pre>
     * Sitelinks to be added. This is a required field.
     * </pre>
     *
     * <code>repeated .google.ads.googleads.v14.common.SitelinkFeedItem sitelink_extensions = 1;</code>
     */
    @java.lang.Override
    public com.google.ads.googleads.v14.common.SitelinkFeedItem getSitelinkExtensions(int index) {
      return sitelinkExtensions_.get(index);
    }
    /**
     * <pre>
     * Sitelinks to be added. This is a required field.
     * </pre>
     *
     * <code>repeated .google.ads.googleads.v14.common.SitelinkFeedItem sitelink_extensions = 1;</code>
     */
    @java.lang.Override
    public com.google.ads.googleads.v14.common.SitelinkFeedItemOrBuilder getSitelinkExtensionsOrBuilder(
        int index) {
      return sitelinkExtensions_.get(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 < sitelinkExtensions_.size(); i++) {
        output.writeMessage(1, sitelinkExtensions_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      for (int i = 0; i < sitelinkExtensions_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, sitelinkExtensions_.get(i));
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkExtensionParameters)) {
        return super.equals(obj);
      }
      com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkExtensionParameters other = (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkExtensionParameters) obj;

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

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

    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkExtensionParameters parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkExtensionParameters parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkExtensionParameters parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkExtensionParameters parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkExtensionParameters parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkExtensionParameters parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkExtensionParameters parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkExtensionParameters parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkExtensionParameters parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkExtensionParameters parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkExtensionParameters parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkExtensionParameters parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkExtensionParameters prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Parameters to use when applying sitelink recommendation.
     * </pre>
     *
     * Protobuf type {@code google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkExtensionParameters}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkExtensionParameters)
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkExtensionParametersOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_SitelinkExtensionParameters_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_SitelinkExtensionParameters_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkExtensionParameters.class, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkExtensionParameters.Builder.class);
      }

      // Construct using com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkExtensionParameters.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        if (sitelinkExtensionsBuilder_ == null) {
          sitelinkExtensions_ = java.util.Collections.emptyList();
        } else {
          sitelinkExtensions_ = null;
          sitelinkExtensionsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_SitelinkExtensionParameters_descriptor;
      }

      @java.lang.Override
      public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkExtensionParameters getDefaultInstanceForType() {
        return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkExtensionParameters.getDefaultInstance();
      }

      @java.lang.Override
      public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkExtensionParameters build() {
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkExtensionParameters result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkExtensionParameters buildPartial() {
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkExtensionParameters result = new com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkExtensionParameters(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkExtensionParameters result) {
        if (sitelinkExtensionsBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            sitelinkExtensions_ = java.util.Collections.unmodifiableList(sitelinkExtensions_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.sitelinkExtensions_ = sitelinkExtensions_;
        } else {
          result.sitelinkExtensions_ = sitelinkExtensionsBuilder_.build();
        }
      }

      private void buildPartial0(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkExtensionParameters result) {
        int from_bitField0_ = bitField0_;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkExtensionParameters) {
          return mergeFrom((com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkExtensionParameters)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkExtensionParameters other) {
        if (other == com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkExtensionParameters.getDefaultInstance()) return this;
        if (sitelinkExtensionsBuilder_ == null) {
          if (!other.sitelinkExtensions_.isEmpty()) {
            if (sitelinkExtensions_.isEmpty()) {
              sitelinkExtensions_ = other.sitelinkExtensions_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureSitelinkExtensionsIsMutable();
              sitelinkExtensions_.addAll(other.sitelinkExtensions_);
            }
            onChanged();
          }
        } else {
          if (!other.sitelinkExtensions_.isEmpty()) {
            if (sitelinkExtensionsBuilder_.isEmpty()) {
              sitelinkExtensionsBuilder_.dispose();
              sitelinkExtensionsBuilder_ = null;
              sitelinkExtensions_ = other.sitelinkExtensions_;
              bitField0_ = (bitField0_ & ~0x00000001);
              sitelinkExtensionsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getSitelinkExtensionsFieldBuilder() : null;
            } else {
              sitelinkExtensionsBuilder_.addAllMessages(other.sitelinkExtensions_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                com.google.ads.googleads.v14.common.SitelinkFeedItem m =
                    input.readMessage(
                        com.google.ads.googleads.v14.common.SitelinkFeedItem.parser(),
                        extensionRegistry);
                if (sitelinkExtensionsBuilder_ == null) {
                  ensureSitelinkExtensionsIsMutable();
                  sitelinkExtensions_.add(m);
                } else {
                  sitelinkExtensionsBuilder_.addMessage(m);
                }
                break;
              } // case 10
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.util.List<com.google.ads.googleads.v14.common.SitelinkFeedItem> sitelinkExtensions_ =
        java.util.Collections.emptyList();
      private void ensureSitelinkExtensionsIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          sitelinkExtensions_ = new java.util.ArrayList<com.google.ads.googleads.v14.common.SitelinkFeedItem>(sitelinkExtensions_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.ads.googleads.v14.common.SitelinkFeedItem, com.google.ads.googleads.v14.common.SitelinkFeedItem.Builder, com.google.ads.googleads.v14.common.SitelinkFeedItemOrBuilder> sitelinkExtensionsBuilder_;

      /**
       * <pre>
       * Sitelinks to be added. This is a required field.
       * </pre>
       *
       * <code>repeated .google.ads.googleads.v14.common.SitelinkFeedItem sitelink_extensions = 1;</code>
       */
      public java.util.List<com.google.ads.googleads.v14.common.SitelinkFeedItem> getSitelinkExtensionsList() {
        if (sitelinkExtensionsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(sitelinkExtensions_);
        } else {
          return sitelinkExtensionsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * Sitelinks to be added. This is a required field.
       * </pre>
       *
       * <code>repeated .google.ads.googleads.v14.common.SitelinkFeedItem sitelink_extensions = 1;</code>
       */
      public int getSitelinkExtensionsCount() {
        if (sitelinkExtensionsBuilder_ == null) {
          return sitelinkExtensions_.size();
        } else {
          return sitelinkExtensionsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * Sitelinks to be added. This is a required field.
       * </pre>
       *
       * <code>repeated .google.ads.googleads.v14.common.SitelinkFeedItem sitelink_extensions = 1;</code>
       */
      public com.google.ads.googleads.v14.common.SitelinkFeedItem getSitelinkExtensions(int index) {
        if (sitelinkExtensionsBuilder_ == null) {
          return sitelinkExtensions_.get(index);
        } else {
          return sitelinkExtensionsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * Sitelinks to be added. This is a required field.
       * </pre>
       *
       * <code>repeated .google.ads.googleads.v14.common.SitelinkFeedItem sitelink_extensions = 1;</code>
       */
      public Builder setSitelinkExtensions(
          int index, com.google.ads.googleads.v14.common.SitelinkFeedItem value) {
        if (sitelinkExtensionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSitelinkExtensionsIsMutable();
          sitelinkExtensions_.set(index, value);
          onChanged();
        } else {
          sitelinkExtensionsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Sitelinks to be added. This is a required field.
       * </pre>
       *
       * <code>repeated .google.ads.googleads.v14.common.SitelinkFeedItem sitelink_extensions = 1;</code>
       */
      public Builder setSitelinkExtensions(
          int index, com.google.ads.googleads.v14.common.SitelinkFeedItem.Builder builderForValue) {
        if (sitelinkExtensionsBuilder_ == null) {
          ensureSitelinkExtensionsIsMutable();
          sitelinkExtensions_.set(index, builderForValue.build());
          onChanged();
        } else {
          sitelinkExtensionsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Sitelinks to be added. This is a required field.
       * </pre>
       *
       * <code>repeated .google.ads.googleads.v14.common.SitelinkFeedItem sitelink_extensions = 1;</code>
       */
      public Builder addSitelinkExtensions(com.google.ads.googleads.v14.common.SitelinkFeedItem value) {
        if (sitelinkExtensionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSitelinkExtensionsIsMutable();
          sitelinkExtensions_.add(value);
          onChanged();
        } else {
          sitelinkExtensionsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * Sitelinks to be added. This is a required field.
       * </pre>
       *
       * <code>repeated .google.ads.googleads.v14.common.SitelinkFeedItem sitelink_extensions = 1;</code>
       */
      public Builder addSitelinkExtensions(
          int index, com.google.ads.googleads.v14.common.SitelinkFeedItem value) {
        if (sitelinkExtensionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureSitelinkExtensionsIsMutable();
          sitelinkExtensions_.add(index, value);
          onChanged();
        } else {
          sitelinkExtensionsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Sitelinks to be added. This is a required field.
       * </pre>
       *
       * <code>repeated .google.ads.googleads.v14.common.SitelinkFeedItem sitelink_extensions = 1;</code>
       */
      public Builder addSitelinkExtensions(
          com.google.ads.googleads.v14.common.SitelinkFeedItem.Builder builderForValue) {
        if (sitelinkExtensionsBuilder_ == null) {
          ensureSitelinkExtensionsIsMutable();
          sitelinkExtensions_.add(builderForValue.build());
          onChanged();
        } else {
          sitelinkExtensionsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Sitelinks to be added. This is a required field.
       * </pre>
       *
       * <code>repeated .google.ads.googleads.v14.common.SitelinkFeedItem sitelink_extensions = 1;</code>
       */
      public Builder addSitelinkExtensions(
          int index, com.google.ads.googleads.v14.common.SitelinkFeedItem.Builder builderForValue) {
        if (sitelinkExtensionsBuilder_ == null) {
          ensureSitelinkExtensionsIsMutable();
          sitelinkExtensions_.add(index, builderForValue.build());
          onChanged();
        } else {
          sitelinkExtensionsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Sitelinks to be added. This is a required field.
       * </pre>
       *
       * <code>repeated .google.ads.googleads.v14.common.SitelinkFeedItem sitelink_extensions = 1;</code>
       */
      public Builder addAllSitelinkExtensions(
          java.lang.Iterable<? extends com.google.ads.googleads.v14.common.SitelinkFeedItem> values) {
        if (sitelinkExtensionsBuilder_ == null) {
          ensureSitelinkExtensionsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, sitelinkExtensions_);
          onChanged();
        } else {
          sitelinkExtensionsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * Sitelinks to be added. This is a required field.
       * </pre>
       *
       * <code>repeated .google.ads.googleads.v14.common.SitelinkFeedItem sitelink_extensions = 1;</code>
       */
      public Builder clearSitelinkExtensions() {
        if (sitelinkExtensionsBuilder_ == null) {
          sitelinkExtensions_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          sitelinkExtensionsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Sitelinks to be added. This is a required field.
       * </pre>
       *
       * <code>repeated .google.ads.googleads.v14.common.SitelinkFeedItem sitelink_extensions = 1;</code>
       */
      public Builder removeSitelinkExtensions(int index) {
        if (sitelinkExtensionsBuilder_ == null) {
          ensureSitelinkExtensionsIsMutable();
          sitelinkExtensions_.remove(index);
          onChanged();
        } else {
          sitelinkExtensionsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * Sitelinks to be added. This is a required field.
       * </pre>
       *
       * <code>repeated .google.ads.googleads.v14.common.SitelinkFeedItem sitelink_extensions = 1;</code>
       */
      public com.google.ads.googleads.v14.common.SitelinkFeedItem.Builder getSitelinkExtensionsBuilder(
          int index) {
        return getSitelinkExtensionsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * Sitelinks to be added. This is a required field.
       * </pre>
       *
       * <code>repeated .google.ads.googleads.v14.common.SitelinkFeedItem sitelink_extensions = 1;</code>
       */
      public com.google.ads.googleads.v14.common.SitelinkFeedItemOrBuilder getSitelinkExtensionsOrBuilder(
          int index) {
        if (sitelinkExtensionsBuilder_ == null) {
          return sitelinkExtensions_.get(index);  } else {
          return sitelinkExtensionsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * Sitelinks to be added. This is a required field.
       * </pre>
       *
       * <code>repeated .google.ads.googleads.v14.common.SitelinkFeedItem sitelink_extensions = 1;</code>
       */
      public java.util.List<? extends com.google.ads.googleads.v14.common.SitelinkFeedItemOrBuilder> 
           getSitelinkExtensionsOrBuilderList() {
        if (sitelinkExtensionsBuilder_ != null) {
          return sitelinkExtensionsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(sitelinkExtensions_);
        }
      }
      /**
       * <pre>
       * Sitelinks to be added. This is a required field.
       * </pre>
       *
       * <code>repeated .google.ads.googleads.v14.common.SitelinkFeedItem sitelink_extensions = 1;</code>
       */
      public com.google.ads.googleads.v14.common.SitelinkFeedItem.Builder addSitelinkExtensionsBuilder() {
        return getSitelinkExtensionsFieldBuilder().addBuilder(
            com.google.ads.googleads.v14.common.SitelinkFeedItem.getDefaultInstance());
      }
      /**
       * <pre>
       * Sitelinks to be added. This is a required field.
       * </pre>
       *
       * <code>repeated .google.ads.googleads.v14.common.SitelinkFeedItem sitelink_extensions = 1;</code>
       */
      public com.google.ads.googleads.v14.common.SitelinkFeedItem.Builder addSitelinkExtensionsBuilder(
          int index) {
        return getSitelinkExtensionsFieldBuilder().addBuilder(
            index, com.google.ads.googleads.v14.common.SitelinkFeedItem.getDefaultInstance());
      }
      /**
       * <pre>
       * Sitelinks to be added. This is a required field.
       * </pre>
       *
       * <code>repeated .google.ads.googleads.v14.common.SitelinkFeedItem sitelink_extensions = 1;</code>
       */
      public java.util.List<com.google.ads.googleads.v14.common.SitelinkFeedItem.Builder> 
           getSitelinkExtensionsBuilderList() {
        return getSitelinkExtensionsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.ads.googleads.v14.common.SitelinkFeedItem, com.google.ads.googleads.v14.common.SitelinkFeedItem.Builder, com.google.ads.googleads.v14.common.SitelinkFeedItemOrBuilder> 
          getSitelinkExtensionsFieldBuilder() {
        if (sitelinkExtensionsBuilder_ == null) {
          sitelinkExtensionsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.ads.googleads.v14.common.SitelinkFeedItem, com.google.ads.googleads.v14.common.SitelinkFeedItem.Builder, com.google.ads.googleads.v14.common.SitelinkFeedItemOrBuilder>(
                  sitelinkExtensions_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          sitelinkExtensions_ = null;
        }
        return sitelinkExtensionsBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkExtensionParameters)
    }

    // @@protoc_insertion_point(class_scope:google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkExtensionParameters)
    private static final com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkExtensionParameters DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkExtensionParameters();
    }

    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkExtensionParameters getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkExtensionParameters getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface CalloutAssetParametersOrBuilder extends
      // @@protoc_insertion_point(interface_extends:google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutAssetParameters)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Required. Callout assets to be added. This is a required field.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters ad_asset_apply_parameters = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return Whether the adAssetApplyParameters field is set.
     */
    boolean hasAdAssetApplyParameters();
    /**
     * <pre>
     * Required. Callout assets to be added. This is a required field.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters ad_asset_apply_parameters = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The adAssetApplyParameters.
     */
    com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters getAdAssetApplyParameters();
    /**
     * <pre>
     * Required. Callout assets to be added. This is a required field.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters ad_asset_apply_parameters = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParametersOrBuilder getAdAssetApplyParametersOrBuilder();
  }
  /**
   * <pre>
   * Parameters to use when applying callout asset recommendations.
   * </pre>
   *
   * Protobuf type {@code google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutAssetParameters}
   */
  public static final class CalloutAssetParameters extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutAssetParameters)
      CalloutAssetParametersOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use CalloutAssetParameters.newBuilder() to construct.
    private CalloutAssetParameters(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private CalloutAssetParameters() {
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_CalloutAssetParameters_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_CalloutAssetParameters_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutAssetParameters.class, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutAssetParameters.Builder.class);
    }

    public static final int AD_ASSET_APPLY_PARAMETERS_FIELD_NUMBER = 1;
    private com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters adAssetApplyParameters_;
    /**
     * <pre>
     * Required. Callout assets to be added. This is a required field.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters ad_asset_apply_parameters = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return Whether the adAssetApplyParameters field is set.
     */
    @java.lang.Override
    public boolean hasAdAssetApplyParameters() {
      return adAssetApplyParameters_ != null;
    }
    /**
     * <pre>
     * Required. Callout assets to be added. This is a required field.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters ad_asset_apply_parameters = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The adAssetApplyParameters.
     */
    @java.lang.Override
    public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters getAdAssetApplyParameters() {
      return adAssetApplyParameters_ == null ? com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters.getDefaultInstance() : adAssetApplyParameters_;
    }
    /**
     * <pre>
     * Required. Callout assets to be added. This is a required field.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters ad_asset_apply_parameters = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    @java.lang.Override
    public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParametersOrBuilder getAdAssetApplyParametersOrBuilder() {
      return adAssetApplyParameters_ == null ? com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters.getDefaultInstance() : adAssetApplyParameters_;
    }

    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 (adAssetApplyParameters_ != null) {
        output.writeMessage(1, getAdAssetApplyParameters());
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (adAssetApplyParameters_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getAdAssetApplyParameters());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutAssetParameters)) {
        return super.equals(obj);
      }
      com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutAssetParameters other = (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutAssetParameters) obj;

      if (hasAdAssetApplyParameters() != other.hasAdAssetApplyParameters()) return false;
      if (hasAdAssetApplyParameters()) {
        if (!getAdAssetApplyParameters()
            .equals(other.getAdAssetApplyParameters())) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

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

    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutAssetParameters parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutAssetParameters parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutAssetParameters parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutAssetParameters parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutAssetParameters parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutAssetParameters parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutAssetParameters parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutAssetParameters parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutAssetParameters parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutAssetParameters parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutAssetParameters parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutAssetParameters parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutAssetParameters prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Parameters to use when applying callout asset recommendations.
     * </pre>
     *
     * Protobuf type {@code google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutAssetParameters}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutAssetParameters)
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutAssetParametersOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_CalloutAssetParameters_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_CalloutAssetParameters_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutAssetParameters.class, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutAssetParameters.Builder.class);
      }

      // Construct using com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutAssetParameters.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        adAssetApplyParameters_ = null;
        if (adAssetApplyParametersBuilder_ != null) {
          adAssetApplyParametersBuilder_.dispose();
          adAssetApplyParametersBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_CalloutAssetParameters_descriptor;
      }

      @java.lang.Override
      public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutAssetParameters getDefaultInstanceForType() {
        return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutAssetParameters.getDefaultInstance();
      }

      @java.lang.Override
      public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutAssetParameters build() {
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutAssetParameters result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutAssetParameters buildPartial() {
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutAssetParameters result = new com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutAssetParameters(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutAssetParameters result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.adAssetApplyParameters_ = adAssetApplyParametersBuilder_ == null
              ? adAssetApplyParameters_
              : adAssetApplyParametersBuilder_.build();
        }
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutAssetParameters) {
          return mergeFrom((com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutAssetParameters)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutAssetParameters other) {
        if (other == com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutAssetParameters.getDefaultInstance()) return this;
        if (other.hasAdAssetApplyParameters()) {
          mergeAdAssetApplyParameters(other.getAdAssetApplyParameters());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                input.readMessage(
                    getAdAssetApplyParametersFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters adAssetApplyParameters_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters.Builder, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParametersOrBuilder> adAssetApplyParametersBuilder_;
      /**
       * <pre>
       * Required. Callout assets to be added. This is a required field.
       * </pre>
       *
       * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters ad_asset_apply_parameters = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return Whether the adAssetApplyParameters field is set.
       */
      public boolean hasAdAssetApplyParameters() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Required. Callout assets to be added. This is a required field.
       * </pre>
       *
       * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters ad_asset_apply_parameters = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The adAssetApplyParameters.
       */
      public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters getAdAssetApplyParameters() {
        if (adAssetApplyParametersBuilder_ == null) {
          return adAssetApplyParameters_ == null ? com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters.getDefaultInstance() : adAssetApplyParameters_;
        } else {
          return adAssetApplyParametersBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Required. Callout assets to be added. This is a required field.
       * </pre>
       *
       * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters ad_asset_apply_parameters = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      public Builder setAdAssetApplyParameters(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters value) {
        if (adAssetApplyParametersBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          adAssetApplyParameters_ = value;
        } else {
          adAssetApplyParametersBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Required. Callout assets to be added. This is a required field.
       * </pre>
       *
       * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters ad_asset_apply_parameters = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      public Builder setAdAssetApplyParameters(
          com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters.Builder builderForValue) {
        if (adAssetApplyParametersBuilder_ == null) {
          adAssetApplyParameters_ = builderForValue.build();
        } else {
          adAssetApplyParametersBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Required. Callout assets to be added. This is a required field.
       * </pre>
       *
       * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters ad_asset_apply_parameters = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      public Builder mergeAdAssetApplyParameters(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters value) {
        if (adAssetApplyParametersBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            adAssetApplyParameters_ != null &&
            adAssetApplyParameters_ != com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters.getDefaultInstance()) {
            getAdAssetApplyParametersBuilder().mergeFrom(value);
          } else {
            adAssetApplyParameters_ = value;
          }
        } else {
          adAssetApplyParametersBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Required. Callout assets to be added. This is a required field.
       * </pre>
       *
       * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters ad_asset_apply_parameters = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      public Builder clearAdAssetApplyParameters() {
        bitField0_ = (bitField0_ & ~0x00000001);
        adAssetApplyParameters_ = null;
        if (adAssetApplyParametersBuilder_ != null) {
          adAssetApplyParametersBuilder_.dispose();
          adAssetApplyParametersBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Required. Callout assets to be added. This is a required field.
       * </pre>
       *
       * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters ad_asset_apply_parameters = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters.Builder getAdAssetApplyParametersBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getAdAssetApplyParametersFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Required. Callout assets to be added. This is a required field.
       * </pre>
       *
       * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters ad_asset_apply_parameters = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParametersOrBuilder getAdAssetApplyParametersOrBuilder() {
        if (adAssetApplyParametersBuilder_ != null) {
          return adAssetApplyParametersBuilder_.getMessageOrBuilder();
        } else {
          return adAssetApplyParameters_ == null ?
              com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters.getDefaultInstance() : adAssetApplyParameters_;
        }
      }
      /**
       * <pre>
       * Required. Callout assets to be added. This is a required field.
       * </pre>
       *
       * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters ad_asset_apply_parameters = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters.Builder, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParametersOrBuilder> 
          getAdAssetApplyParametersFieldBuilder() {
        if (adAssetApplyParametersBuilder_ == null) {
          adAssetApplyParametersBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters.Builder, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParametersOrBuilder>(
                  getAdAssetApplyParameters(),
                  getParentForChildren(),
                  isClean());
          adAssetApplyParameters_ = null;
        }
        return adAssetApplyParametersBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutAssetParameters)
    }

    // @@protoc_insertion_point(class_scope:google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutAssetParameters)
    private static final com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutAssetParameters DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutAssetParameters();
    }

    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutAssetParameters getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutAssetParameters getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface CallAssetParametersOrBuilder extends
      // @@protoc_insertion_point(interface_extends:google.ads.googleads.v14.services.ApplyRecommendationOperation.CallAssetParameters)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Required. Call assets to be added. This is a required field.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters ad_asset_apply_parameters = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return Whether the adAssetApplyParameters field is set.
     */
    boolean hasAdAssetApplyParameters();
    /**
     * <pre>
     * Required. Call assets to be added. This is a required field.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters ad_asset_apply_parameters = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The adAssetApplyParameters.
     */
    com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters getAdAssetApplyParameters();
    /**
     * <pre>
     * Required. Call assets to be added. This is a required field.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters ad_asset_apply_parameters = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParametersOrBuilder getAdAssetApplyParametersOrBuilder();
  }
  /**
   * <pre>
   * Parameters to use when applying call asset recommendations.
   * </pre>
   *
   * Protobuf type {@code google.ads.googleads.v14.services.ApplyRecommendationOperation.CallAssetParameters}
   */
  public static final class CallAssetParameters extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:google.ads.googleads.v14.services.ApplyRecommendationOperation.CallAssetParameters)
      CallAssetParametersOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use CallAssetParameters.newBuilder() to construct.
    private CallAssetParameters(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private CallAssetParameters() {
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_CallAssetParameters_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_CallAssetParameters_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallAssetParameters.class, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallAssetParameters.Builder.class);
    }

    public static final int AD_ASSET_APPLY_PARAMETERS_FIELD_NUMBER = 1;
    private com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters adAssetApplyParameters_;
    /**
     * <pre>
     * Required. Call assets to be added. This is a required field.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters ad_asset_apply_parameters = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return Whether the adAssetApplyParameters field is set.
     */
    @java.lang.Override
    public boolean hasAdAssetApplyParameters() {
      return adAssetApplyParameters_ != null;
    }
    /**
     * <pre>
     * Required. Call assets to be added. This is a required field.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters ad_asset_apply_parameters = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The adAssetApplyParameters.
     */
    @java.lang.Override
    public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters getAdAssetApplyParameters() {
      return adAssetApplyParameters_ == null ? com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters.getDefaultInstance() : adAssetApplyParameters_;
    }
    /**
     * <pre>
     * Required. Call assets to be added. This is a required field.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters ad_asset_apply_parameters = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    @java.lang.Override
    public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParametersOrBuilder getAdAssetApplyParametersOrBuilder() {
      return adAssetApplyParameters_ == null ? com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters.getDefaultInstance() : adAssetApplyParameters_;
    }

    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 (adAssetApplyParameters_ != null) {
        output.writeMessage(1, getAdAssetApplyParameters());
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (adAssetApplyParameters_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getAdAssetApplyParameters());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallAssetParameters)) {
        return super.equals(obj);
      }
      com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallAssetParameters other = (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallAssetParameters) obj;

      if (hasAdAssetApplyParameters() != other.hasAdAssetApplyParameters()) return false;
      if (hasAdAssetApplyParameters()) {
        if (!getAdAssetApplyParameters()
            .equals(other.getAdAssetApplyParameters())) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

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

    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallAssetParameters parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallAssetParameters parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallAssetParameters parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallAssetParameters parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallAssetParameters parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallAssetParameters parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallAssetParameters parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallAssetParameters parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallAssetParameters parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallAssetParameters parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallAssetParameters parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallAssetParameters parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallAssetParameters prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Parameters to use when applying call asset recommendations.
     * </pre>
     *
     * Protobuf type {@code google.ads.googleads.v14.services.ApplyRecommendationOperation.CallAssetParameters}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:google.ads.googleads.v14.services.ApplyRecommendationOperation.CallAssetParameters)
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallAssetParametersOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_CallAssetParameters_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_CallAssetParameters_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallAssetParameters.class, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallAssetParameters.Builder.class);
      }

      // Construct using com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallAssetParameters.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        adAssetApplyParameters_ = null;
        if (adAssetApplyParametersBuilder_ != null) {
          adAssetApplyParametersBuilder_.dispose();
          adAssetApplyParametersBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_CallAssetParameters_descriptor;
      }

      @java.lang.Override
      public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallAssetParameters getDefaultInstanceForType() {
        return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallAssetParameters.getDefaultInstance();
      }

      @java.lang.Override
      public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallAssetParameters build() {
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallAssetParameters result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallAssetParameters buildPartial() {
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallAssetParameters result = new com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallAssetParameters(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallAssetParameters result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.adAssetApplyParameters_ = adAssetApplyParametersBuilder_ == null
              ? adAssetApplyParameters_
              : adAssetApplyParametersBuilder_.build();
        }
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallAssetParameters) {
          return mergeFrom((com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallAssetParameters)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallAssetParameters other) {
        if (other == com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallAssetParameters.getDefaultInstance()) return this;
        if (other.hasAdAssetApplyParameters()) {
          mergeAdAssetApplyParameters(other.getAdAssetApplyParameters());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                input.readMessage(
                    getAdAssetApplyParametersFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters adAssetApplyParameters_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters.Builder, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParametersOrBuilder> adAssetApplyParametersBuilder_;
      /**
       * <pre>
       * Required. Call assets to be added. This is a required field.
       * </pre>
       *
       * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters ad_asset_apply_parameters = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return Whether the adAssetApplyParameters field is set.
       */
      public boolean hasAdAssetApplyParameters() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Required. Call assets to be added. This is a required field.
       * </pre>
       *
       * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters ad_asset_apply_parameters = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The adAssetApplyParameters.
       */
      public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters getAdAssetApplyParameters() {
        if (adAssetApplyParametersBuilder_ == null) {
          return adAssetApplyParameters_ == null ? com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters.getDefaultInstance() : adAssetApplyParameters_;
        } else {
          return adAssetApplyParametersBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Required. Call assets to be added. This is a required field.
       * </pre>
       *
       * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters ad_asset_apply_parameters = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      public Builder setAdAssetApplyParameters(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters value) {
        if (adAssetApplyParametersBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          adAssetApplyParameters_ = value;
        } else {
          adAssetApplyParametersBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Required. Call assets to be added. This is a required field.
       * </pre>
       *
       * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters ad_asset_apply_parameters = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      public Builder setAdAssetApplyParameters(
          com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters.Builder builderForValue) {
        if (adAssetApplyParametersBuilder_ == null) {
          adAssetApplyParameters_ = builderForValue.build();
        } else {
          adAssetApplyParametersBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Required. Call assets to be added. This is a required field.
       * </pre>
       *
       * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters ad_asset_apply_parameters = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      public Builder mergeAdAssetApplyParameters(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters value) {
        if (adAssetApplyParametersBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            adAssetApplyParameters_ != null &&
            adAssetApplyParameters_ != com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters.getDefaultInstance()) {
            getAdAssetApplyParametersBuilder().mergeFrom(value);
          } else {
            adAssetApplyParameters_ = value;
          }
        } else {
          adAssetApplyParametersBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Required. Call assets to be added. This is a required field.
       * </pre>
       *
       * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters ad_asset_apply_parameters = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      public Builder clearAdAssetApplyParameters() {
        bitField0_ = (bitField0_ & ~0x00000001);
        adAssetApplyParameters_ = null;
        if (adAssetApplyParametersBuilder_ != null) {
          adAssetApplyParametersBuilder_.dispose();
          adAssetApplyParametersBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Required. Call assets to be added. This is a required field.
       * </pre>
       *
       * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters ad_asset_apply_parameters = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters.Builder getAdAssetApplyParametersBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getAdAssetApplyParametersFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Required. Call assets to be added. This is a required field.
       * </pre>
       *
       * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters ad_asset_apply_parameters = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParametersOrBuilder getAdAssetApplyParametersOrBuilder() {
        if (adAssetApplyParametersBuilder_ != null) {
          return adAssetApplyParametersBuilder_.getMessageOrBuilder();
        } else {
          return adAssetApplyParameters_ == null ?
              com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters.getDefaultInstance() : adAssetApplyParameters_;
        }
      }
      /**
       * <pre>
       * Required. Call assets to be added. This is a required field.
       * </pre>
       *
       * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters ad_asset_apply_parameters = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters.Builder, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParametersOrBuilder> 
          getAdAssetApplyParametersFieldBuilder() {
        if (adAssetApplyParametersBuilder_ == null) {
          adAssetApplyParametersBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters.Builder, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParametersOrBuilder>(
                  getAdAssetApplyParameters(),
                  getParentForChildren(),
                  isClean());
          adAssetApplyParameters_ = null;
        }
        return adAssetApplyParametersBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:google.ads.googleads.v14.services.ApplyRecommendationOperation.CallAssetParameters)
    }

    // @@protoc_insertion_point(class_scope:google.ads.googleads.v14.services.ApplyRecommendationOperation.CallAssetParameters)
    private static final com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallAssetParameters DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallAssetParameters();
    }

    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallAssetParameters getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallAssetParameters getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SitelinkAssetParametersOrBuilder extends
      // @@protoc_insertion_point(interface_extends:google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkAssetParameters)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Required. Sitelink assets to be added. This is a required field.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters ad_asset_apply_parameters = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return Whether the adAssetApplyParameters field is set.
     */
    boolean hasAdAssetApplyParameters();
    /**
     * <pre>
     * Required. Sitelink assets to be added. This is a required field.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters ad_asset_apply_parameters = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The adAssetApplyParameters.
     */
    com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters getAdAssetApplyParameters();
    /**
     * <pre>
     * Required. Sitelink assets to be added. This is a required field.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters ad_asset_apply_parameters = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParametersOrBuilder getAdAssetApplyParametersOrBuilder();
  }
  /**
   * <pre>
   * Parameters to use when applying sitelink asset recommendations.
   * </pre>
   *
   * Protobuf type {@code google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkAssetParameters}
   */
  public static final class SitelinkAssetParameters extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkAssetParameters)
      SitelinkAssetParametersOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use SitelinkAssetParameters.newBuilder() to construct.
    private SitelinkAssetParameters(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private SitelinkAssetParameters() {
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_SitelinkAssetParameters_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_SitelinkAssetParameters_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkAssetParameters.class, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkAssetParameters.Builder.class);
    }

    public static final int AD_ASSET_APPLY_PARAMETERS_FIELD_NUMBER = 1;
    private com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters adAssetApplyParameters_;
    /**
     * <pre>
     * Required. Sitelink assets to be added. This is a required field.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters ad_asset_apply_parameters = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return Whether the adAssetApplyParameters field is set.
     */
    @java.lang.Override
    public boolean hasAdAssetApplyParameters() {
      return adAssetApplyParameters_ != null;
    }
    /**
     * <pre>
     * Required. Sitelink assets to be added. This is a required field.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters ad_asset_apply_parameters = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The adAssetApplyParameters.
     */
    @java.lang.Override
    public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters getAdAssetApplyParameters() {
      return adAssetApplyParameters_ == null ? com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters.getDefaultInstance() : adAssetApplyParameters_;
    }
    /**
     * <pre>
     * Required. Sitelink assets to be added. This is a required field.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters ad_asset_apply_parameters = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    @java.lang.Override
    public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParametersOrBuilder getAdAssetApplyParametersOrBuilder() {
      return adAssetApplyParameters_ == null ? com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters.getDefaultInstance() : adAssetApplyParameters_;
    }

    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 (adAssetApplyParameters_ != null) {
        output.writeMessage(1, getAdAssetApplyParameters());
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (adAssetApplyParameters_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getAdAssetApplyParameters());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkAssetParameters)) {
        return super.equals(obj);
      }
      com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkAssetParameters other = (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkAssetParameters) obj;

      if (hasAdAssetApplyParameters() != other.hasAdAssetApplyParameters()) return false;
      if (hasAdAssetApplyParameters()) {
        if (!getAdAssetApplyParameters()
            .equals(other.getAdAssetApplyParameters())) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

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

    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkAssetParameters parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkAssetParameters parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkAssetParameters parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkAssetParameters parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkAssetParameters parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkAssetParameters parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkAssetParameters parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkAssetParameters parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkAssetParameters parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkAssetParameters parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkAssetParameters parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkAssetParameters parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkAssetParameters prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Parameters to use when applying sitelink asset recommendations.
     * </pre>
     *
     * Protobuf type {@code google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkAssetParameters}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkAssetParameters)
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkAssetParametersOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_SitelinkAssetParameters_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_SitelinkAssetParameters_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkAssetParameters.class, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkAssetParameters.Builder.class);
      }

      // Construct using com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkAssetParameters.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        adAssetApplyParameters_ = null;
        if (adAssetApplyParametersBuilder_ != null) {
          adAssetApplyParametersBuilder_.dispose();
          adAssetApplyParametersBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_SitelinkAssetParameters_descriptor;
      }

      @java.lang.Override
      public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkAssetParameters getDefaultInstanceForType() {
        return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkAssetParameters.getDefaultInstance();
      }

      @java.lang.Override
      public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkAssetParameters build() {
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkAssetParameters result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkAssetParameters buildPartial() {
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkAssetParameters result = new com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkAssetParameters(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkAssetParameters result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.adAssetApplyParameters_ = adAssetApplyParametersBuilder_ == null
              ? adAssetApplyParameters_
              : adAssetApplyParametersBuilder_.build();
        }
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkAssetParameters) {
          return mergeFrom((com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkAssetParameters)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkAssetParameters other) {
        if (other == com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkAssetParameters.getDefaultInstance()) return this;
        if (other.hasAdAssetApplyParameters()) {
          mergeAdAssetApplyParameters(other.getAdAssetApplyParameters());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                input.readMessage(
                    getAdAssetApplyParametersFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters adAssetApplyParameters_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters.Builder, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParametersOrBuilder> adAssetApplyParametersBuilder_;
      /**
       * <pre>
       * Required. Sitelink assets to be added. This is a required field.
       * </pre>
       *
       * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters ad_asset_apply_parameters = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return Whether the adAssetApplyParameters field is set.
       */
      public boolean hasAdAssetApplyParameters() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Required. Sitelink assets to be added. This is a required field.
       * </pre>
       *
       * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters ad_asset_apply_parameters = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The adAssetApplyParameters.
       */
      public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters getAdAssetApplyParameters() {
        if (adAssetApplyParametersBuilder_ == null) {
          return adAssetApplyParameters_ == null ? com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters.getDefaultInstance() : adAssetApplyParameters_;
        } else {
          return adAssetApplyParametersBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Required. Sitelink assets to be added. This is a required field.
       * </pre>
       *
       * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters ad_asset_apply_parameters = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      public Builder setAdAssetApplyParameters(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters value) {
        if (adAssetApplyParametersBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          adAssetApplyParameters_ = value;
        } else {
          adAssetApplyParametersBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Required. Sitelink assets to be added. This is a required field.
       * </pre>
       *
       * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters ad_asset_apply_parameters = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      public Builder setAdAssetApplyParameters(
          com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters.Builder builderForValue) {
        if (adAssetApplyParametersBuilder_ == null) {
          adAssetApplyParameters_ = builderForValue.build();
        } else {
          adAssetApplyParametersBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Required. Sitelink assets to be added. This is a required field.
       * </pre>
       *
       * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters ad_asset_apply_parameters = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      public Builder mergeAdAssetApplyParameters(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters value) {
        if (adAssetApplyParametersBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            adAssetApplyParameters_ != null &&
            adAssetApplyParameters_ != com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters.getDefaultInstance()) {
            getAdAssetApplyParametersBuilder().mergeFrom(value);
          } else {
            adAssetApplyParameters_ = value;
          }
        } else {
          adAssetApplyParametersBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Required. Sitelink assets to be added. This is a required field.
       * </pre>
       *
       * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters ad_asset_apply_parameters = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      public Builder clearAdAssetApplyParameters() {
        bitField0_ = (bitField0_ & ~0x00000001);
        adAssetApplyParameters_ = null;
        if (adAssetApplyParametersBuilder_ != null) {
          adAssetApplyParametersBuilder_.dispose();
          adAssetApplyParametersBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Required. Sitelink assets to be added. This is a required field.
       * </pre>
       *
       * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters ad_asset_apply_parameters = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters.Builder getAdAssetApplyParametersBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getAdAssetApplyParametersFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Required. Sitelink assets to be added. This is a required field.
       * </pre>
       *
       * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters ad_asset_apply_parameters = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParametersOrBuilder getAdAssetApplyParametersOrBuilder() {
        if (adAssetApplyParametersBuilder_ != null) {
          return adAssetApplyParametersBuilder_.getMessageOrBuilder();
        } else {
          return adAssetApplyParameters_ == null ?
              com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters.getDefaultInstance() : adAssetApplyParameters_;
        }
      }
      /**
       * <pre>
       * Required. Sitelink assets to be added. This is a required field.
       * </pre>
       *
       * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters ad_asset_apply_parameters = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters.Builder, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParametersOrBuilder> 
          getAdAssetApplyParametersFieldBuilder() {
        if (adAssetApplyParametersBuilder_ == null) {
          adAssetApplyParametersBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters.Builder, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParametersOrBuilder>(
                  getAdAssetApplyParameters(),
                  getParentForChildren(),
                  isClean());
          adAssetApplyParameters_ = null;
        }
        return adAssetApplyParametersBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkAssetParameters)
    }

    // @@protoc_insertion_point(class_scope:google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkAssetParameters)
    private static final com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkAssetParameters DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkAssetParameters();
    }

    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkAssetParameters getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkAssetParameters getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface RaiseTargetCpaParametersOrBuilder extends
      // @@protoc_insertion_point(interface_extends:google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaParameters)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Required. Target to set CPA multiplier to. This is a required field.
     * </pre>
     *
     * <code>double target_cpa_multiplier = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The targetCpaMultiplier.
     */
    double getTargetCpaMultiplier();
  }
  /**
   * <pre>
   * Parameters to use when applying raise Target CPA recommendations.
   * </pre>
   *
   * Protobuf type {@code google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaParameters}
   */
  public static final class RaiseTargetCpaParameters extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaParameters)
      RaiseTargetCpaParametersOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use RaiseTargetCpaParameters.newBuilder() to construct.
    private RaiseTargetCpaParameters(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private RaiseTargetCpaParameters() {
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_RaiseTargetCpaParameters_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_RaiseTargetCpaParameters_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaParameters.class, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaParameters.Builder.class);
    }

    public static final int TARGET_CPA_MULTIPLIER_FIELD_NUMBER = 1;
    private double targetCpaMultiplier_ = 0D;
    /**
     * <pre>
     * Required. Target to set CPA multiplier to. This is a required field.
     * </pre>
     *
     * <code>double target_cpa_multiplier = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The targetCpaMultiplier.
     */
    @java.lang.Override
    public double getTargetCpaMultiplier() {
      return targetCpaMultiplier_;
    }

    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 (java.lang.Double.doubleToRawLongBits(targetCpaMultiplier_) != 0) {
        output.writeDouble(1, targetCpaMultiplier_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (java.lang.Double.doubleToRawLongBits(targetCpaMultiplier_) != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeDoubleSize(1, targetCpaMultiplier_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaParameters)) {
        return super.equals(obj);
      }
      com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaParameters other = (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaParameters) obj;

      if (java.lang.Double.doubleToLongBits(getTargetCpaMultiplier())
          != java.lang.Double.doubleToLongBits(
              other.getTargetCpaMultiplier())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

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

    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaParameters parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaParameters parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaParameters parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaParameters parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaParameters parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaParameters parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaParameters parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaParameters parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaParameters parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaParameters parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaParameters parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaParameters parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaParameters prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Parameters to use when applying raise Target CPA recommendations.
     * </pre>
     *
     * Protobuf type {@code google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaParameters}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaParameters)
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaParametersOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_RaiseTargetCpaParameters_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_RaiseTargetCpaParameters_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaParameters.class, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaParameters.Builder.class);
      }

      // Construct using com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaParameters.newBuilder()
      private Builder() {

      }

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

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

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_RaiseTargetCpaParameters_descriptor;
      }

      @java.lang.Override
      public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaParameters getDefaultInstanceForType() {
        return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaParameters.getDefaultInstance();
      }

      @java.lang.Override
      public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaParameters build() {
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaParameters result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaParameters buildPartial() {
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaParameters result = new com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaParameters(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaParameters result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.targetCpaMultiplier_ = targetCpaMultiplier_;
        }
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaParameters) {
          return mergeFrom((com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaParameters)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaParameters other) {
        if (other == com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaParameters.getDefaultInstance()) return this;
        if (other.getTargetCpaMultiplier() != 0D) {
          setTargetCpaMultiplier(other.getTargetCpaMultiplier());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 9: {
                targetCpaMultiplier_ = input.readDouble();
                bitField0_ |= 0x00000001;
                break;
              } // case 9
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private double targetCpaMultiplier_ ;
      /**
       * <pre>
       * Required. Target to set CPA multiplier to. This is a required field.
       * </pre>
       *
       * <code>double target_cpa_multiplier = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The targetCpaMultiplier.
       */
      @java.lang.Override
      public double getTargetCpaMultiplier() {
        return targetCpaMultiplier_;
      }
      /**
       * <pre>
       * Required. Target to set CPA multiplier to. This is a required field.
       * </pre>
       *
       * <code>double target_cpa_multiplier = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The targetCpaMultiplier to set.
       * @return This builder for chaining.
       */
      public Builder setTargetCpaMultiplier(double value) {

        targetCpaMultiplier_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Required. Target to set CPA multiplier to. This is a required field.
       * </pre>
       *
       * <code>double target_cpa_multiplier = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return This builder for chaining.
       */
      public Builder clearTargetCpaMultiplier() {
        bitField0_ = (bitField0_ & ~0x00000001);
        targetCpaMultiplier_ = 0D;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaParameters)
    }

    // @@protoc_insertion_point(class_scope:google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaParameters)
    private static final com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaParameters DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaParameters();
    }

    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaParameters getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaParameters getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface LowerTargetRoasParametersOrBuilder extends
      // @@protoc_insertion_point(interface_extends:google.ads.googleads.v14.services.ApplyRecommendationOperation.LowerTargetRoasParameters)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Required. Target to set ROAS multiplier to. This is a required field.
     * </pre>
     *
     * <code>double target_roas_multiplier = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The targetRoasMultiplier.
     */
    double getTargetRoasMultiplier();
  }
  /**
   * <pre>
   * Parameters to use when applying lower Target ROAS recommendations.
   * </pre>
   *
   * Protobuf type {@code google.ads.googleads.v14.services.ApplyRecommendationOperation.LowerTargetRoasParameters}
   */
  public static final class LowerTargetRoasParameters extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:google.ads.googleads.v14.services.ApplyRecommendationOperation.LowerTargetRoasParameters)
      LowerTargetRoasParametersOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use LowerTargetRoasParameters.newBuilder() to construct.
    private LowerTargetRoasParameters(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private LowerTargetRoasParameters() {
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_LowerTargetRoasParameters_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_LowerTargetRoasParameters_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.ads.googleads.v14.services.ApplyRecommendationOperation.LowerTargetRoasParameters.class, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.LowerTargetRoasParameters.Builder.class);
    }

    public static final int TARGET_ROAS_MULTIPLIER_FIELD_NUMBER = 1;
    private double targetRoasMultiplier_ = 0D;
    /**
     * <pre>
     * Required. Target to set ROAS multiplier to. This is a required field.
     * </pre>
     *
     * <code>double target_roas_multiplier = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The targetRoasMultiplier.
     */
    @java.lang.Override
    public double getTargetRoasMultiplier() {
      return targetRoasMultiplier_;
    }

    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 (java.lang.Double.doubleToRawLongBits(targetRoasMultiplier_) != 0) {
        output.writeDouble(1, targetRoasMultiplier_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (java.lang.Double.doubleToRawLongBits(targetRoasMultiplier_) != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeDoubleSize(1, targetRoasMultiplier_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.google.ads.googleads.v14.services.ApplyRecommendationOperation.LowerTargetRoasParameters)) {
        return super.equals(obj);
      }
      com.google.ads.googleads.v14.services.ApplyRecommendationOperation.LowerTargetRoasParameters other = (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.LowerTargetRoasParameters) obj;

      if (java.lang.Double.doubleToLongBits(getTargetRoasMultiplier())
          != java.lang.Double.doubleToLongBits(
              other.getTargetRoasMultiplier())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

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

    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.LowerTargetRoasParameters parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.LowerTargetRoasParameters parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.LowerTargetRoasParameters parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.LowerTargetRoasParameters parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.LowerTargetRoasParameters parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.LowerTargetRoasParameters parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.LowerTargetRoasParameters parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.LowerTargetRoasParameters parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.LowerTargetRoasParameters parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.LowerTargetRoasParameters parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.LowerTargetRoasParameters parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.LowerTargetRoasParameters parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.LowerTargetRoasParameters prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Parameters to use when applying lower Target ROAS recommendations.
     * </pre>
     *
     * Protobuf type {@code google.ads.googleads.v14.services.ApplyRecommendationOperation.LowerTargetRoasParameters}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:google.ads.googleads.v14.services.ApplyRecommendationOperation.LowerTargetRoasParameters)
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.LowerTargetRoasParametersOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_LowerTargetRoasParameters_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_LowerTargetRoasParameters_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.ads.googleads.v14.services.ApplyRecommendationOperation.LowerTargetRoasParameters.class, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.LowerTargetRoasParameters.Builder.class);
      }

      // Construct using com.google.ads.googleads.v14.services.ApplyRecommendationOperation.LowerTargetRoasParameters.newBuilder()
      private Builder() {

      }

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

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

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_LowerTargetRoasParameters_descriptor;
      }

      @java.lang.Override
      public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.LowerTargetRoasParameters getDefaultInstanceForType() {
        return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.LowerTargetRoasParameters.getDefaultInstance();
      }

      @java.lang.Override
      public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.LowerTargetRoasParameters build() {
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.LowerTargetRoasParameters result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.LowerTargetRoasParameters buildPartial() {
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.LowerTargetRoasParameters result = new com.google.ads.googleads.v14.services.ApplyRecommendationOperation.LowerTargetRoasParameters(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.LowerTargetRoasParameters result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.targetRoasMultiplier_ = targetRoasMultiplier_;
        }
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.ads.googleads.v14.services.ApplyRecommendationOperation.LowerTargetRoasParameters) {
          return mergeFrom((com.google.ads.googleads.v14.services.ApplyRecommendationOperation.LowerTargetRoasParameters)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.LowerTargetRoasParameters other) {
        if (other == com.google.ads.googleads.v14.services.ApplyRecommendationOperation.LowerTargetRoasParameters.getDefaultInstance()) return this;
        if (other.getTargetRoasMultiplier() != 0D) {
          setTargetRoasMultiplier(other.getTargetRoasMultiplier());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 9: {
                targetRoasMultiplier_ = input.readDouble();
                bitField0_ |= 0x00000001;
                break;
              } // case 9
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private double targetRoasMultiplier_ ;
      /**
       * <pre>
       * Required. Target to set ROAS multiplier to. This is a required field.
       * </pre>
       *
       * <code>double target_roas_multiplier = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The targetRoasMultiplier.
       */
      @java.lang.Override
      public double getTargetRoasMultiplier() {
        return targetRoasMultiplier_;
      }
      /**
       * <pre>
       * Required. Target to set ROAS multiplier to. This is a required field.
       * </pre>
       *
       * <code>double target_roas_multiplier = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The targetRoasMultiplier to set.
       * @return This builder for chaining.
       */
      public Builder setTargetRoasMultiplier(double value) {

        targetRoasMultiplier_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Required. Target to set ROAS multiplier to. This is a required field.
       * </pre>
       *
       * <code>double target_roas_multiplier = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return This builder for chaining.
       */
      public Builder clearTargetRoasMultiplier() {
        bitField0_ = (bitField0_ & ~0x00000001);
        targetRoasMultiplier_ = 0D;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:google.ads.googleads.v14.services.ApplyRecommendationOperation.LowerTargetRoasParameters)
    }

    // @@protoc_insertion_point(class_scope:google.ads.googleads.v14.services.ApplyRecommendationOperation.LowerTargetRoasParameters)
    private static final com.google.ads.googleads.v14.services.ApplyRecommendationOperation.LowerTargetRoasParameters DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.ads.googleads.v14.services.ApplyRecommendationOperation.LowerTargetRoasParameters();
    }

    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.LowerTargetRoasParameters getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.LowerTargetRoasParameters getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface AdAssetApplyParametersOrBuilder extends
      // @@protoc_insertion_point(interface_extends:google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * The assets to create and attach to a scope. This may be combined with
     * existing_assets in the same call.
     * </pre>
     *
     * <code>repeated .google.ads.googleads.v14.resources.Asset new_assets = 1;</code>
     */
    java.util.List<com.google.ads.googleads.v14.resources.Asset> 
        getNewAssetsList();
    /**
     * <pre>
     * The assets to create and attach to a scope. This may be combined with
     * existing_assets in the same call.
     * </pre>
     *
     * <code>repeated .google.ads.googleads.v14.resources.Asset new_assets = 1;</code>
     */
    com.google.ads.googleads.v14.resources.Asset getNewAssets(int index);
    /**
     * <pre>
     * The assets to create and attach to a scope. This may be combined with
     * existing_assets in the same call.
     * </pre>
     *
     * <code>repeated .google.ads.googleads.v14.resources.Asset new_assets = 1;</code>
     */
    int getNewAssetsCount();
    /**
     * <pre>
     * The assets to create and attach to a scope. This may be combined with
     * existing_assets in the same call.
     * </pre>
     *
     * <code>repeated .google.ads.googleads.v14.resources.Asset new_assets = 1;</code>
     */
    java.util.List<? extends com.google.ads.googleads.v14.resources.AssetOrBuilder> 
        getNewAssetsOrBuilderList();
    /**
     * <pre>
     * The assets to create and attach to a scope. This may be combined with
     * existing_assets in the same call.
     * </pre>
     *
     * <code>repeated .google.ads.googleads.v14.resources.Asset new_assets = 1;</code>
     */
    com.google.ads.googleads.v14.resources.AssetOrBuilder getNewAssetsOrBuilder(
        int index);

    /**
     * <pre>
     * The resource names of existing assets to attach to a scope. This may be
     * combined with new_assets in the same call.
     * </pre>
     *
     * <code>repeated string existing_assets = 2;</code>
     * @return A list containing the existingAssets.
     */
    java.util.List<java.lang.String>
        getExistingAssetsList();
    /**
     * <pre>
     * The resource names of existing assets to attach to a scope. This may be
     * combined with new_assets in the same call.
     * </pre>
     *
     * <code>repeated string existing_assets = 2;</code>
     * @return The count of existingAssets.
     */
    int getExistingAssetsCount();
    /**
     * <pre>
     * The resource names of existing assets to attach to a scope. This may be
     * combined with new_assets in the same call.
     * </pre>
     *
     * <code>repeated string existing_assets = 2;</code>
     * @param index The index of the element to return.
     * @return The existingAssets at the given index.
     */
    java.lang.String getExistingAssets(int index);
    /**
     * <pre>
     * The resource names of existing assets to attach to a scope. This may be
     * combined with new_assets in the same call.
     * </pre>
     *
     * <code>repeated string existing_assets = 2;</code>
     * @param index The index of the value to return.
     * @return The bytes of the existingAssets at the given index.
     */
    com.google.protobuf.ByteString
        getExistingAssetsBytes(int index);

    /**
     * <pre>
     * Required. The scope at which to apply the assets. Assets at the campaign
     * scope level will be applied to the campaign associated with the
     * recommendation. Assets at the customer scope will apply to the entire
     * account. Assets at the campaign scope will override any attached at the
     * customer scope.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters.ApplyScope scope = 3 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The enum numeric value on the wire for scope.
     */
    int getScopeValue();
    /**
     * <pre>
     * Required. The scope at which to apply the assets. Assets at the campaign
     * scope level will be applied to the campaign associated with the
     * recommendation. Assets at the customer scope will apply to the entire
     * account. Assets at the campaign scope will override any attached at the
     * customer scope.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters.ApplyScope scope = 3 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The scope.
     */
    com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters.ApplyScope getScope();
  }
  /**
   * <pre>
   * Common parameters used when applying ad asset recommendations.
   * </pre>
   *
   * Protobuf type {@code google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters}
   */
  public static final class AdAssetApplyParameters extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters)
      AdAssetApplyParametersOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use AdAssetApplyParameters.newBuilder() to construct.
    private AdAssetApplyParameters(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private AdAssetApplyParameters() {
      newAssets_ = java.util.Collections.emptyList();
      existingAssets_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      scope_ = 0;
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_AdAssetApplyParameters_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_AdAssetApplyParameters_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters.class, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters.Builder.class);
    }

    /**
     * <pre>
     * Scope to apply the assets to.
     * </pre>
     *
     * Protobuf enum {@code google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters.ApplyScope}
     */
    public enum ApplyScope
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <pre>
       * The apply scope has not been specified.
       * </pre>
       *
       * <code>UNSPECIFIED = 0;</code>
       */
      UNSPECIFIED(0),
      /**
       * <pre>
       * Unknown.
       * </pre>
       *
       * <code>UNKNOWN = 1;</code>
       */
      UNKNOWN(1),
      /**
       * <pre>
       * Apply at the customer scope.
       * </pre>
       *
       * <code>CUSTOMER = 2;</code>
       */
      CUSTOMER(2),
      /**
       * <pre>
       * Apply at the campaign scope.
       * </pre>
       *
       * <code>CAMPAIGN = 3;</code>
       */
      CAMPAIGN(3),
      UNRECOGNIZED(-1),
      ;

      /**
       * <pre>
       * The apply scope has not been specified.
       * </pre>
       *
       * <code>UNSPECIFIED = 0;</code>
       */
      public static final int UNSPECIFIED_VALUE = 0;
      /**
       * <pre>
       * Unknown.
       * </pre>
       *
       * <code>UNKNOWN = 1;</code>
       */
      public static final int UNKNOWN_VALUE = 1;
      /**
       * <pre>
       * Apply at the customer scope.
       * </pre>
       *
       * <code>CUSTOMER = 2;</code>
       */
      public static final int CUSTOMER_VALUE = 2;
      /**
       * <pre>
       * Apply at the campaign scope.
       * </pre>
       *
       * <code>CAMPAIGN = 3;</code>
       */
      public static final int CAMPAIGN_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 ApplyScope 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 ApplyScope forNumber(int value) {
        switch (value) {
          case 0: return UNSPECIFIED;
          case 1: return UNKNOWN;
          case 2: return CUSTOMER;
          case 3: return CAMPAIGN;
          default: return null;
        }
      }

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

      public final com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalStateException(
              "Can't get the descriptor of an unrecognized enum value.");
        }
        return getDescriptor().getValues().get(ordinal());
      }
      public final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptorForType() {
        return getDescriptor();
      }
      public static final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptor() {
        return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters.getDescriptor().getEnumTypes().get(0);
      }

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

      public static ApplyScope 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 ApplyScope(int value) {
        this.value = value;
      }

      // @@protoc_insertion_point(enum_scope:google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters.ApplyScope)
    }

    public static final int NEW_ASSETS_FIELD_NUMBER = 1;
    @SuppressWarnings("serial")
    private java.util.List<com.google.ads.googleads.v14.resources.Asset> newAssets_;
    /**
     * <pre>
     * The assets to create and attach to a scope. This may be combined with
     * existing_assets in the same call.
     * </pre>
     *
     * <code>repeated .google.ads.googleads.v14.resources.Asset new_assets = 1;</code>
     */
    @java.lang.Override
    public java.util.List<com.google.ads.googleads.v14.resources.Asset> getNewAssetsList() {
      return newAssets_;
    }
    /**
     * <pre>
     * The assets to create and attach to a scope. This may be combined with
     * existing_assets in the same call.
     * </pre>
     *
     * <code>repeated .google.ads.googleads.v14.resources.Asset new_assets = 1;</code>
     */
    @java.lang.Override
    public java.util.List<? extends com.google.ads.googleads.v14.resources.AssetOrBuilder> 
        getNewAssetsOrBuilderList() {
      return newAssets_;
    }
    /**
     * <pre>
     * The assets to create and attach to a scope. This may be combined with
     * existing_assets in the same call.
     * </pre>
     *
     * <code>repeated .google.ads.googleads.v14.resources.Asset new_assets = 1;</code>
     */
    @java.lang.Override
    public int getNewAssetsCount() {
      return newAssets_.size();
    }
    /**
     * <pre>
     * The assets to create and attach to a scope. This may be combined with
     * existing_assets in the same call.
     * </pre>
     *
     * <code>repeated .google.ads.googleads.v14.resources.Asset new_assets = 1;</code>
     */
    @java.lang.Override
    public com.google.ads.googleads.v14.resources.Asset getNewAssets(int index) {
      return newAssets_.get(index);
    }
    /**
     * <pre>
     * The assets to create and attach to a scope. This may be combined with
     * existing_assets in the same call.
     * </pre>
     *
     * <code>repeated .google.ads.googleads.v14.resources.Asset new_assets = 1;</code>
     */
    @java.lang.Override
    public com.google.ads.googleads.v14.resources.AssetOrBuilder getNewAssetsOrBuilder(
        int index) {
      return newAssets_.get(index);
    }

    public static final int EXISTING_ASSETS_FIELD_NUMBER = 2;
    @SuppressWarnings("serial")
    private com.google.protobuf.LazyStringArrayList existingAssets_ =
        com.google.protobuf.LazyStringArrayList.emptyList();
    /**
     * <pre>
     * The resource names of existing assets to attach to a scope. This may be
     * combined with new_assets in the same call.
     * </pre>
     *
     * <code>repeated string existing_assets = 2;</code>
     * @return A list containing the existingAssets.
     */
    public com.google.protobuf.ProtocolStringList
        getExistingAssetsList() {
      return existingAssets_;
    }
    /**
     * <pre>
     * The resource names of existing assets to attach to a scope. This may be
     * combined with new_assets in the same call.
     * </pre>
     *
     * <code>repeated string existing_assets = 2;</code>
     * @return The count of existingAssets.
     */
    public int getExistingAssetsCount() {
      return existingAssets_.size();
    }
    /**
     * <pre>
     * The resource names of existing assets to attach to a scope. This may be
     * combined with new_assets in the same call.
     * </pre>
     *
     * <code>repeated string existing_assets = 2;</code>
     * @param index The index of the element to return.
     * @return The existingAssets at the given index.
     */
    public java.lang.String getExistingAssets(int index) {
      return existingAssets_.get(index);
    }
    /**
     * <pre>
     * The resource names of existing assets to attach to a scope. This may be
     * combined with new_assets in the same call.
     * </pre>
     *
     * <code>repeated string existing_assets = 2;</code>
     * @param index The index of the value to return.
     * @return The bytes of the existingAssets at the given index.
     */
    public com.google.protobuf.ByteString
        getExistingAssetsBytes(int index) {
      return existingAssets_.getByteString(index);
    }

    public static final int SCOPE_FIELD_NUMBER = 3;
    private int scope_ = 0;
    /**
     * <pre>
     * Required. The scope at which to apply the assets. Assets at the campaign
     * scope level will be applied to the campaign associated with the
     * recommendation. Assets at the customer scope will apply to the entire
     * account. Assets at the campaign scope will override any attached at the
     * customer scope.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters.ApplyScope scope = 3 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The enum numeric value on the wire for scope.
     */
    @java.lang.Override public int getScopeValue() {
      return scope_;
    }
    /**
     * <pre>
     * Required. The scope at which to apply the assets. Assets at the campaign
     * scope level will be applied to the campaign associated with the
     * recommendation. Assets at the customer scope will apply to the entire
     * account. Assets at the campaign scope will override any attached at the
     * customer scope.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters.ApplyScope scope = 3 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The scope.
     */
    @java.lang.Override public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters.ApplyScope getScope() {
      com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters.ApplyScope result = com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters.ApplyScope.forNumber(scope_);
      return result == null ? com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters.ApplyScope.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 {
      for (int i = 0; i < newAssets_.size(); i++) {
        output.writeMessage(1, newAssets_.get(i));
      }
      for (int i = 0; i < existingAssets_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, existingAssets_.getRaw(i));
      }
      if (scope_ != com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters.ApplyScope.UNSPECIFIED.getNumber()) {
        output.writeEnum(3, scope_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      for (int i = 0; i < newAssets_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, newAssets_.get(i));
      }
      {
        int dataSize = 0;
        for (int i = 0; i < existingAssets_.size(); i++) {
          dataSize += computeStringSizeNoTag(existingAssets_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getExistingAssetsList().size();
      }
      if (scope_ != com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters.ApplyScope.UNSPECIFIED.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(3, scope_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters)) {
        return super.equals(obj);
      }
      com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters other = (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters) obj;

      if (!getNewAssetsList()
          .equals(other.getNewAssetsList())) return false;
      if (!getExistingAssetsList()
          .equals(other.getExistingAssetsList())) return false;
      if (scope_ != other.scope_) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getNewAssetsCount() > 0) {
        hash = (37 * hash) + NEW_ASSETS_FIELD_NUMBER;
        hash = (53 * hash) + getNewAssetsList().hashCode();
      }
      if (getExistingAssetsCount() > 0) {
        hash = (37 * hash) + EXISTING_ASSETS_FIELD_NUMBER;
        hash = (53 * hash) + getExistingAssetsList().hashCode();
      }
      hash = (37 * hash) + SCOPE_FIELD_NUMBER;
      hash = (53 * hash) + scope_;
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Common parameters used when applying ad asset recommendations.
     * </pre>
     *
     * Protobuf type {@code google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters)
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParametersOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_AdAssetApplyParameters_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_AdAssetApplyParameters_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters.class, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters.Builder.class);
      }

      // Construct using com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        if (newAssetsBuilder_ == null) {
          newAssets_ = java.util.Collections.emptyList();
        } else {
          newAssets_ = null;
          newAssetsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        existingAssets_ =
            com.google.protobuf.LazyStringArrayList.emptyList();
        scope_ = 0;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_AdAssetApplyParameters_descriptor;
      }

      @java.lang.Override
      public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters getDefaultInstanceForType() {
        return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters.getDefaultInstance();
      }

      @java.lang.Override
      public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters build() {
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters buildPartial() {
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters result = new com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters(this);
        buildPartialRepeatedFields(result);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartialRepeatedFields(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters result) {
        if (newAssetsBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            newAssets_ = java.util.Collections.unmodifiableList(newAssets_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.newAssets_ = newAssets_;
        } else {
          result.newAssets_ = newAssetsBuilder_.build();
        }
      }

      private void buildPartial0(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000002) != 0)) {
          existingAssets_.makeImmutable();
          result.existingAssets_ = existingAssets_;
        }
        if (((from_bitField0_ & 0x00000004) != 0)) {
          result.scope_ = scope_;
        }
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters) {
          return mergeFrom((com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters other) {
        if (other == com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters.getDefaultInstance()) return this;
        if (newAssetsBuilder_ == null) {
          if (!other.newAssets_.isEmpty()) {
            if (newAssets_.isEmpty()) {
              newAssets_ = other.newAssets_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureNewAssetsIsMutable();
              newAssets_.addAll(other.newAssets_);
            }
            onChanged();
          }
        } else {
          if (!other.newAssets_.isEmpty()) {
            if (newAssetsBuilder_.isEmpty()) {
              newAssetsBuilder_.dispose();
              newAssetsBuilder_ = null;
              newAssets_ = other.newAssets_;
              bitField0_ = (bitField0_ & ~0x00000001);
              newAssetsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getNewAssetsFieldBuilder() : null;
            } else {
              newAssetsBuilder_.addAllMessages(other.newAssets_);
            }
          }
        }
        if (!other.existingAssets_.isEmpty()) {
          if (existingAssets_.isEmpty()) {
            existingAssets_ = other.existingAssets_;
            bitField0_ |= 0x00000002;
          } else {
            ensureExistingAssetsIsMutable();
            existingAssets_.addAll(other.existingAssets_);
          }
          onChanged();
        }
        if (other.scope_ != 0) {
          setScopeValue(other.getScopeValue());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                com.google.ads.googleads.v14.resources.Asset m =
                    input.readMessage(
                        com.google.ads.googleads.v14.resources.Asset.parser(),
                        extensionRegistry);
                if (newAssetsBuilder_ == null) {
                  ensureNewAssetsIsMutable();
                  newAssets_.add(m);
                } else {
                  newAssetsBuilder_.addMessage(m);
                }
                break;
              } // case 10
              case 18: {
                java.lang.String s = input.readStringRequireUtf8();
                ensureExistingAssetsIsMutable();
                existingAssets_.add(s);
                break;
              } // case 18
              case 24: {
                scope_ = input.readEnum();
                bitField0_ |= 0x00000004;
                break;
              } // case 24
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.util.List<com.google.ads.googleads.v14.resources.Asset> newAssets_ =
        java.util.Collections.emptyList();
      private void ensureNewAssetsIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          newAssets_ = new java.util.ArrayList<com.google.ads.googleads.v14.resources.Asset>(newAssets_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.ads.googleads.v14.resources.Asset, com.google.ads.googleads.v14.resources.Asset.Builder, com.google.ads.googleads.v14.resources.AssetOrBuilder> newAssetsBuilder_;

      /**
       * <pre>
       * The assets to create and attach to a scope. This may be combined with
       * existing_assets in the same call.
       * </pre>
       *
       * <code>repeated .google.ads.googleads.v14.resources.Asset new_assets = 1;</code>
       */
      public java.util.List<com.google.ads.googleads.v14.resources.Asset> getNewAssetsList() {
        if (newAssetsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(newAssets_);
        } else {
          return newAssetsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * The assets to create and attach to a scope. This may be combined with
       * existing_assets in the same call.
       * </pre>
       *
       * <code>repeated .google.ads.googleads.v14.resources.Asset new_assets = 1;</code>
       */
      public int getNewAssetsCount() {
        if (newAssetsBuilder_ == null) {
          return newAssets_.size();
        } else {
          return newAssetsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * The assets to create and attach to a scope. This may be combined with
       * existing_assets in the same call.
       * </pre>
       *
       * <code>repeated .google.ads.googleads.v14.resources.Asset new_assets = 1;</code>
       */
      public com.google.ads.googleads.v14.resources.Asset getNewAssets(int index) {
        if (newAssetsBuilder_ == null) {
          return newAssets_.get(index);
        } else {
          return newAssetsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * The assets to create and attach to a scope. This may be combined with
       * existing_assets in the same call.
       * </pre>
       *
       * <code>repeated .google.ads.googleads.v14.resources.Asset new_assets = 1;</code>
       */
      public Builder setNewAssets(
          int index, com.google.ads.googleads.v14.resources.Asset value) {
        if (newAssetsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureNewAssetsIsMutable();
          newAssets_.set(index, value);
          onChanged();
        } else {
          newAssetsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * The assets to create and attach to a scope. This may be combined with
       * existing_assets in the same call.
       * </pre>
       *
       * <code>repeated .google.ads.googleads.v14.resources.Asset new_assets = 1;</code>
       */
      public Builder setNewAssets(
          int index, com.google.ads.googleads.v14.resources.Asset.Builder builderForValue) {
        if (newAssetsBuilder_ == null) {
          ensureNewAssetsIsMutable();
          newAssets_.set(index, builderForValue.build());
          onChanged();
        } else {
          newAssetsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * The assets to create and attach to a scope. This may be combined with
       * existing_assets in the same call.
       * </pre>
       *
       * <code>repeated .google.ads.googleads.v14.resources.Asset new_assets = 1;</code>
       */
      public Builder addNewAssets(com.google.ads.googleads.v14.resources.Asset value) {
        if (newAssetsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureNewAssetsIsMutable();
          newAssets_.add(value);
          onChanged();
        } else {
          newAssetsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * The assets to create and attach to a scope. This may be combined with
       * existing_assets in the same call.
       * </pre>
       *
       * <code>repeated .google.ads.googleads.v14.resources.Asset new_assets = 1;</code>
       */
      public Builder addNewAssets(
          int index, com.google.ads.googleads.v14.resources.Asset value) {
        if (newAssetsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureNewAssetsIsMutable();
          newAssets_.add(index, value);
          onChanged();
        } else {
          newAssetsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * The assets to create and attach to a scope. This may be combined with
       * existing_assets in the same call.
       * </pre>
       *
       * <code>repeated .google.ads.googleads.v14.resources.Asset new_assets = 1;</code>
       */
      public Builder addNewAssets(
          com.google.ads.googleads.v14.resources.Asset.Builder builderForValue) {
        if (newAssetsBuilder_ == null) {
          ensureNewAssetsIsMutable();
          newAssets_.add(builderForValue.build());
          onChanged();
        } else {
          newAssetsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * The assets to create and attach to a scope. This may be combined with
       * existing_assets in the same call.
       * </pre>
       *
       * <code>repeated .google.ads.googleads.v14.resources.Asset new_assets = 1;</code>
       */
      public Builder addNewAssets(
          int index, com.google.ads.googleads.v14.resources.Asset.Builder builderForValue) {
        if (newAssetsBuilder_ == null) {
          ensureNewAssetsIsMutable();
          newAssets_.add(index, builderForValue.build());
          onChanged();
        } else {
          newAssetsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * The assets to create and attach to a scope. This may be combined with
       * existing_assets in the same call.
       * </pre>
       *
       * <code>repeated .google.ads.googleads.v14.resources.Asset new_assets = 1;</code>
       */
      public Builder addAllNewAssets(
          java.lang.Iterable<? extends com.google.ads.googleads.v14.resources.Asset> values) {
        if (newAssetsBuilder_ == null) {
          ensureNewAssetsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, newAssets_);
          onChanged();
        } else {
          newAssetsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * The assets to create and attach to a scope. This may be combined with
       * existing_assets in the same call.
       * </pre>
       *
       * <code>repeated .google.ads.googleads.v14.resources.Asset new_assets = 1;</code>
       */
      public Builder clearNewAssets() {
        if (newAssetsBuilder_ == null) {
          newAssets_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          newAssetsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * The assets to create and attach to a scope. This may be combined with
       * existing_assets in the same call.
       * </pre>
       *
       * <code>repeated .google.ads.googleads.v14.resources.Asset new_assets = 1;</code>
       */
      public Builder removeNewAssets(int index) {
        if (newAssetsBuilder_ == null) {
          ensureNewAssetsIsMutable();
          newAssets_.remove(index);
          onChanged();
        } else {
          newAssetsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * The assets to create and attach to a scope. This may be combined with
       * existing_assets in the same call.
       * </pre>
       *
       * <code>repeated .google.ads.googleads.v14.resources.Asset new_assets = 1;</code>
       */
      public com.google.ads.googleads.v14.resources.Asset.Builder getNewAssetsBuilder(
          int index) {
        return getNewAssetsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * The assets to create and attach to a scope. This may be combined with
       * existing_assets in the same call.
       * </pre>
       *
       * <code>repeated .google.ads.googleads.v14.resources.Asset new_assets = 1;</code>
       */
      public com.google.ads.googleads.v14.resources.AssetOrBuilder getNewAssetsOrBuilder(
          int index) {
        if (newAssetsBuilder_ == null) {
          return newAssets_.get(index);  } else {
          return newAssetsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * The assets to create and attach to a scope. This may be combined with
       * existing_assets in the same call.
       * </pre>
       *
       * <code>repeated .google.ads.googleads.v14.resources.Asset new_assets = 1;</code>
       */
      public java.util.List<? extends com.google.ads.googleads.v14.resources.AssetOrBuilder> 
           getNewAssetsOrBuilderList() {
        if (newAssetsBuilder_ != null) {
          return newAssetsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(newAssets_);
        }
      }
      /**
       * <pre>
       * The assets to create and attach to a scope. This may be combined with
       * existing_assets in the same call.
       * </pre>
       *
       * <code>repeated .google.ads.googleads.v14.resources.Asset new_assets = 1;</code>
       */
      public com.google.ads.googleads.v14.resources.Asset.Builder addNewAssetsBuilder() {
        return getNewAssetsFieldBuilder().addBuilder(
            com.google.ads.googleads.v14.resources.Asset.getDefaultInstance());
      }
      /**
       * <pre>
       * The assets to create and attach to a scope. This may be combined with
       * existing_assets in the same call.
       * </pre>
       *
       * <code>repeated .google.ads.googleads.v14.resources.Asset new_assets = 1;</code>
       */
      public com.google.ads.googleads.v14.resources.Asset.Builder addNewAssetsBuilder(
          int index) {
        return getNewAssetsFieldBuilder().addBuilder(
            index, com.google.ads.googleads.v14.resources.Asset.getDefaultInstance());
      }
      /**
       * <pre>
       * The assets to create and attach to a scope. This may be combined with
       * existing_assets in the same call.
       * </pre>
       *
       * <code>repeated .google.ads.googleads.v14.resources.Asset new_assets = 1;</code>
       */
      public java.util.List<com.google.ads.googleads.v14.resources.Asset.Builder> 
           getNewAssetsBuilderList() {
        return getNewAssetsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.google.ads.googleads.v14.resources.Asset, com.google.ads.googleads.v14.resources.Asset.Builder, com.google.ads.googleads.v14.resources.AssetOrBuilder> 
          getNewAssetsFieldBuilder() {
        if (newAssetsBuilder_ == null) {
          newAssetsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.google.ads.googleads.v14.resources.Asset, com.google.ads.googleads.v14.resources.Asset.Builder, com.google.ads.googleads.v14.resources.AssetOrBuilder>(
                  newAssets_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          newAssets_ = null;
        }
        return newAssetsBuilder_;
      }

      private com.google.protobuf.LazyStringArrayList existingAssets_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
      private void ensureExistingAssetsIsMutable() {
        if (!existingAssets_.isModifiable()) {
          existingAssets_ = new com.google.protobuf.LazyStringArrayList(existingAssets_);
        }
        bitField0_ |= 0x00000002;
      }
      /**
       * <pre>
       * The resource names of existing assets to attach to a scope. This may be
       * combined with new_assets in the same call.
       * </pre>
       *
       * <code>repeated string existing_assets = 2;</code>
       * @return A list containing the existingAssets.
       */
      public com.google.protobuf.ProtocolStringList
          getExistingAssetsList() {
        existingAssets_.makeImmutable();
        return existingAssets_;
      }
      /**
       * <pre>
       * The resource names of existing assets to attach to a scope. This may be
       * combined with new_assets in the same call.
       * </pre>
       *
       * <code>repeated string existing_assets = 2;</code>
       * @return The count of existingAssets.
       */
      public int getExistingAssetsCount() {
        return existingAssets_.size();
      }
      /**
       * <pre>
       * The resource names of existing assets to attach to a scope. This may be
       * combined with new_assets in the same call.
       * </pre>
       *
       * <code>repeated string existing_assets = 2;</code>
       * @param index The index of the element to return.
       * @return The existingAssets at the given index.
       */
      public java.lang.String getExistingAssets(int index) {
        return existingAssets_.get(index);
      }
      /**
       * <pre>
       * The resource names of existing assets to attach to a scope. This may be
       * combined with new_assets in the same call.
       * </pre>
       *
       * <code>repeated string existing_assets = 2;</code>
       * @param index The index of the value to return.
       * @return The bytes of the existingAssets at the given index.
       */
      public com.google.protobuf.ByteString
          getExistingAssetsBytes(int index) {
        return existingAssets_.getByteString(index);
      }
      /**
       * <pre>
       * The resource names of existing assets to attach to a scope. This may be
       * combined with new_assets in the same call.
       * </pre>
       *
       * <code>repeated string existing_assets = 2;</code>
       * @param index The index to set the value at.
       * @param value The existingAssets to set.
       * @return This builder for chaining.
       */
      public Builder setExistingAssets(
          int index, java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureExistingAssetsIsMutable();
        existingAssets_.set(index, value);
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The resource names of existing assets to attach to a scope. This may be
       * combined with new_assets in the same call.
       * </pre>
       *
       * <code>repeated string existing_assets = 2;</code>
       * @param value The existingAssets to add.
       * @return This builder for chaining.
       */
      public Builder addExistingAssets(
          java.lang.String value) {
        if (value == null) { throw new NullPointerException(); }
        ensureExistingAssetsIsMutable();
        existingAssets_.add(value);
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The resource names of existing assets to attach to a scope. This may be
       * combined with new_assets in the same call.
       * </pre>
       *
       * <code>repeated string existing_assets = 2;</code>
       * @param values The existingAssets to add.
       * @return This builder for chaining.
       */
      public Builder addAllExistingAssets(
          java.lang.Iterable<java.lang.String> values) {
        ensureExistingAssetsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, existingAssets_);
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The resource names of existing assets to attach to a scope. This may be
       * combined with new_assets in the same call.
       * </pre>
       *
       * <code>repeated string existing_assets = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearExistingAssets() {
        existingAssets_ =
          com.google.protobuf.LazyStringArrayList.emptyList();
        bitField0_ = (bitField0_ & ~0x00000002);;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The resource names of existing assets to attach to a scope. This may be
       * combined with new_assets in the same call.
       * </pre>
       *
       * <code>repeated string existing_assets = 2;</code>
       * @param value The bytes of the existingAssets to add.
       * @return This builder for chaining.
       */
      public Builder addExistingAssetsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) { throw new NullPointerException(); }
        checkByteStringIsUtf8(value);
        ensureExistingAssetsIsMutable();
        existingAssets_.add(value);
        bitField0_ |= 0x00000002;
        onChanged();
        return this;
      }

      private int scope_ = 0;
      /**
       * <pre>
       * Required. The scope at which to apply the assets. Assets at the campaign
       * scope level will be applied to the campaign associated with the
       * recommendation. Assets at the customer scope will apply to the entire
       * account. Assets at the campaign scope will override any attached at the
       * customer scope.
       * </pre>
       *
       * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters.ApplyScope scope = 3 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The enum numeric value on the wire for scope.
       */
      @java.lang.Override public int getScopeValue() {
        return scope_;
      }
      /**
       * <pre>
       * Required. The scope at which to apply the assets. Assets at the campaign
       * scope level will be applied to the campaign associated with the
       * recommendation. Assets at the customer scope will apply to the entire
       * account. Assets at the campaign scope will override any attached at the
       * customer scope.
       * </pre>
       *
       * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters.ApplyScope scope = 3 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The enum numeric value on the wire for scope to set.
       * @return This builder for chaining.
       */
      public Builder setScopeValue(int value) {
        scope_ = value;
        bitField0_ |= 0x00000004;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Required. The scope at which to apply the assets. Assets at the campaign
       * scope level will be applied to the campaign associated with the
       * recommendation. Assets at the customer scope will apply to the entire
       * account. Assets at the campaign scope will override any attached at the
       * customer scope.
       * </pre>
       *
       * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters.ApplyScope scope = 3 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The scope.
       */
      @java.lang.Override
      public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters.ApplyScope getScope() {
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters.ApplyScope result = com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters.ApplyScope.forNumber(scope_);
        return result == null ? com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters.ApplyScope.UNRECOGNIZED : result;
      }
      /**
       * <pre>
       * Required. The scope at which to apply the assets. Assets at the campaign
       * scope level will be applied to the campaign associated with the
       * recommendation. Assets at the customer scope will apply to the entire
       * account. Assets at the campaign scope will override any attached at the
       * customer scope.
       * </pre>
       *
       * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters.ApplyScope scope = 3 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The scope to set.
       * @return This builder for chaining.
       */
      public Builder setScope(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters.ApplyScope value) {
        if (value == null) {
          throw new NullPointerException();
        }
        bitField0_ |= 0x00000004;
        scope_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Required. The scope at which to apply the assets. Assets at the campaign
       * scope level will be applied to the campaign associated with the
       * recommendation. Assets at the customer scope will apply to the entire
       * account. Assets at the campaign scope will override any attached at the
       * customer scope.
       * </pre>
       *
       * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters.ApplyScope scope = 3 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return This builder for chaining.
       */
      public Builder clearScope() {
        bitField0_ = (bitField0_ & ~0x00000004);
        scope_ = 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:google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters)
    }

    // @@protoc_insertion_point(class_scope:google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters)
    private static final com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters();
    }

    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.AdAssetApplyParameters getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface MoveUnusedBudgetParametersOrBuilder extends
      // @@protoc_insertion_point(interface_extends:google.ads.googleads.v14.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Budget amount to move from excess budget to constrained budget. This is
     * a required field.
     * </pre>
     *
     * <code>optional int64 budget_micros_to_move = 2;</code>
     * @return Whether the budgetMicrosToMove field is set.
     */
    boolean hasBudgetMicrosToMove();
    /**
     * <pre>
     * Budget amount to move from excess budget to constrained budget. This is
     * a required field.
     * </pre>
     *
     * <code>optional int64 budget_micros_to_move = 2;</code>
     * @return The budgetMicrosToMove.
     */
    long getBudgetMicrosToMove();
  }
  /**
   * <pre>
   * Parameters to use when applying move unused budget recommendation.
   * </pre>
   *
   * Protobuf type {@code google.ads.googleads.v14.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters}
   */
  public static final class MoveUnusedBudgetParameters extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:google.ads.googleads.v14.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters)
      MoveUnusedBudgetParametersOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use MoveUnusedBudgetParameters.newBuilder() to construct.
    private MoveUnusedBudgetParameters(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private MoveUnusedBudgetParameters() {
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_MoveUnusedBudgetParameters_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_MoveUnusedBudgetParameters_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.ads.googleads.v14.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters.class, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters.Builder.class);
    }

    private int bitField0_;
    public static final int BUDGET_MICROS_TO_MOVE_FIELD_NUMBER = 2;
    private long budgetMicrosToMove_ = 0L;
    /**
     * <pre>
     * Budget amount to move from excess budget to constrained budget. This is
     * a required field.
     * </pre>
     *
     * <code>optional int64 budget_micros_to_move = 2;</code>
     * @return Whether the budgetMicrosToMove field is set.
     */
    @java.lang.Override
    public boolean hasBudgetMicrosToMove() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * Budget amount to move from excess budget to constrained budget. This is
     * a required field.
     * </pre>
     *
     * <code>optional int64 budget_micros_to_move = 2;</code>
     * @return The budgetMicrosToMove.
     */
    @java.lang.Override
    public long getBudgetMicrosToMove() {
      return budgetMicrosToMove_;
    }

    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 (((bitField0_ & 0x00000001) != 0)) {
        output.writeInt64(2, budgetMicrosToMove_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(2, budgetMicrosToMove_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.google.ads.googleads.v14.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters)) {
        return super.equals(obj);
      }
      com.google.ads.googleads.v14.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters other = (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters) obj;

      if (hasBudgetMicrosToMove() != other.hasBudgetMicrosToMove()) return false;
      if (hasBudgetMicrosToMove()) {
        if (getBudgetMicrosToMove()
            != other.getBudgetMicrosToMove()) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

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

    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Parameters to use when applying move unused budget recommendation.
     * </pre>
     *
     * Protobuf type {@code google.ads.googleads.v14.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:google.ads.googleads.v14.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters)
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.MoveUnusedBudgetParametersOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_MoveUnusedBudgetParameters_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_MoveUnusedBudgetParameters_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.ads.googleads.v14.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters.class, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters.Builder.class);
      }

      // Construct using com.google.ads.googleads.v14.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters.newBuilder()
      private Builder() {

      }

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

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

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_MoveUnusedBudgetParameters_descriptor;
      }

      @java.lang.Override
      public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters getDefaultInstanceForType() {
        return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters.getDefaultInstance();
      }

      @java.lang.Override
      public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters build() {
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters buildPartial() {
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters result = new com.google.ads.googleads.v14.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.budgetMicrosToMove_ = budgetMicrosToMove_;
          to_bitField0_ |= 0x00000001;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.ads.googleads.v14.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters) {
          return mergeFrom((com.google.ads.googleads.v14.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters other) {
        if (other == com.google.ads.googleads.v14.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters.getDefaultInstance()) return this;
        if (other.hasBudgetMicrosToMove()) {
          setBudgetMicrosToMove(other.getBudgetMicrosToMove());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 16: {
                budgetMicrosToMove_ = input.readInt64();
                bitField0_ |= 0x00000001;
                break;
              } // case 16
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private long budgetMicrosToMove_ ;
      /**
       * <pre>
       * Budget amount to move from excess budget to constrained budget. This is
       * a required field.
       * </pre>
       *
       * <code>optional int64 budget_micros_to_move = 2;</code>
       * @return Whether the budgetMicrosToMove field is set.
       */
      @java.lang.Override
      public boolean hasBudgetMicrosToMove() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Budget amount to move from excess budget to constrained budget. This is
       * a required field.
       * </pre>
       *
       * <code>optional int64 budget_micros_to_move = 2;</code>
       * @return The budgetMicrosToMove.
       */
      @java.lang.Override
      public long getBudgetMicrosToMove() {
        return budgetMicrosToMove_;
      }
      /**
       * <pre>
       * Budget amount to move from excess budget to constrained budget. This is
       * a required field.
       * </pre>
       *
       * <code>optional int64 budget_micros_to_move = 2;</code>
       * @param value The budgetMicrosToMove to set.
       * @return This builder for chaining.
       */
      public Builder setBudgetMicrosToMove(long value) {

        budgetMicrosToMove_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Budget amount to move from excess budget to constrained budget. This is
       * a required field.
       * </pre>
       *
       * <code>optional int64 budget_micros_to_move = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearBudgetMicrosToMove() {
        bitField0_ = (bitField0_ & ~0x00000001);
        budgetMicrosToMove_ = 0L;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:google.ads.googleads.v14.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters)
    }

    // @@protoc_insertion_point(class_scope:google.ads.googleads.v14.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters)
    private static final com.google.ads.googleads.v14.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.ads.googleads.v14.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters();
    }

    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ResponsiveSearchAdAssetParametersOrBuilder extends
      // @@protoc_insertion_point(interface_extends:google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParameters)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Updated ad. The current ad's content will be replaced.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.resources.Ad updated_ad = 1;</code>
     * @return Whether the updatedAd field is set.
     */
    boolean hasUpdatedAd();
    /**
     * <pre>
     * Updated ad. The current ad's content will be replaced.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.resources.Ad updated_ad = 1;</code>
     * @return The updatedAd.
     */
    com.google.ads.googleads.v14.resources.Ad getUpdatedAd();
    /**
     * <pre>
     * Updated ad. The current ad's content will be replaced.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.resources.Ad updated_ad = 1;</code>
     */
    com.google.ads.googleads.v14.resources.AdOrBuilder getUpdatedAdOrBuilder();
  }
  /**
   * <pre>
   * Parameters to use when applying a responsive search ad asset
   * recommendation.
   * </pre>
   *
   * Protobuf type {@code google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParameters}
   */
  public static final class ResponsiveSearchAdAssetParameters extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParameters)
      ResponsiveSearchAdAssetParametersOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ResponsiveSearchAdAssetParameters.newBuilder() to construct.
    private ResponsiveSearchAdAssetParameters(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ResponsiveSearchAdAssetParameters() {
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_ResponsiveSearchAdAssetParameters_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_ResponsiveSearchAdAssetParameters_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParameters.class, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParameters.Builder.class);
    }

    public static final int UPDATED_AD_FIELD_NUMBER = 1;
    private com.google.ads.googleads.v14.resources.Ad updatedAd_;
    /**
     * <pre>
     * Updated ad. The current ad's content will be replaced.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.resources.Ad updated_ad = 1;</code>
     * @return Whether the updatedAd field is set.
     */
    @java.lang.Override
    public boolean hasUpdatedAd() {
      return updatedAd_ != null;
    }
    /**
     * <pre>
     * Updated ad. The current ad's content will be replaced.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.resources.Ad updated_ad = 1;</code>
     * @return The updatedAd.
     */
    @java.lang.Override
    public com.google.ads.googleads.v14.resources.Ad getUpdatedAd() {
      return updatedAd_ == null ? com.google.ads.googleads.v14.resources.Ad.getDefaultInstance() : updatedAd_;
    }
    /**
     * <pre>
     * Updated ad. The current ad's content will be replaced.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.resources.Ad updated_ad = 1;</code>
     */
    @java.lang.Override
    public com.google.ads.googleads.v14.resources.AdOrBuilder getUpdatedAdOrBuilder() {
      return updatedAd_ == null ? com.google.ads.googleads.v14.resources.Ad.getDefaultInstance() : updatedAd_;
    }

    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 (updatedAd_ != null) {
        output.writeMessage(1, getUpdatedAd());
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (updatedAd_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getUpdatedAd());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParameters)) {
        return super.equals(obj);
      }
      com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParameters other = (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParameters) obj;

      if (hasUpdatedAd() != other.hasUpdatedAd()) return false;
      if (hasUpdatedAd()) {
        if (!getUpdatedAd()
            .equals(other.getUpdatedAd())) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

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

    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParameters parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParameters parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParameters parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParameters parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParameters parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParameters parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParameters parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParameters parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParameters parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParameters parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParameters parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParameters parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParameters prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Parameters to use when applying a responsive search ad asset
     * recommendation.
     * </pre>
     *
     * Protobuf type {@code google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParameters}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParameters)
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParametersOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_ResponsiveSearchAdAssetParameters_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_ResponsiveSearchAdAssetParameters_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParameters.class, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParameters.Builder.class);
      }

      // Construct using com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParameters.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        updatedAd_ = null;
        if (updatedAdBuilder_ != null) {
          updatedAdBuilder_.dispose();
          updatedAdBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_ResponsiveSearchAdAssetParameters_descriptor;
      }

      @java.lang.Override
      public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParameters getDefaultInstanceForType() {
        return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParameters.getDefaultInstance();
      }

      @java.lang.Override
      public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParameters build() {
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParameters result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParameters buildPartial() {
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParameters result = new com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParameters(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParameters result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.updatedAd_ = updatedAdBuilder_ == null
              ? updatedAd_
              : updatedAdBuilder_.build();
        }
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParameters) {
          return mergeFrom((com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParameters)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParameters other) {
        if (other == com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParameters.getDefaultInstance()) return this;
        if (other.hasUpdatedAd()) {
          mergeUpdatedAd(other.getUpdatedAd());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                input.readMessage(
                    getUpdatedAdFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private com.google.ads.googleads.v14.resources.Ad updatedAd_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.ads.googleads.v14.resources.Ad, com.google.ads.googleads.v14.resources.Ad.Builder, com.google.ads.googleads.v14.resources.AdOrBuilder> updatedAdBuilder_;
      /**
       * <pre>
       * Updated ad. The current ad's content will be replaced.
       * </pre>
       *
       * <code>.google.ads.googleads.v14.resources.Ad updated_ad = 1;</code>
       * @return Whether the updatedAd field is set.
       */
      public boolean hasUpdatedAd() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Updated ad. The current ad's content will be replaced.
       * </pre>
       *
       * <code>.google.ads.googleads.v14.resources.Ad updated_ad = 1;</code>
       * @return The updatedAd.
       */
      public com.google.ads.googleads.v14.resources.Ad getUpdatedAd() {
        if (updatedAdBuilder_ == null) {
          return updatedAd_ == null ? com.google.ads.googleads.v14.resources.Ad.getDefaultInstance() : updatedAd_;
        } else {
          return updatedAdBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Updated ad. The current ad's content will be replaced.
       * </pre>
       *
       * <code>.google.ads.googleads.v14.resources.Ad updated_ad = 1;</code>
       */
      public Builder setUpdatedAd(com.google.ads.googleads.v14.resources.Ad value) {
        if (updatedAdBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          updatedAd_ = value;
        } else {
          updatedAdBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Updated ad. The current ad's content will be replaced.
       * </pre>
       *
       * <code>.google.ads.googleads.v14.resources.Ad updated_ad = 1;</code>
       */
      public Builder setUpdatedAd(
          com.google.ads.googleads.v14.resources.Ad.Builder builderForValue) {
        if (updatedAdBuilder_ == null) {
          updatedAd_ = builderForValue.build();
        } else {
          updatedAdBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Updated ad. The current ad's content will be replaced.
       * </pre>
       *
       * <code>.google.ads.googleads.v14.resources.Ad updated_ad = 1;</code>
       */
      public Builder mergeUpdatedAd(com.google.ads.googleads.v14.resources.Ad value) {
        if (updatedAdBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            updatedAd_ != null &&
            updatedAd_ != com.google.ads.googleads.v14.resources.Ad.getDefaultInstance()) {
            getUpdatedAdBuilder().mergeFrom(value);
          } else {
            updatedAd_ = value;
          }
        } else {
          updatedAdBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Updated ad. The current ad's content will be replaced.
       * </pre>
       *
       * <code>.google.ads.googleads.v14.resources.Ad updated_ad = 1;</code>
       */
      public Builder clearUpdatedAd() {
        bitField0_ = (bitField0_ & ~0x00000001);
        updatedAd_ = null;
        if (updatedAdBuilder_ != null) {
          updatedAdBuilder_.dispose();
          updatedAdBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Updated ad. The current ad's content will be replaced.
       * </pre>
       *
       * <code>.google.ads.googleads.v14.resources.Ad updated_ad = 1;</code>
       */
      public com.google.ads.googleads.v14.resources.Ad.Builder getUpdatedAdBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getUpdatedAdFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Updated ad. The current ad's content will be replaced.
       * </pre>
       *
       * <code>.google.ads.googleads.v14.resources.Ad updated_ad = 1;</code>
       */
      public com.google.ads.googleads.v14.resources.AdOrBuilder getUpdatedAdOrBuilder() {
        if (updatedAdBuilder_ != null) {
          return updatedAdBuilder_.getMessageOrBuilder();
        } else {
          return updatedAd_ == null ?
              com.google.ads.googleads.v14.resources.Ad.getDefaultInstance() : updatedAd_;
        }
      }
      /**
       * <pre>
       * Updated ad. The current ad's content will be replaced.
       * </pre>
       *
       * <code>.google.ads.googleads.v14.resources.Ad updated_ad = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.ads.googleads.v14.resources.Ad, com.google.ads.googleads.v14.resources.Ad.Builder, com.google.ads.googleads.v14.resources.AdOrBuilder> 
          getUpdatedAdFieldBuilder() {
        if (updatedAdBuilder_ == null) {
          updatedAdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.ads.googleads.v14.resources.Ad, com.google.ads.googleads.v14.resources.Ad.Builder, com.google.ads.googleads.v14.resources.AdOrBuilder>(
                  getUpdatedAd(),
                  getParentForChildren(),
                  isClean());
          updatedAd_ = null;
        }
        return updatedAdBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParameters)
    }

    // @@protoc_insertion_point(class_scope:google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParameters)
    private static final com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParameters DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParameters();
    }

    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParameters getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParameters getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ResponsiveSearchAdImproveAdStrengthParametersOrBuilder extends
      // @@protoc_insertion_point(interface_extends:google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParameters)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Updated ad. The current ad's content will be replaced.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.resources.Ad updated_ad = 1;</code>
     * @return Whether the updatedAd field is set.
     */
    boolean hasUpdatedAd();
    /**
     * <pre>
     * Updated ad. The current ad's content will be replaced.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.resources.Ad updated_ad = 1;</code>
     * @return The updatedAd.
     */
    com.google.ads.googleads.v14.resources.Ad getUpdatedAd();
    /**
     * <pre>
     * Updated ad. The current ad's content will be replaced.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.resources.Ad updated_ad = 1;</code>
     */
    com.google.ads.googleads.v14.resources.AdOrBuilder getUpdatedAdOrBuilder();
  }
  /**
   * <pre>
   * Parameters to use when applying a responsive search ad improve ad strength
   * recommendation.
   * </pre>
   *
   * Protobuf type {@code google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParameters}
   */
  public static final class ResponsiveSearchAdImproveAdStrengthParameters extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParameters)
      ResponsiveSearchAdImproveAdStrengthParametersOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ResponsiveSearchAdImproveAdStrengthParameters.newBuilder() to construct.
    private ResponsiveSearchAdImproveAdStrengthParameters(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ResponsiveSearchAdImproveAdStrengthParameters() {
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_ResponsiveSearchAdImproveAdStrengthParameters_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_ResponsiveSearchAdImproveAdStrengthParameters_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParameters.class, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParameters.Builder.class);
    }

    public static final int UPDATED_AD_FIELD_NUMBER = 1;
    private com.google.ads.googleads.v14.resources.Ad updatedAd_;
    /**
     * <pre>
     * Updated ad. The current ad's content will be replaced.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.resources.Ad updated_ad = 1;</code>
     * @return Whether the updatedAd field is set.
     */
    @java.lang.Override
    public boolean hasUpdatedAd() {
      return updatedAd_ != null;
    }
    /**
     * <pre>
     * Updated ad. The current ad's content will be replaced.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.resources.Ad updated_ad = 1;</code>
     * @return The updatedAd.
     */
    @java.lang.Override
    public com.google.ads.googleads.v14.resources.Ad getUpdatedAd() {
      return updatedAd_ == null ? com.google.ads.googleads.v14.resources.Ad.getDefaultInstance() : updatedAd_;
    }
    /**
     * <pre>
     * Updated ad. The current ad's content will be replaced.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.resources.Ad updated_ad = 1;</code>
     */
    @java.lang.Override
    public com.google.ads.googleads.v14.resources.AdOrBuilder getUpdatedAdOrBuilder() {
      return updatedAd_ == null ? com.google.ads.googleads.v14.resources.Ad.getDefaultInstance() : updatedAd_;
    }

    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 (updatedAd_ != null) {
        output.writeMessage(1, getUpdatedAd());
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (updatedAd_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getUpdatedAd());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParameters)) {
        return super.equals(obj);
      }
      com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParameters other = (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParameters) obj;

      if (hasUpdatedAd() != other.hasUpdatedAd()) return false;
      if (hasUpdatedAd()) {
        if (!getUpdatedAd()
            .equals(other.getUpdatedAd())) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

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

    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParameters parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParameters parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParameters parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParameters parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParameters parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParameters parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParameters parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParameters parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParameters parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParameters parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParameters parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParameters parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParameters prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Parameters to use when applying a responsive search ad improve ad strength
     * recommendation.
     * </pre>
     *
     * Protobuf type {@code google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParameters}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParameters)
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParametersOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_ResponsiveSearchAdImproveAdStrengthParameters_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_ResponsiveSearchAdImproveAdStrengthParameters_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParameters.class, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParameters.Builder.class);
      }

      // Construct using com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParameters.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        updatedAd_ = null;
        if (updatedAdBuilder_ != null) {
          updatedAdBuilder_.dispose();
          updatedAdBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_ResponsiveSearchAdImproveAdStrengthParameters_descriptor;
      }

      @java.lang.Override
      public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParameters getDefaultInstanceForType() {
        return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParameters.getDefaultInstance();
      }

      @java.lang.Override
      public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParameters build() {
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParameters result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParameters buildPartial() {
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParameters result = new com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParameters(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParameters result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.updatedAd_ = updatedAdBuilder_ == null
              ? updatedAd_
              : updatedAdBuilder_.build();
        }
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParameters) {
          return mergeFrom((com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParameters)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParameters other) {
        if (other == com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParameters.getDefaultInstance()) return this;
        if (other.hasUpdatedAd()) {
          mergeUpdatedAd(other.getUpdatedAd());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                input.readMessage(
                    getUpdatedAdFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private com.google.ads.googleads.v14.resources.Ad updatedAd_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.ads.googleads.v14.resources.Ad, com.google.ads.googleads.v14.resources.Ad.Builder, com.google.ads.googleads.v14.resources.AdOrBuilder> updatedAdBuilder_;
      /**
       * <pre>
       * Updated ad. The current ad's content will be replaced.
       * </pre>
       *
       * <code>.google.ads.googleads.v14.resources.Ad updated_ad = 1;</code>
       * @return Whether the updatedAd field is set.
       */
      public boolean hasUpdatedAd() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Updated ad. The current ad's content will be replaced.
       * </pre>
       *
       * <code>.google.ads.googleads.v14.resources.Ad updated_ad = 1;</code>
       * @return The updatedAd.
       */
      public com.google.ads.googleads.v14.resources.Ad getUpdatedAd() {
        if (updatedAdBuilder_ == null) {
          return updatedAd_ == null ? com.google.ads.googleads.v14.resources.Ad.getDefaultInstance() : updatedAd_;
        } else {
          return updatedAdBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Updated ad. The current ad's content will be replaced.
       * </pre>
       *
       * <code>.google.ads.googleads.v14.resources.Ad updated_ad = 1;</code>
       */
      public Builder setUpdatedAd(com.google.ads.googleads.v14.resources.Ad value) {
        if (updatedAdBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          updatedAd_ = value;
        } else {
          updatedAdBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Updated ad. The current ad's content will be replaced.
       * </pre>
       *
       * <code>.google.ads.googleads.v14.resources.Ad updated_ad = 1;</code>
       */
      public Builder setUpdatedAd(
          com.google.ads.googleads.v14.resources.Ad.Builder builderForValue) {
        if (updatedAdBuilder_ == null) {
          updatedAd_ = builderForValue.build();
        } else {
          updatedAdBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Updated ad. The current ad's content will be replaced.
       * </pre>
       *
       * <code>.google.ads.googleads.v14.resources.Ad updated_ad = 1;</code>
       */
      public Builder mergeUpdatedAd(com.google.ads.googleads.v14.resources.Ad value) {
        if (updatedAdBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            updatedAd_ != null &&
            updatedAd_ != com.google.ads.googleads.v14.resources.Ad.getDefaultInstance()) {
            getUpdatedAdBuilder().mergeFrom(value);
          } else {
            updatedAd_ = value;
          }
        } else {
          updatedAdBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Updated ad. The current ad's content will be replaced.
       * </pre>
       *
       * <code>.google.ads.googleads.v14.resources.Ad updated_ad = 1;</code>
       */
      public Builder clearUpdatedAd() {
        bitField0_ = (bitField0_ & ~0x00000001);
        updatedAd_ = null;
        if (updatedAdBuilder_ != null) {
          updatedAdBuilder_.dispose();
          updatedAdBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Updated ad. The current ad's content will be replaced.
       * </pre>
       *
       * <code>.google.ads.googleads.v14.resources.Ad updated_ad = 1;</code>
       */
      public com.google.ads.googleads.v14.resources.Ad.Builder getUpdatedAdBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getUpdatedAdFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Updated ad. The current ad's content will be replaced.
       * </pre>
       *
       * <code>.google.ads.googleads.v14.resources.Ad updated_ad = 1;</code>
       */
      public com.google.ads.googleads.v14.resources.AdOrBuilder getUpdatedAdOrBuilder() {
        if (updatedAdBuilder_ != null) {
          return updatedAdBuilder_.getMessageOrBuilder();
        } else {
          return updatedAd_ == null ?
              com.google.ads.googleads.v14.resources.Ad.getDefaultInstance() : updatedAd_;
        }
      }
      /**
       * <pre>
       * Updated ad. The current ad's content will be replaced.
       * </pre>
       *
       * <code>.google.ads.googleads.v14.resources.Ad updated_ad = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.ads.googleads.v14.resources.Ad, com.google.ads.googleads.v14.resources.Ad.Builder, com.google.ads.googleads.v14.resources.AdOrBuilder> 
          getUpdatedAdFieldBuilder() {
        if (updatedAdBuilder_ == null) {
          updatedAdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.ads.googleads.v14.resources.Ad, com.google.ads.googleads.v14.resources.Ad.Builder, com.google.ads.googleads.v14.resources.AdOrBuilder>(
                  getUpdatedAd(),
                  getParentForChildren(),
                  isClean());
          updatedAd_ = null;
        }
        return updatedAdBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParameters)
    }

    // @@protoc_insertion_point(class_scope:google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParameters)
    private static final com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParameters DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParameters();
    }

    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParameters getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParameters getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ResponsiveSearchAdParametersOrBuilder extends
      // @@protoc_insertion_point(interface_extends:google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Required. New ad to add to recommended ad group.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.resources.Ad ad = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return Whether the ad field is set.
     */
    boolean hasAd();
    /**
     * <pre>
     * Required. New ad to add to recommended ad group.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.resources.Ad ad = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The ad.
     */
    com.google.ads.googleads.v14.resources.Ad getAd();
    /**
     * <pre>
     * Required. New ad to add to recommended ad group.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.resources.Ad ad = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    com.google.ads.googleads.v14.resources.AdOrBuilder getAdOrBuilder();
  }
  /**
   * <pre>
   * Parameters to use when applying a responsive search ad recommendation.
   * </pre>
   *
   * Protobuf type {@code google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters}
   */
  public static final class ResponsiveSearchAdParameters extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters)
      ResponsiveSearchAdParametersOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ResponsiveSearchAdParameters.newBuilder() to construct.
    private ResponsiveSearchAdParameters(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ResponsiveSearchAdParameters() {
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_ResponsiveSearchAdParameters_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_ResponsiveSearchAdParameters_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters.class, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters.Builder.class);
    }

    public static final int AD_FIELD_NUMBER = 1;
    private com.google.ads.googleads.v14.resources.Ad ad_;
    /**
     * <pre>
     * Required. New ad to add to recommended ad group.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.resources.Ad ad = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return Whether the ad field is set.
     */
    @java.lang.Override
    public boolean hasAd() {
      return ad_ != null;
    }
    /**
     * <pre>
     * Required. New ad to add to recommended ad group.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.resources.Ad ad = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The ad.
     */
    @java.lang.Override
    public com.google.ads.googleads.v14.resources.Ad getAd() {
      return ad_ == null ? com.google.ads.googleads.v14.resources.Ad.getDefaultInstance() : ad_;
    }
    /**
     * <pre>
     * Required. New ad to add to recommended ad group.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.resources.Ad ad = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    @java.lang.Override
    public com.google.ads.googleads.v14.resources.AdOrBuilder getAdOrBuilder() {
      return ad_ == null ? com.google.ads.googleads.v14.resources.Ad.getDefaultInstance() : ad_;
    }

    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 (ad_ != null) {
        output.writeMessage(1, getAd());
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (ad_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getAd());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters)) {
        return super.equals(obj);
      }
      com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters other = (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters) obj;

      if (hasAd() != other.hasAd()) return false;
      if (hasAd()) {
        if (!getAd()
            .equals(other.getAd())) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

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

    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Parameters to use when applying a responsive search ad recommendation.
     * </pre>
     *
     * Protobuf type {@code google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters)
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdParametersOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_ResponsiveSearchAdParameters_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_ResponsiveSearchAdParameters_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters.class, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters.Builder.class);
      }

      // Construct using com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters.newBuilder()
      private Builder() {

      }

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

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bitField0_ = 0;
        ad_ = null;
        if (adBuilder_ != null) {
          adBuilder_.dispose();
          adBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_ResponsiveSearchAdParameters_descriptor;
      }

      @java.lang.Override
      public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters getDefaultInstanceForType() {
        return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters.getDefaultInstance();
      }

      @java.lang.Override
      public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters build() {
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters buildPartial() {
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters result = new com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.ad_ = adBuilder_ == null
              ? ad_
              : adBuilder_.build();
        }
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters) {
          return mergeFrom((com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters other) {
        if (other == com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters.getDefaultInstance()) return this;
        if (other.hasAd()) {
          mergeAd(other.getAd());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                input.readMessage(
                    getAdFieldBuilder().getBuilder(),
                    extensionRegistry);
                bitField0_ |= 0x00000001;
                break;
              } // case 10
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private com.google.ads.googleads.v14.resources.Ad ad_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.ads.googleads.v14.resources.Ad, com.google.ads.googleads.v14.resources.Ad.Builder, com.google.ads.googleads.v14.resources.AdOrBuilder> adBuilder_;
      /**
       * <pre>
       * Required. New ad to add to recommended ad group.
       * </pre>
       *
       * <code>.google.ads.googleads.v14.resources.Ad ad = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return Whether the ad field is set.
       */
      public boolean hasAd() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * Required. New ad to add to recommended ad group.
       * </pre>
       *
       * <code>.google.ads.googleads.v14.resources.Ad ad = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The ad.
       */
      public com.google.ads.googleads.v14.resources.Ad getAd() {
        if (adBuilder_ == null) {
          return ad_ == null ? com.google.ads.googleads.v14.resources.Ad.getDefaultInstance() : ad_;
        } else {
          return adBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Required. New ad to add to recommended ad group.
       * </pre>
       *
       * <code>.google.ads.googleads.v14.resources.Ad ad = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      public Builder setAd(com.google.ads.googleads.v14.resources.Ad value) {
        if (adBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ad_ = value;
        } else {
          adBuilder_.setMessage(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Required. New ad to add to recommended ad group.
       * </pre>
       *
       * <code>.google.ads.googleads.v14.resources.Ad ad = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      public Builder setAd(
          com.google.ads.googleads.v14.resources.Ad.Builder builderForValue) {
        if (adBuilder_ == null) {
          ad_ = builderForValue.build();
        } else {
          adBuilder_.setMessage(builderForValue.build());
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Required. New ad to add to recommended ad group.
       * </pre>
       *
       * <code>.google.ads.googleads.v14.resources.Ad ad = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      public Builder mergeAd(com.google.ads.googleads.v14.resources.Ad value) {
        if (adBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0) &&
            ad_ != null &&
            ad_ != com.google.ads.googleads.v14.resources.Ad.getDefaultInstance()) {
            getAdBuilder().mergeFrom(value);
          } else {
            ad_ = value;
          }
        } else {
          adBuilder_.mergeFrom(value);
        }
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Required. New ad to add to recommended ad group.
       * </pre>
       *
       * <code>.google.ads.googleads.v14.resources.Ad ad = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      public Builder clearAd() {
        bitField0_ = (bitField0_ & ~0x00000001);
        ad_ = null;
        if (adBuilder_ != null) {
          adBuilder_.dispose();
          adBuilder_ = null;
        }
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Required. New ad to add to recommended ad group.
       * </pre>
       *
       * <code>.google.ads.googleads.v14.resources.Ad ad = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      public com.google.ads.googleads.v14.resources.Ad.Builder getAdBuilder() {
        bitField0_ |= 0x00000001;
        onChanged();
        return getAdFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Required. New ad to add to recommended ad group.
       * </pre>
       *
       * <code>.google.ads.googleads.v14.resources.Ad ad = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      public com.google.ads.googleads.v14.resources.AdOrBuilder getAdOrBuilder() {
        if (adBuilder_ != null) {
          return adBuilder_.getMessageOrBuilder();
        } else {
          return ad_ == null ?
              com.google.ads.googleads.v14.resources.Ad.getDefaultInstance() : ad_;
        }
      }
      /**
       * <pre>
       * Required. New ad to add to recommended ad group.
       * </pre>
       *
       * <code>.google.ads.googleads.v14.resources.Ad ad = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.google.ads.googleads.v14.resources.Ad, com.google.ads.googleads.v14.resources.Ad.Builder, com.google.ads.googleads.v14.resources.AdOrBuilder> 
          getAdFieldBuilder() {
        if (adBuilder_ == null) {
          adBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.google.ads.googleads.v14.resources.Ad, com.google.ads.googleads.v14.resources.Ad.Builder, com.google.ads.googleads.v14.resources.AdOrBuilder>(
                  getAd(),
                  getParentForChildren(),
                  isClean());
          ad_ = null;
        }
        return adBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters)
    }

    // @@protoc_insertion_point(class_scope:google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters)
    private static final com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters();
    }

    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface RaiseTargetCpaBidTooLowParametersOrBuilder extends
      // @@protoc_insertion_point(interface_extends:google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParameters)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Required. A number greater than 1.0 indicating the factor by which to
     * increase the target CPA. This is a required field.
     * </pre>
     *
     * <code>double target_multiplier = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The targetMultiplier.
     */
    double getTargetMultiplier();
  }
  /**
   * <pre>
   * Parameters to use when applying a raise target CPA bid too low
   * recommendation. The apply is asynchronous and can take minutes depending on
   * the number of ad groups there is in the related campaign..
   * </pre>
   *
   * Protobuf type {@code google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParameters}
   */
  public static final class RaiseTargetCpaBidTooLowParameters extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParameters)
      RaiseTargetCpaBidTooLowParametersOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use RaiseTargetCpaBidTooLowParameters.newBuilder() to construct.
    private RaiseTargetCpaBidTooLowParameters(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private RaiseTargetCpaBidTooLowParameters() {
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_RaiseTargetCpaBidTooLowParameters_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_RaiseTargetCpaBidTooLowParameters_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParameters.class, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParameters.Builder.class);
    }

    public static final int TARGET_MULTIPLIER_FIELD_NUMBER = 1;
    private double targetMultiplier_ = 0D;
    /**
     * <pre>
     * Required. A number greater than 1.0 indicating the factor by which to
     * increase the target CPA. This is a required field.
     * </pre>
     *
     * <code>double target_multiplier = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The targetMultiplier.
     */
    @java.lang.Override
    public double getTargetMultiplier() {
      return targetMultiplier_;
    }

    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 (java.lang.Double.doubleToRawLongBits(targetMultiplier_) != 0) {
        output.writeDouble(1, targetMultiplier_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (java.lang.Double.doubleToRawLongBits(targetMultiplier_) != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeDoubleSize(1, targetMultiplier_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParameters)) {
        return super.equals(obj);
      }
      com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParameters other = (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParameters) obj;

      if (java.lang.Double.doubleToLongBits(getTargetMultiplier())
          != java.lang.Double.doubleToLongBits(
              other.getTargetMultiplier())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

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

    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParameters parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParameters parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParameters parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParameters parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParameters parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParameters parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParameters parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParameters parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParameters parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParameters parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParameters parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParameters parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParameters prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Parameters to use when applying a raise target CPA bid too low
     * recommendation. The apply is asynchronous and can take minutes depending on
     * the number of ad groups there is in the related campaign..
     * </pre>
     *
     * Protobuf type {@code google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParameters}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParameters)
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParametersOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_RaiseTargetCpaBidTooLowParameters_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_RaiseTargetCpaBidTooLowParameters_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParameters.class, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParameters.Builder.class);
      }

      // Construct using com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParameters.newBuilder()
      private Builder() {

      }

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

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

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_RaiseTargetCpaBidTooLowParameters_descriptor;
      }

      @java.lang.Override
      public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParameters getDefaultInstanceForType() {
        return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParameters.getDefaultInstance();
      }

      @java.lang.Override
      public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParameters build() {
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParameters result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParameters buildPartial() {
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParameters result = new com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParameters(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParameters result) {
        int from_bitField0_ = bitField0_;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.targetMultiplier_ = targetMultiplier_;
        }
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParameters) {
          return mergeFrom((com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParameters)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParameters other) {
        if (other == com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParameters.getDefaultInstance()) return this;
        if (other.getTargetMultiplier() != 0D) {
          setTargetMultiplier(other.getTargetMultiplier());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 9: {
                targetMultiplier_ = input.readDouble();
                bitField0_ |= 0x00000001;
                break;
              } // case 9
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private double targetMultiplier_ ;
      /**
       * <pre>
       * Required. A number greater than 1.0 indicating the factor by which to
       * increase the target CPA. This is a required field.
       * </pre>
       *
       * <code>double target_multiplier = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The targetMultiplier.
       */
      @java.lang.Override
      public double getTargetMultiplier() {
        return targetMultiplier_;
      }
      /**
       * <pre>
       * Required. A number greater than 1.0 indicating the factor by which to
       * increase the target CPA. This is a required field.
       * </pre>
       *
       * <code>double target_multiplier = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The targetMultiplier to set.
       * @return This builder for chaining.
       */
      public Builder setTargetMultiplier(double value) {

        targetMultiplier_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Required. A number greater than 1.0 indicating the factor by which to
       * increase the target CPA. This is a required field.
       * </pre>
       *
       * <code>double target_multiplier = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return This builder for chaining.
       */
      public Builder clearTargetMultiplier() {
        bitField0_ = (bitField0_ & ~0x00000001);
        targetMultiplier_ = 0D;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParameters)
    }

    // @@protoc_insertion_point(class_scope:google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParameters)
    private static final com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParameters DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParameters();
    }

    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParameters getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParameters getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface UseBroadMatchKeywordParametersOrBuilder extends
      // @@protoc_insertion_point(interface_extends:google.ads.googleads.v14.services.ApplyRecommendationOperation.UseBroadMatchKeywordParameters)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * New budget amount to set for target budget resource.
     * </pre>
     *
     * <code>optional int64 new_budget_amount_micros = 1;</code>
     * @return Whether the newBudgetAmountMicros field is set.
     */
    boolean hasNewBudgetAmountMicros();
    /**
     * <pre>
     * New budget amount to set for target budget resource.
     * </pre>
     *
     * <code>optional int64 new_budget_amount_micros = 1;</code>
     * @return The newBudgetAmountMicros.
     */
    long getNewBudgetAmountMicros();
  }
  /**
   * <pre>
   * Parameters to use when applying a use broad match keyword recommendation.
   * </pre>
   *
   * Protobuf type {@code google.ads.googleads.v14.services.ApplyRecommendationOperation.UseBroadMatchKeywordParameters}
   */
  public static final class UseBroadMatchKeywordParameters extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:google.ads.googleads.v14.services.ApplyRecommendationOperation.UseBroadMatchKeywordParameters)
      UseBroadMatchKeywordParametersOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use UseBroadMatchKeywordParameters.newBuilder() to construct.
    private UseBroadMatchKeywordParameters(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private UseBroadMatchKeywordParameters() {
    }

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

    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_UseBroadMatchKeywordParameters_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_UseBroadMatchKeywordParameters_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.ads.googleads.v14.services.ApplyRecommendationOperation.UseBroadMatchKeywordParameters.class, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.UseBroadMatchKeywordParameters.Builder.class);
    }

    private int bitField0_;
    public static final int NEW_BUDGET_AMOUNT_MICROS_FIELD_NUMBER = 1;
    private long newBudgetAmountMicros_ = 0L;
    /**
     * <pre>
     * New budget amount to set for target budget resource.
     * </pre>
     *
     * <code>optional int64 new_budget_amount_micros = 1;</code>
     * @return Whether the newBudgetAmountMicros field is set.
     */
    @java.lang.Override
    public boolean hasNewBudgetAmountMicros() {
      return ((bitField0_ & 0x00000001) != 0);
    }
    /**
     * <pre>
     * New budget amount to set for target budget resource.
     * </pre>
     *
     * <code>optional int64 new_budget_amount_micros = 1;</code>
     * @return The newBudgetAmountMicros.
     */
    @java.lang.Override
    public long getNewBudgetAmountMicros() {
      return newBudgetAmountMicros_;
    }

    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 (((bitField0_ & 0x00000001) != 0)) {
        output.writeInt64(1, newBudgetAmountMicros_);
      }
      getUnknownFields().writeTo(output);
    }

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

      size = 0;
      if (((bitField0_ & 0x00000001) != 0)) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(1, newBudgetAmountMicros_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.google.ads.googleads.v14.services.ApplyRecommendationOperation.UseBroadMatchKeywordParameters)) {
        return super.equals(obj);
      }
      com.google.ads.googleads.v14.services.ApplyRecommendationOperation.UseBroadMatchKeywordParameters other = (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.UseBroadMatchKeywordParameters) obj;

      if (hasNewBudgetAmountMicros() != other.hasNewBudgetAmountMicros()) return false;
      if (hasNewBudgetAmountMicros()) {
        if (getNewBudgetAmountMicros()
            != other.getNewBudgetAmountMicros()) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

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

    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.UseBroadMatchKeywordParameters parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.UseBroadMatchKeywordParameters parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.UseBroadMatchKeywordParameters parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.UseBroadMatchKeywordParameters parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.UseBroadMatchKeywordParameters parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.UseBroadMatchKeywordParameters parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.UseBroadMatchKeywordParameters parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.UseBroadMatchKeywordParameters parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.UseBroadMatchKeywordParameters parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }

    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.UseBroadMatchKeywordParameters parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.UseBroadMatchKeywordParameters parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.UseBroadMatchKeywordParameters parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.UseBroadMatchKeywordParameters prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Parameters to use when applying a use broad match keyword recommendation.
     * </pre>
     *
     * Protobuf type {@code google.ads.googleads.v14.services.ApplyRecommendationOperation.UseBroadMatchKeywordParameters}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:google.ads.googleads.v14.services.ApplyRecommendationOperation.UseBroadMatchKeywordParameters)
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.UseBroadMatchKeywordParametersOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_UseBroadMatchKeywordParameters_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_UseBroadMatchKeywordParameters_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.google.ads.googleads.v14.services.ApplyRecommendationOperation.UseBroadMatchKeywordParameters.class, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.UseBroadMatchKeywordParameters.Builder.class);
      }

      // Construct using com.google.ads.googleads.v14.services.ApplyRecommendationOperation.UseBroadMatchKeywordParameters.newBuilder()
      private Builder() {

      }

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

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

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_UseBroadMatchKeywordParameters_descriptor;
      }

      @java.lang.Override
      public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.UseBroadMatchKeywordParameters getDefaultInstanceForType() {
        return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.UseBroadMatchKeywordParameters.getDefaultInstance();
      }

      @java.lang.Override
      public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.UseBroadMatchKeywordParameters build() {
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.UseBroadMatchKeywordParameters result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.UseBroadMatchKeywordParameters buildPartial() {
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.UseBroadMatchKeywordParameters result = new com.google.ads.googleads.v14.services.ApplyRecommendationOperation.UseBroadMatchKeywordParameters(this);
        if (bitField0_ != 0) { buildPartial0(result); }
        onBuilt();
        return result;
      }

      private void buildPartial0(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.UseBroadMatchKeywordParameters result) {
        int from_bitField0_ = bitField0_;
        int to_bitField0_ = 0;
        if (((from_bitField0_ & 0x00000001) != 0)) {
          result.newBudgetAmountMicros_ = newBudgetAmountMicros_;
          to_bitField0_ |= 0x00000001;
        }
        result.bitField0_ |= to_bitField0_;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.google.ads.googleads.v14.services.ApplyRecommendationOperation.UseBroadMatchKeywordParameters) {
          return mergeFrom((com.google.ads.googleads.v14.services.ApplyRecommendationOperation.UseBroadMatchKeywordParameters)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.UseBroadMatchKeywordParameters other) {
        if (other == com.google.ads.googleads.v14.services.ApplyRecommendationOperation.UseBroadMatchKeywordParameters.getDefaultInstance()) return this;
        if (other.hasNewBudgetAmountMicros()) {
          setNewBudgetAmountMicros(other.getNewBudgetAmountMicros());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                newBudgetAmountMicros_ = input.readInt64();
                bitField0_ |= 0x00000001;
                break;
              } // case 8
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private long newBudgetAmountMicros_ ;
      /**
       * <pre>
       * New budget amount to set for target budget resource.
       * </pre>
       *
       * <code>optional int64 new_budget_amount_micros = 1;</code>
       * @return Whether the newBudgetAmountMicros field is set.
       */
      @java.lang.Override
      public boolean hasNewBudgetAmountMicros() {
        return ((bitField0_ & 0x00000001) != 0);
      }
      /**
       * <pre>
       * New budget amount to set for target budget resource.
       * </pre>
       *
       * <code>optional int64 new_budget_amount_micros = 1;</code>
       * @return The newBudgetAmountMicros.
       */
      @java.lang.Override
      public long getNewBudgetAmountMicros() {
        return newBudgetAmountMicros_;
      }
      /**
       * <pre>
       * New budget amount to set for target budget resource.
       * </pre>
       *
       * <code>optional int64 new_budget_amount_micros = 1;</code>
       * @param value The newBudgetAmountMicros to set.
       * @return This builder for chaining.
       */
      public Builder setNewBudgetAmountMicros(long value) {

        newBudgetAmountMicros_ = value;
        bitField0_ |= 0x00000001;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * New budget amount to set for target budget resource.
       * </pre>
       *
       * <code>optional int64 new_budget_amount_micros = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearNewBudgetAmountMicros() {
        bitField0_ = (bitField0_ & ~0x00000001);
        newBudgetAmountMicros_ = 0L;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:google.ads.googleads.v14.services.ApplyRecommendationOperation.UseBroadMatchKeywordParameters)
    }

    // @@protoc_insertion_point(class_scope:google.ads.googleads.v14.services.ApplyRecommendationOperation.UseBroadMatchKeywordParameters)
    private static final com.google.ads.googleads.v14.services.ApplyRecommendationOperation.UseBroadMatchKeywordParameters DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.google.ads.googleads.v14.services.ApplyRecommendationOperation.UseBroadMatchKeywordParameters();
    }

    public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation.UseBroadMatchKeywordParameters getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.UseBroadMatchKeywordParameters getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  private int applyParametersCase_ = 0;
  @SuppressWarnings("serial")
  private java.lang.Object applyParameters_;
  public enum ApplyParametersCase
      implements com.google.protobuf.Internal.EnumLite,
          com.google.protobuf.AbstractMessage.InternalOneOfEnum {
    CAMPAIGN_BUDGET(2),
    TEXT_AD(3),
    KEYWORD(4),
    TARGET_CPA_OPT_IN(5),
    TARGET_ROAS_OPT_IN(10),
    CALLOUT_EXTENSION(6),
    CALL_EXTENSION(7),
    SITELINK_EXTENSION(8),
    MOVE_UNUSED_BUDGET(9),
    RESPONSIVE_SEARCH_AD(11),
    USE_BROAD_MATCH_KEYWORD(12),
    RESPONSIVE_SEARCH_AD_ASSET(13),
    RESPONSIVE_SEARCH_AD_IMPROVE_AD_STRENGTH(14),
    RAISE_TARGET_CPA_BID_TOO_LOW(15),
    FORECASTING_SET_TARGET_ROAS(16),
    CALLOUT_ASSET(17),
    CALL_ASSET(18),
    SITELINK_ASSET(19),
    RAISE_TARGET_CPA(20),
    LOWER_TARGET_ROAS(21),
    APPLYPARAMETERS_NOT_SET(0);
    private final int value;
    private ApplyParametersCase(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 ApplyParametersCase valueOf(int value) {
      return forNumber(value);
    }

    public static ApplyParametersCase forNumber(int value) {
      switch (value) {
        case 2: return CAMPAIGN_BUDGET;
        case 3: return TEXT_AD;
        case 4: return KEYWORD;
        case 5: return TARGET_CPA_OPT_IN;
        case 10: return TARGET_ROAS_OPT_IN;
        case 6: return CALLOUT_EXTENSION;
        case 7: return CALL_EXTENSION;
        case 8: return SITELINK_EXTENSION;
        case 9: return MOVE_UNUSED_BUDGET;
        case 11: return RESPONSIVE_SEARCH_AD;
        case 12: return USE_BROAD_MATCH_KEYWORD;
        case 13: return RESPONSIVE_SEARCH_AD_ASSET;
        case 14: return RESPONSIVE_SEARCH_AD_IMPROVE_AD_STRENGTH;
        case 15: return RAISE_TARGET_CPA_BID_TOO_LOW;
        case 16: return FORECASTING_SET_TARGET_ROAS;
        case 17: return CALLOUT_ASSET;
        case 18: return CALL_ASSET;
        case 19: return SITELINK_ASSET;
        case 20: return RAISE_TARGET_CPA;
        case 21: return LOWER_TARGET_ROAS;
        case 0: return APPLYPARAMETERS_NOT_SET;
        default: return null;
      }
    }
    public int getNumber() {
      return this.value;
    }
  };

  public ApplyParametersCase
  getApplyParametersCase() {
    return ApplyParametersCase.forNumber(
        applyParametersCase_);
  }

  public static final int RESOURCE_NAME_FIELD_NUMBER = 1;
  @SuppressWarnings("serial")
  private volatile java.lang.Object resourceName_ = "";
  /**
   * <pre>
   * The resource name of the recommendation to apply.
   * </pre>
   *
   * <code>string resource_name = 1 [(.google.api.resource_reference) = { ... }</code>
   * @return The resourceName.
   */
  @java.lang.Override
  public java.lang.String getResourceName() {
    java.lang.Object ref = resourceName_;
    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();
      resourceName_ = s;
      return s;
    }
  }
  /**
   * <pre>
   * The resource name of the recommendation to apply.
   * </pre>
   *
   * <code>string resource_name = 1 [(.google.api.resource_reference) = { ... }</code>
   * @return The bytes for resourceName.
   */
  @java.lang.Override
  public com.google.protobuf.ByteString
      getResourceNameBytes() {
    java.lang.Object ref = resourceName_;
    if (ref instanceof java.lang.String) {
      com.google.protobuf.ByteString b = 
          com.google.protobuf.ByteString.copyFromUtf8(
              (java.lang.String) ref);
      resourceName_ = b;
      return b;
    } else {
      return (com.google.protobuf.ByteString) ref;
    }
  }

  public static final int CAMPAIGN_BUDGET_FIELD_NUMBER = 2;
  /**
   * <pre>
   * Optional parameters to use when applying a campaign budget
   * recommendation.
   * </pre>
   *
   * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.CampaignBudgetParameters campaign_budget = 2;</code>
   * @return Whether the campaignBudget field is set.
   */
  @java.lang.Override
  public boolean hasCampaignBudget() {
    return applyParametersCase_ == 2;
  }
  /**
   * <pre>
   * Optional parameters to use when applying a campaign budget
   * recommendation.
   * </pre>
   *
   * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.CampaignBudgetParameters campaign_budget = 2;</code>
   * @return The campaignBudget.
   */
  @java.lang.Override
  public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CampaignBudgetParameters getCampaignBudget() {
    if (applyParametersCase_ == 2) {
       return (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CampaignBudgetParameters) applyParameters_;
    }
    return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CampaignBudgetParameters.getDefaultInstance();
  }
  /**
   * <pre>
   * Optional parameters to use when applying a campaign budget
   * recommendation.
   * </pre>
   *
   * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.CampaignBudgetParameters campaign_budget = 2;</code>
   */
  @java.lang.Override
  public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CampaignBudgetParametersOrBuilder getCampaignBudgetOrBuilder() {
    if (applyParametersCase_ == 2) {
       return (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CampaignBudgetParameters) applyParameters_;
    }
    return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CampaignBudgetParameters.getDefaultInstance();
  }

  public static final int TEXT_AD_FIELD_NUMBER = 3;
  /**
   * <pre>
   * Optional parameters to use when applying a text ad recommendation.
   * </pre>
   *
   * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.TextAdParameters text_ad = 3;</code>
   * @return Whether the textAd field is set.
   */
  @java.lang.Override
  public boolean hasTextAd() {
    return applyParametersCase_ == 3;
  }
  /**
   * <pre>
   * Optional parameters to use when applying a text ad recommendation.
   * </pre>
   *
   * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.TextAdParameters text_ad = 3;</code>
   * @return The textAd.
   */
  @java.lang.Override
  public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TextAdParameters getTextAd() {
    if (applyParametersCase_ == 3) {
       return (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TextAdParameters) applyParameters_;
    }
    return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TextAdParameters.getDefaultInstance();
  }
  /**
   * <pre>
   * Optional parameters to use when applying a text ad recommendation.
   * </pre>
   *
   * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.TextAdParameters text_ad = 3;</code>
   */
  @java.lang.Override
  public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TextAdParametersOrBuilder getTextAdOrBuilder() {
    if (applyParametersCase_ == 3) {
       return (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TextAdParameters) applyParameters_;
    }
    return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TextAdParameters.getDefaultInstance();
  }

  public static final int KEYWORD_FIELD_NUMBER = 4;
  /**
   * <pre>
   * Optional parameters to use when applying keyword recommendation.
   * </pre>
   *
   * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.KeywordParameters keyword = 4;</code>
   * @return Whether the keyword field is set.
   */
  @java.lang.Override
  public boolean hasKeyword() {
    return applyParametersCase_ == 4;
  }
  /**
   * <pre>
   * Optional parameters to use when applying keyword recommendation.
   * </pre>
   *
   * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.KeywordParameters keyword = 4;</code>
   * @return The keyword.
   */
  @java.lang.Override
  public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.KeywordParameters getKeyword() {
    if (applyParametersCase_ == 4) {
       return (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.KeywordParameters) applyParameters_;
    }
    return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.KeywordParameters.getDefaultInstance();
  }
  /**
   * <pre>
   * Optional parameters to use when applying keyword recommendation.
   * </pre>
   *
   * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.KeywordParameters keyword = 4;</code>
   */
  @java.lang.Override
  public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.KeywordParametersOrBuilder getKeywordOrBuilder() {
    if (applyParametersCase_ == 4) {
       return (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.KeywordParameters) applyParameters_;
    }
    return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.KeywordParameters.getDefaultInstance();
  }

  public static final int TARGET_CPA_OPT_IN_FIELD_NUMBER = 5;
  /**
   * <pre>
   * Optional parameters to use when applying target CPA opt-in
   * recommendation.
   * </pre>
   *
   * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetCpaOptInParameters target_cpa_opt_in = 5;</code>
   * @return Whether the targetCpaOptIn field is set.
   */
  @java.lang.Override
  public boolean hasTargetCpaOptIn() {
    return applyParametersCase_ == 5;
  }
  /**
   * <pre>
   * Optional parameters to use when applying target CPA opt-in
   * recommendation.
   * </pre>
   *
   * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetCpaOptInParameters target_cpa_opt_in = 5;</code>
   * @return The targetCpaOptIn.
   */
  @java.lang.Override
  public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetCpaOptInParameters getTargetCpaOptIn() {
    if (applyParametersCase_ == 5) {
       return (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetCpaOptInParameters) applyParameters_;
    }
    return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetCpaOptInParameters.getDefaultInstance();
  }
  /**
   * <pre>
   * Optional parameters to use when applying target CPA opt-in
   * recommendation.
   * </pre>
   *
   * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetCpaOptInParameters target_cpa_opt_in = 5;</code>
   */
  @java.lang.Override
  public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetCpaOptInParametersOrBuilder getTargetCpaOptInOrBuilder() {
    if (applyParametersCase_ == 5) {
       return (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetCpaOptInParameters) applyParameters_;
    }
    return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetCpaOptInParameters.getDefaultInstance();
  }

  public static final int TARGET_ROAS_OPT_IN_FIELD_NUMBER = 10;
  /**
   * <pre>
   * Optional parameters to use when applying target ROAS opt-in
   * recommendation.
   * </pre>
   *
   * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetRoasOptInParameters target_roas_opt_in = 10;</code>
   * @return Whether the targetRoasOptIn field is set.
   */
  @java.lang.Override
  public boolean hasTargetRoasOptIn() {
    return applyParametersCase_ == 10;
  }
  /**
   * <pre>
   * Optional parameters to use when applying target ROAS opt-in
   * recommendation.
   * </pre>
   *
   * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetRoasOptInParameters target_roas_opt_in = 10;</code>
   * @return The targetRoasOptIn.
   */
  @java.lang.Override
  public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetRoasOptInParameters getTargetRoasOptIn() {
    if (applyParametersCase_ == 10) {
       return (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetRoasOptInParameters) applyParameters_;
    }
    return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetRoasOptInParameters.getDefaultInstance();
  }
  /**
   * <pre>
   * Optional parameters to use when applying target ROAS opt-in
   * recommendation.
   * </pre>
   *
   * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetRoasOptInParameters target_roas_opt_in = 10;</code>
   */
  @java.lang.Override
  public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetRoasOptInParametersOrBuilder getTargetRoasOptInOrBuilder() {
    if (applyParametersCase_ == 10) {
       return (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetRoasOptInParameters) applyParameters_;
    }
    return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetRoasOptInParameters.getDefaultInstance();
  }

  public static final int CALLOUT_EXTENSION_FIELD_NUMBER = 6;
  /**
   * <pre>
   * Parameters to use when applying callout extension recommendation.
   * </pre>
   *
   * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutExtensionParameters callout_extension = 6;</code>
   * @return Whether the calloutExtension field is set.
   */
  @java.lang.Override
  public boolean hasCalloutExtension() {
    return applyParametersCase_ == 6;
  }
  /**
   * <pre>
   * Parameters to use when applying callout extension recommendation.
   * </pre>
   *
   * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutExtensionParameters callout_extension = 6;</code>
   * @return The calloutExtension.
   */
  @java.lang.Override
  public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutExtensionParameters getCalloutExtension() {
    if (applyParametersCase_ == 6) {
       return (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutExtensionParameters) applyParameters_;
    }
    return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutExtensionParameters.getDefaultInstance();
  }
  /**
   * <pre>
   * Parameters to use when applying callout extension recommendation.
   * </pre>
   *
   * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutExtensionParameters callout_extension = 6;</code>
   */
  @java.lang.Override
  public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutExtensionParametersOrBuilder getCalloutExtensionOrBuilder() {
    if (applyParametersCase_ == 6) {
       return (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutExtensionParameters) applyParameters_;
    }
    return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutExtensionParameters.getDefaultInstance();
  }

  public static final int CALL_EXTENSION_FIELD_NUMBER = 7;
  /**
   * <pre>
   * Parameters to use when applying call extension recommendation.
   * </pre>
   *
   * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallExtensionParameters call_extension = 7;</code>
   * @return Whether the callExtension field is set.
   */
  @java.lang.Override
  public boolean hasCallExtension() {
    return applyParametersCase_ == 7;
  }
  /**
   * <pre>
   * Parameters to use when applying call extension recommendation.
   * </pre>
   *
   * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallExtensionParameters call_extension = 7;</code>
   * @return The callExtension.
   */
  @java.lang.Override
  public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallExtensionParameters getCallExtension() {
    if (applyParametersCase_ == 7) {
       return (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallExtensionParameters) applyParameters_;
    }
    return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallExtensionParameters.getDefaultInstance();
  }
  /**
   * <pre>
   * Parameters to use when applying call extension recommendation.
   * </pre>
   *
   * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallExtensionParameters call_extension = 7;</code>
   */
  @java.lang.Override
  public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallExtensionParametersOrBuilder getCallExtensionOrBuilder() {
    if (applyParametersCase_ == 7) {
       return (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallExtensionParameters) applyParameters_;
    }
    return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallExtensionParameters.getDefaultInstance();
  }

  public static final int SITELINK_EXTENSION_FIELD_NUMBER = 8;
  /**
   * <pre>
   * Parameters to use when applying sitelink recommendation.
   * </pre>
   *
   * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkExtensionParameters sitelink_extension = 8;</code>
   * @return Whether the sitelinkExtension field is set.
   */
  @java.lang.Override
  public boolean hasSitelinkExtension() {
    return applyParametersCase_ == 8;
  }
  /**
   * <pre>
   * Parameters to use when applying sitelink recommendation.
   * </pre>
   *
   * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkExtensionParameters sitelink_extension = 8;</code>
   * @return The sitelinkExtension.
   */
  @java.lang.Override
  public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkExtensionParameters getSitelinkExtension() {
    if (applyParametersCase_ == 8) {
       return (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkExtensionParameters) applyParameters_;
    }
    return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkExtensionParameters.getDefaultInstance();
  }
  /**
   * <pre>
   * Parameters to use when applying sitelink recommendation.
   * </pre>
   *
   * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkExtensionParameters sitelink_extension = 8;</code>
   */
  @java.lang.Override
  public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkExtensionParametersOrBuilder getSitelinkExtensionOrBuilder() {
    if (applyParametersCase_ == 8) {
       return (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkExtensionParameters) applyParameters_;
    }
    return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkExtensionParameters.getDefaultInstance();
  }

  public static final int MOVE_UNUSED_BUDGET_FIELD_NUMBER = 9;
  /**
   * <pre>
   * Parameters to use when applying move unused budget recommendation.
   * </pre>
   *
   * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters move_unused_budget = 9;</code>
   * @return Whether the moveUnusedBudget field is set.
   */
  @java.lang.Override
  public boolean hasMoveUnusedBudget() {
    return applyParametersCase_ == 9;
  }
  /**
   * <pre>
   * Parameters to use when applying move unused budget recommendation.
   * </pre>
   *
   * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters move_unused_budget = 9;</code>
   * @return The moveUnusedBudget.
   */
  @java.lang.Override
  public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters getMoveUnusedBudget() {
    if (applyParametersCase_ == 9) {
       return (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters) applyParameters_;
    }
    return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters.getDefaultInstance();
  }
  /**
   * <pre>
   * Parameters to use when applying move unused budget recommendation.
   * </pre>
   *
   * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters move_unused_budget = 9;</code>
   */
  @java.lang.Override
  public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.MoveUnusedBudgetParametersOrBuilder getMoveUnusedBudgetOrBuilder() {
    if (applyParametersCase_ == 9) {
       return (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters) applyParameters_;
    }
    return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters.getDefaultInstance();
  }

  public static final int RESPONSIVE_SEARCH_AD_FIELD_NUMBER = 11;
  /**
   * <pre>
   * Parameters to use when applying a responsive search ad recommendation.
   * </pre>
   *
   * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters responsive_search_ad = 11;</code>
   * @return Whether the responsiveSearchAd field is set.
   */
  @java.lang.Override
  public boolean hasResponsiveSearchAd() {
    return applyParametersCase_ == 11;
  }
  /**
   * <pre>
   * Parameters to use when applying a responsive search ad recommendation.
   * </pre>
   *
   * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters responsive_search_ad = 11;</code>
   * @return The responsiveSearchAd.
   */
  @java.lang.Override
  public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters getResponsiveSearchAd() {
    if (applyParametersCase_ == 11) {
       return (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters) applyParameters_;
    }
    return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters.getDefaultInstance();
  }
  /**
   * <pre>
   * Parameters to use when applying a responsive search ad recommendation.
   * </pre>
   *
   * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters responsive_search_ad = 11;</code>
   */
  @java.lang.Override
  public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdParametersOrBuilder getResponsiveSearchAdOrBuilder() {
    if (applyParametersCase_ == 11) {
       return (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters) applyParameters_;
    }
    return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters.getDefaultInstance();
  }

  public static final int USE_BROAD_MATCH_KEYWORD_FIELD_NUMBER = 12;
  /**
   * <pre>
   * Parameters to use when applying a use broad match keyword recommendation.
   * </pre>
   *
   * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.UseBroadMatchKeywordParameters use_broad_match_keyword = 12;</code>
   * @return Whether the useBroadMatchKeyword field is set.
   */
  @java.lang.Override
  public boolean hasUseBroadMatchKeyword() {
    return applyParametersCase_ == 12;
  }
  /**
   * <pre>
   * Parameters to use when applying a use broad match keyword recommendation.
   * </pre>
   *
   * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.UseBroadMatchKeywordParameters use_broad_match_keyword = 12;</code>
   * @return The useBroadMatchKeyword.
   */
  @java.lang.Override
  public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.UseBroadMatchKeywordParameters getUseBroadMatchKeyword() {
    if (applyParametersCase_ == 12) {
       return (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.UseBroadMatchKeywordParameters) applyParameters_;
    }
    return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.UseBroadMatchKeywordParameters.getDefaultInstance();
  }
  /**
   * <pre>
   * Parameters to use when applying a use broad match keyword recommendation.
   * </pre>
   *
   * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.UseBroadMatchKeywordParameters use_broad_match_keyword = 12;</code>
   */
  @java.lang.Override
  public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.UseBroadMatchKeywordParametersOrBuilder getUseBroadMatchKeywordOrBuilder() {
    if (applyParametersCase_ == 12) {
       return (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.UseBroadMatchKeywordParameters) applyParameters_;
    }
    return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.UseBroadMatchKeywordParameters.getDefaultInstance();
  }

  public static final int RESPONSIVE_SEARCH_AD_ASSET_FIELD_NUMBER = 13;
  /**
   * <pre>
   * Parameters to use when applying a responsive search ad asset
   * recommendation.
   * </pre>
   *
   * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParameters responsive_search_ad_asset = 13;</code>
   * @return Whether the responsiveSearchAdAsset field is set.
   */
  @java.lang.Override
  public boolean hasResponsiveSearchAdAsset() {
    return applyParametersCase_ == 13;
  }
  /**
   * <pre>
   * Parameters to use when applying a responsive search ad asset
   * recommendation.
   * </pre>
   *
   * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParameters responsive_search_ad_asset = 13;</code>
   * @return The responsiveSearchAdAsset.
   */
  @java.lang.Override
  public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParameters getResponsiveSearchAdAsset() {
    if (applyParametersCase_ == 13) {
       return (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParameters) applyParameters_;
    }
    return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParameters.getDefaultInstance();
  }
  /**
   * <pre>
   * Parameters to use when applying a responsive search ad asset
   * recommendation.
   * </pre>
   *
   * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParameters responsive_search_ad_asset = 13;</code>
   */
  @java.lang.Override
  public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParametersOrBuilder getResponsiveSearchAdAssetOrBuilder() {
    if (applyParametersCase_ == 13) {
       return (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParameters) applyParameters_;
    }
    return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParameters.getDefaultInstance();
  }

  public static final int RESPONSIVE_SEARCH_AD_IMPROVE_AD_STRENGTH_FIELD_NUMBER = 14;
  /**
   * <pre>
   * Parameters to use when applying a responsive search ad improve ad
   * strength recommendation.
   * </pre>
   *
   * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParameters responsive_search_ad_improve_ad_strength = 14;</code>
   * @return Whether the responsiveSearchAdImproveAdStrength field is set.
   */
  @java.lang.Override
  public boolean hasResponsiveSearchAdImproveAdStrength() {
    return applyParametersCase_ == 14;
  }
  /**
   * <pre>
   * Parameters to use when applying a responsive search ad improve ad
   * strength recommendation.
   * </pre>
   *
   * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParameters responsive_search_ad_improve_ad_strength = 14;</code>
   * @return The responsiveSearchAdImproveAdStrength.
   */
  @java.lang.Override
  public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParameters getResponsiveSearchAdImproveAdStrength() {
    if (applyParametersCase_ == 14) {
       return (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParameters) applyParameters_;
    }
    return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParameters.getDefaultInstance();
  }
  /**
   * <pre>
   * Parameters to use when applying a responsive search ad improve ad
   * strength recommendation.
   * </pre>
   *
   * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParameters responsive_search_ad_improve_ad_strength = 14;</code>
   */
  @java.lang.Override
  public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParametersOrBuilder getResponsiveSearchAdImproveAdStrengthOrBuilder() {
    if (applyParametersCase_ == 14) {
       return (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParameters) applyParameters_;
    }
    return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParameters.getDefaultInstance();
  }

  public static final int RAISE_TARGET_CPA_BID_TOO_LOW_FIELD_NUMBER = 15;
  /**
   * <pre>
   * Parameters to use when applying a raise target CPA bid too low
   * recommendation. The apply is asynchronous and can take minutes depending
   * on the number of ad groups there is in the related campaign.
   * </pre>
   *
   * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParameters raise_target_cpa_bid_too_low = 15;</code>
   * @return Whether the raiseTargetCpaBidTooLow field is set.
   */
  @java.lang.Override
  public boolean hasRaiseTargetCpaBidTooLow() {
    return applyParametersCase_ == 15;
  }
  /**
   * <pre>
   * Parameters to use when applying a raise target CPA bid too low
   * recommendation. The apply is asynchronous and can take minutes depending
   * on the number of ad groups there is in the related campaign.
   * </pre>
   *
   * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParameters raise_target_cpa_bid_too_low = 15;</code>
   * @return The raiseTargetCpaBidTooLow.
   */
  @java.lang.Override
  public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParameters getRaiseTargetCpaBidTooLow() {
    if (applyParametersCase_ == 15) {
       return (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParameters) applyParameters_;
    }
    return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParameters.getDefaultInstance();
  }
  /**
   * <pre>
   * Parameters to use when applying a raise target CPA bid too low
   * recommendation. The apply is asynchronous and can take minutes depending
   * on the number of ad groups there is in the related campaign.
   * </pre>
   *
   * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParameters raise_target_cpa_bid_too_low = 15;</code>
   */
  @java.lang.Override
  public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParametersOrBuilder getRaiseTargetCpaBidTooLowOrBuilder() {
    if (applyParametersCase_ == 15) {
       return (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParameters) applyParameters_;
    }
    return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParameters.getDefaultInstance();
  }

  public static final int FORECASTING_SET_TARGET_ROAS_FIELD_NUMBER = 16;
  /**
   * <pre>
   * Parameters to use when applying a forecasting set target ROAS
   * recommendation.
   * </pre>
   *
   * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParameters forecasting_set_target_roas = 16;</code>
   * @return Whether the forecastingSetTargetRoas field is set.
   */
  @java.lang.Override
  public boolean hasForecastingSetTargetRoas() {
    return applyParametersCase_ == 16;
  }
  /**
   * <pre>
   * Parameters to use when applying a forecasting set target ROAS
   * recommendation.
   * </pre>
   *
   * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParameters forecasting_set_target_roas = 16;</code>
   * @return The forecastingSetTargetRoas.
   */
  @java.lang.Override
  public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParameters getForecastingSetTargetRoas() {
    if (applyParametersCase_ == 16) {
       return (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParameters) applyParameters_;
    }
    return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParameters.getDefaultInstance();
  }
  /**
   * <pre>
   * Parameters to use when applying a forecasting set target ROAS
   * recommendation.
   * </pre>
   *
   * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParameters forecasting_set_target_roas = 16;</code>
   */
  @java.lang.Override
  public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParametersOrBuilder getForecastingSetTargetRoasOrBuilder() {
    if (applyParametersCase_ == 16) {
       return (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParameters) applyParameters_;
    }
    return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParameters.getDefaultInstance();
  }

  public static final int CALLOUT_ASSET_FIELD_NUMBER = 17;
  /**
   * <pre>
   * Parameters to use when applying callout asset recommendation.
   * </pre>
   *
   * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutAssetParameters callout_asset = 17;</code>
   * @return Whether the calloutAsset field is set.
   */
  @java.lang.Override
  public boolean hasCalloutAsset() {
    return applyParametersCase_ == 17;
  }
  /**
   * <pre>
   * Parameters to use when applying callout asset recommendation.
   * </pre>
   *
   * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutAssetParameters callout_asset = 17;</code>
   * @return The calloutAsset.
   */
  @java.lang.Override
  public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutAssetParameters getCalloutAsset() {
    if (applyParametersCase_ == 17) {
       return (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutAssetParameters) applyParameters_;
    }
    return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutAssetParameters.getDefaultInstance();
  }
  /**
   * <pre>
   * Parameters to use when applying callout asset recommendation.
   * </pre>
   *
   * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutAssetParameters callout_asset = 17;</code>
   */
  @java.lang.Override
  public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutAssetParametersOrBuilder getCalloutAssetOrBuilder() {
    if (applyParametersCase_ == 17) {
       return (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutAssetParameters) applyParameters_;
    }
    return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutAssetParameters.getDefaultInstance();
  }

  public static final int CALL_ASSET_FIELD_NUMBER = 18;
  /**
   * <pre>
   * Parameters to use when applying call asset recommendation.
   * </pre>
   *
   * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallAssetParameters call_asset = 18;</code>
   * @return Whether the callAsset field is set.
   */
  @java.lang.Override
  public boolean hasCallAsset() {
    return applyParametersCase_ == 18;
  }
  /**
   * <pre>
   * Parameters to use when applying call asset recommendation.
   * </pre>
   *
   * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallAssetParameters call_asset = 18;</code>
   * @return The callAsset.
   */
  @java.lang.Override
  public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallAssetParameters getCallAsset() {
    if (applyParametersCase_ == 18) {
       return (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallAssetParameters) applyParameters_;
    }
    return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallAssetParameters.getDefaultInstance();
  }
  /**
   * <pre>
   * Parameters to use when applying call asset recommendation.
   * </pre>
   *
   * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallAssetParameters call_asset = 18;</code>
   */
  @java.lang.Override
  public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallAssetParametersOrBuilder getCallAssetOrBuilder() {
    if (applyParametersCase_ == 18) {
       return (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallAssetParameters) applyParameters_;
    }
    return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallAssetParameters.getDefaultInstance();
  }

  public static final int SITELINK_ASSET_FIELD_NUMBER = 19;
  /**
   * <pre>
   * Parameters to use when applying sitelink asset recommendation.
   * </pre>
   *
   * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkAssetParameters sitelink_asset = 19;</code>
   * @return Whether the sitelinkAsset field is set.
   */
  @java.lang.Override
  public boolean hasSitelinkAsset() {
    return applyParametersCase_ == 19;
  }
  /**
   * <pre>
   * Parameters to use when applying sitelink asset recommendation.
   * </pre>
   *
   * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkAssetParameters sitelink_asset = 19;</code>
   * @return The sitelinkAsset.
   */
  @java.lang.Override
  public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkAssetParameters getSitelinkAsset() {
    if (applyParametersCase_ == 19) {
       return (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkAssetParameters) applyParameters_;
    }
    return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkAssetParameters.getDefaultInstance();
  }
  /**
   * <pre>
   * Parameters to use when applying sitelink asset recommendation.
   * </pre>
   *
   * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkAssetParameters sitelink_asset = 19;</code>
   */
  @java.lang.Override
  public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkAssetParametersOrBuilder getSitelinkAssetOrBuilder() {
    if (applyParametersCase_ == 19) {
       return (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkAssetParameters) applyParameters_;
    }
    return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkAssetParameters.getDefaultInstance();
  }

  public static final int RAISE_TARGET_CPA_FIELD_NUMBER = 20;
  /**
   * <pre>
   * Parameters to use when applying raise Target CPA recommendation.
   * </pre>
   *
   * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaParameters raise_target_cpa = 20;</code>
   * @return Whether the raiseTargetCpa field is set.
   */
  @java.lang.Override
  public boolean hasRaiseTargetCpa() {
    return applyParametersCase_ == 20;
  }
  /**
   * <pre>
   * Parameters to use when applying raise Target CPA recommendation.
   * </pre>
   *
   * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaParameters raise_target_cpa = 20;</code>
   * @return The raiseTargetCpa.
   */
  @java.lang.Override
  public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaParameters getRaiseTargetCpa() {
    if (applyParametersCase_ == 20) {
       return (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaParameters) applyParameters_;
    }
    return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaParameters.getDefaultInstance();
  }
  /**
   * <pre>
   * Parameters to use when applying raise Target CPA recommendation.
   * </pre>
   *
   * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaParameters raise_target_cpa = 20;</code>
   */
  @java.lang.Override
  public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaParametersOrBuilder getRaiseTargetCpaOrBuilder() {
    if (applyParametersCase_ == 20) {
       return (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaParameters) applyParameters_;
    }
    return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaParameters.getDefaultInstance();
  }

  public static final int LOWER_TARGET_ROAS_FIELD_NUMBER = 21;
  /**
   * <pre>
   * Parameters to use when applying lower Target ROAS recommendation.
   * </pre>
   *
   * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.LowerTargetRoasParameters lower_target_roas = 21;</code>
   * @return Whether the lowerTargetRoas field is set.
   */
  @java.lang.Override
  public boolean hasLowerTargetRoas() {
    return applyParametersCase_ == 21;
  }
  /**
   * <pre>
   * Parameters to use when applying lower Target ROAS recommendation.
   * </pre>
   *
   * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.LowerTargetRoasParameters lower_target_roas = 21;</code>
   * @return The lowerTargetRoas.
   */
  @java.lang.Override
  public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.LowerTargetRoasParameters getLowerTargetRoas() {
    if (applyParametersCase_ == 21) {
       return (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.LowerTargetRoasParameters) applyParameters_;
    }
    return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.LowerTargetRoasParameters.getDefaultInstance();
  }
  /**
   * <pre>
   * Parameters to use when applying lower Target ROAS recommendation.
   * </pre>
   *
   * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.LowerTargetRoasParameters lower_target_roas = 21;</code>
   */
  @java.lang.Override
  public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.LowerTargetRoasParametersOrBuilder getLowerTargetRoasOrBuilder() {
    if (applyParametersCase_ == 21) {
       return (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.LowerTargetRoasParameters) applyParameters_;
    }
    return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.LowerTargetRoasParameters.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 (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(resourceName_)) {
      com.google.protobuf.GeneratedMessageV3.writeString(output, 1, resourceName_);
    }
    if (applyParametersCase_ == 2) {
      output.writeMessage(2, (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CampaignBudgetParameters) applyParameters_);
    }
    if (applyParametersCase_ == 3) {
      output.writeMessage(3, (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TextAdParameters) applyParameters_);
    }
    if (applyParametersCase_ == 4) {
      output.writeMessage(4, (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.KeywordParameters) applyParameters_);
    }
    if (applyParametersCase_ == 5) {
      output.writeMessage(5, (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetCpaOptInParameters) applyParameters_);
    }
    if (applyParametersCase_ == 6) {
      output.writeMessage(6, (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutExtensionParameters) applyParameters_);
    }
    if (applyParametersCase_ == 7) {
      output.writeMessage(7, (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallExtensionParameters) applyParameters_);
    }
    if (applyParametersCase_ == 8) {
      output.writeMessage(8, (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkExtensionParameters) applyParameters_);
    }
    if (applyParametersCase_ == 9) {
      output.writeMessage(9, (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters) applyParameters_);
    }
    if (applyParametersCase_ == 10) {
      output.writeMessage(10, (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetRoasOptInParameters) applyParameters_);
    }
    if (applyParametersCase_ == 11) {
      output.writeMessage(11, (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters) applyParameters_);
    }
    if (applyParametersCase_ == 12) {
      output.writeMessage(12, (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.UseBroadMatchKeywordParameters) applyParameters_);
    }
    if (applyParametersCase_ == 13) {
      output.writeMessage(13, (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParameters) applyParameters_);
    }
    if (applyParametersCase_ == 14) {
      output.writeMessage(14, (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParameters) applyParameters_);
    }
    if (applyParametersCase_ == 15) {
      output.writeMessage(15, (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParameters) applyParameters_);
    }
    if (applyParametersCase_ == 16) {
      output.writeMessage(16, (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParameters) applyParameters_);
    }
    if (applyParametersCase_ == 17) {
      output.writeMessage(17, (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutAssetParameters) applyParameters_);
    }
    if (applyParametersCase_ == 18) {
      output.writeMessage(18, (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallAssetParameters) applyParameters_);
    }
    if (applyParametersCase_ == 19) {
      output.writeMessage(19, (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkAssetParameters) applyParameters_);
    }
    if (applyParametersCase_ == 20) {
      output.writeMessage(20, (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaParameters) applyParameters_);
    }
    if (applyParametersCase_ == 21) {
      output.writeMessage(21, (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.LowerTargetRoasParameters) applyParameters_);
    }
    getUnknownFields().writeTo(output);
  }

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

    size = 0;
    if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(resourceName_)) {
      size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, resourceName_);
    }
    if (applyParametersCase_ == 2) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(2, (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CampaignBudgetParameters) applyParameters_);
    }
    if (applyParametersCase_ == 3) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(3, (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TextAdParameters) applyParameters_);
    }
    if (applyParametersCase_ == 4) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(4, (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.KeywordParameters) applyParameters_);
    }
    if (applyParametersCase_ == 5) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(5, (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetCpaOptInParameters) applyParameters_);
    }
    if (applyParametersCase_ == 6) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(6, (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutExtensionParameters) applyParameters_);
    }
    if (applyParametersCase_ == 7) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(7, (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallExtensionParameters) applyParameters_);
    }
    if (applyParametersCase_ == 8) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(8, (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkExtensionParameters) applyParameters_);
    }
    if (applyParametersCase_ == 9) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(9, (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters) applyParameters_);
    }
    if (applyParametersCase_ == 10) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(10, (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetRoasOptInParameters) applyParameters_);
    }
    if (applyParametersCase_ == 11) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(11, (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters) applyParameters_);
    }
    if (applyParametersCase_ == 12) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(12, (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.UseBroadMatchKeywordParameters) applyParameters_);
    }
    if (applyParametersCase_ == 13) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(13, (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParameters) applyParameters_);
    }
    if (applyParametersCase_ == 14) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(14, (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParameters) applyParameters_);
    }
    if (applyParametersCase_ == 15) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(15, (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParameters) applyParameters_);
    }
    if (applyParametersCase_ == 16) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(16, (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParameters) applyParameters_);
    }
    if (applyParametersCase_ == 17) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(17, (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutAssetParameters) applyParameters_);
    }
    if (applyParametersCase_ == 18) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(18, (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallAssetParameters) applyParameters_);
    }
    if (applyParametersCase_ == 19) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(19, (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkAssetParameters) applyParameters_);
    }
    if (applyParametersCase_ == 20) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(20, (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaParameters) applyParameters_);
    }
    if (applyParametersCase_ == 21) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(21, (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.LowerTargetRoasParameters) applyParameters_);
    }
    size += getUnknownFields().getSerializedSize();
    memoizedSize = size;
    return size;
  }

  @java.lang.Override
  public boolean equals(final java.lang.Object obj) {
    if (obj == this) {
     return true;
    }
    if (!(obj instanceof com.google.ads.googleads.v14.services.ApplyRecommendationOperation)) {
      return super.equals(obj);
    }
    com.google.ads.googleads.v14.services.ApplyRecommendationOperation other = (com.google.ads.googleads.v14.services.ApplyRecommendationOperation) obj;

    if (!getResourceName()
        .equals(other.getResourceName())) return false;
    if (!getApplyParametersCase().equals(other.getApplyParametersCase())) return false;
    switch (applyParametersCase_) {
      case 2:
        if (!getCampaignBudget()
            .equals(other.getCampaignBudget())) return false;
        break;
      case 3:
        if (!getTextAd()
            .equals(other.getTextAd())) return false;
        break;
      case 4:
        if (!getKeyword()
            .equals(other.getKeyword())) return false;
        break;
      case 5:
        if (!getTargetCpaOptIn()
            .equals(other.getTargetCpaOptIn())) return false;
        break;
      case 10:
        if (!getTargetRoasOptIn()
            .equals(other.getTargetRoasOptIn())) return false;
        break;
      case 6:
        if (!getCalloutExtension()
            .equals(other.getCalloutExtension())) return false;
        break;
      case 7:
        if (!getCallExtension()
            .equals(other.getCallExtension())) return false;
        break;
      case 8:
        if (!getSitelinkExtension()
            .equals(other.getSitelinkExtension())) return false;
        break;
      case 9:
        if (!getMoveUnusedBudget()
            .equals(other.getMoveUnusedBudget())) return false;
        break;
      case 11:
        if (!getResponsiveSearchAd()
            .equals(other.getResponsiveSearchAd())) return false;
        break;
      case 12:
        if (!getUseBroadMatchKeyword()
            .equals(other.getUseBroadMatchKeyword())) return false;
        break;
      case 13:
        if (!getResponsiveSearchAdAsset()
            .equals(other.getResponsiveSearchAdAsset())) return false;
        break;
      case 14:
        if (!getResponsiveSearchAdImproveAdStrength()
            .equals(other.getResponsiveSearchAdImproveAdStrength())) return false;
        break;
      case 15:
        if (!getRaiseTargetCpaBidTooLow()
            .equals(other.getRaiseTargetCpaBidTooLow())) return false;
        break;
      case 16:
        if (!getForecastingSetTargetRoas()
            .equals(other.getForecastingSetTargetRoas())) return false;
        break;
      case 17:
        if (!getCalloutAsset()
            .equals(other.getCalloutAsset())) return false;
        break;
      case 18:
        if (!getCallAsset()
            .equals(other.getCallAsset())) return false;
        break;
      case 19:
        if (!getSitelinkAsset()
            .equals(other.getSitelinkAsset())) return false;
        break;
      case 20:
        if (!getRaiseTargetCpa()
            .equals(other.getRaiseTargetCpa())) return false;
        break;
      case 21:
        if (!getLowerTargetRoas()
            .equals(other.getLowerTargetRoas())) return false;
        break;
      case 0:
      default:
    }
    if (!getUnknownFields().equals(other.getUnknownFields())) return false;
    return true;
  }

  @java.lang.Override
  public int hashCode() {
    if (memoizedHashCode != 0) {
      return memoizedHashCode;
    }
    int hash = 41;
    hash = (19 * hash) + getDescriptor().hashCode();
    hash = (37 * hash) + RESOURCE_NAME_FIELD_NUMBER;
    hash = (53 * hash) + getResourceName().hashCode();
    switch (applyParametersCase_) {
      case 2:
        hash = (37 * hash) + CAMPAIGN_BUDGET_FIELD_NUMBER;
        hash = (53 * hash) + getCampaignBudget().hashCode();
        break;
      case 3:
        hash = (37 * hash) + TEXT_AD_FIELD_NUMBER;
        hash = (53 * hash) + getTextAd().hashCode();
        break;
      case 4:
        hash = (37 * hash) + KEYWORD_FIELD_NUMBER;
        hash = (53 * hash) + getKeyword().hashCode();
        break;
      case 5:
        hash = (37 * hash) + TARGET_CPA_OPT_IN_FIELD_NUMBER;
        hash = (53 * hash) + getTargetCpaOptIn().hashCode();
        break;
      case 10:
        hash = (37 * hash) + TARGET_ROAS_OPT_IN_FIELD_NUMBER;
        hash = (53 * hash) + getTargetRoasOptIn().hashCode();
        break;
      case 6:
        hash = (37 * hash) + CALLOUT_EXTENSION_FIELD_NUMBER;
        hash = (53 * hash) + getCalloutExtension().hashCode();
        break;
      case 7:
        hash = (37 * hash) + CALL_EXTENSION_FIELD_NUMBER;
        hash = (53 * hash) + getCallExtension().hashCode();
        break;
      case 8:
        hash = (37 * hash) + SITELINK_EXTENSION_FIELD_NUMBER;
        hash = (53 * hash) + getSitelinkExtension().hashCode();
        break;
      case 9:
        hash = (37 * hash) + MOVE_UNUSED_BUDGET_FIELD_NUMBER;
        hash = (53 * hash) + getMoveUnusedBudget().hashCode();
        break;
      case 11:
        hash = (37 * hash) + RESPONSIVE_SEARCH_AD_FIELD_NUMBER;
        hash = (53 * hash) + getResponsiveSearchAd().hashCode();
        break;
      case 12:
        hash = (37 * hash) + USE_BROAD_MATCH_KEYWORD_FIELD_NUMBER;
        hash = (53 * hash) + getUseBroadMatchKeyword().hashCode();
        break;
      case 13:
        hash = (37 * hash) + RESPONSIVE_SEARCH_AD_ASSET_FIELD_NUMBER;
        hash = (53 * hash) + getResponsiveSearchAdAsset().hashCode();
        break;
      case 14:
        hash = (37 * hash) + RESPONSIVE_SEARCH_AD_IMPROVE_AD_STRENGTH_FIELD_NUMBER;
        hash = (53 * hash) + getResponsiveSearchAdImproveAdStrength().hashCode();
        break;
      case 15:
        hash = (37 * hash) + RAISE_TARGET_CPA_BID_TOO_LOW_FIELD_NUMBER;
        hash = (53 * hash) + getRaiseTargetCpaBidTooLow().hashCode();
        break;
      case 16:
        hash = (37 * hash) + FORECASTING_SET_TARGET_ROAS_FIELD_NUMBER;
        hash = (53 * hash) + getForecastingSetTargetRoas().hashCode();
        break;
      case 17:
        hash = (37 * hash) + CALLOUT_ASSET_FIELD_NUMBER;
        hash = (53 * hash) + getCalloutAsset().hashCode();
        break;
      case 18:
        hash = (37 * hash) + CALL_ASSET_FIELD_NUMBER;
        hash = (53 * hash) + getCallAsset().hashCode();
        break;
      case 19:
        hash = (37 * hash) + SITELINK_ASSET_FIELD_NUMBER;
        hash = (53 * hash) + getSitelinkAsset().hashCode();
        break;
      case 20:
        hash = (37 * hash) + RAISE_TARGET_CPA_FIELD_NUMBER;
        hash = (53 * hash) + getRaiseTargetCpa().hashCode();
        break;
      case 21:
        hash = (37 * hash) + LOWER_TARGET_ROAS_FIELD_NUMBER;
        hash = (53 * hash) + getLowerTargetRoas().hashCode();
        break;
      case 0:
      default:
    }
    hash = (29 * hash) + getUnknownFields().hashCode();
    memoizedHashCode = hash;
    return hash;
  }

  public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation parseFrom(
      java.nio.ByteBuffer data)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data);
  }
  public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation parseFrom(
      java.nio.ByteBuffer data,
      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data, extensionRegistry);
  }
  public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation parseFrom(
      com.google.protobuf.ByteString data)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data);
  }
  public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation parseFrom(
      com.google.protobuf.ByteString data,
      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data, extensionRegistry);
  }
  public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation parseFrom(byte[] data)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data);
  }
  public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation parseFrom(
      byte[] data,
      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data, extensionRegistry);
  }
  public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation parseFrom(java.io.InputStream input)
      throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3
        .parseWithIOException(PARSER, input);
  }
  public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation parseFrom(
      java.io.InputStream input,
      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3
        .parseWithIOException(PARSER, input, extensionRegistry);
  }

  public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation parseDelimitedFrom(java.io.InputStream input)
      throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3
        .parseDelimitedWithIOException(PARSER, input);
  }

  public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation parseDelimitedFrom(
      java.io.InputStream input,
      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3
        .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
  }
  public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation parseFrom(
      com.google.protobuf.CodedInputStream input)
      throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3
        .parseWithIOException(PARSER, input);
  }
  public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation parseFrom(
      com.google.protobuf.CodedInputStream input,
      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3
        .parseWithIOException(PARSER, input, extensionRegistry);
  }

  @java.lang.Override
  public Builder newBuilderForType() { return newBuilder(); }
  public static Builder newBuilder() {
    return DEFAULT_INSTANCE.toBuilder();
  }
  public static Builder newBuilder(com.google.ads.googleads.v14.services.ApplyRecommendationOperation prototype) {
    return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
  }
  @java.lang.Override
  public Builder toBuilder() {
    return this == DEFAULT_INSTANCE
        ? new Builder() : new Builder().mergeFrom(this);
  }

  @java.lang.Override
  protected Builder newBuilderForType(
      com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
    Builder builder = new Builder(parent);
    return builder;
  }
  /**
   * <pre>
   * Information about the operation to apply a recommendation and any parameters
   * to customize it.
   * </pre>
   *
   * Protobuf type {@code google.ads.googleads.v14.services.ApplyRecommendationOperation}
   */
  public static final class Builder extends
      com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
      // @@protoc_insertion_point(builder_implements:google.ads.googleads.v14.services.ApplyRecommendationOperation)
      com.google.ads.googleads.v14.services.ApplyRecommendationOperationOrBuilder {
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.ads.googleads.v14.services.ApplyRecommendationOperation.class, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.Builder.class);
    }

    // Construct using com.google.ads.googleads.v14.services.ApplyRecommendationOperation.newBuilder()
    private Builder() {

    }

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

    }
    @java.lang.Override
    public Builder clear() {
      super.clear();
      bitField0_ = 0;
      resourceName_ = "";
      if (campaignBudgetBuilder_ != null) {
        campaignBudgetBuilder_.clear();
      }
      if (textAdBuilder_ != null) {
        textAdBuilder_.clear();
      }
      if (keywordBuilder_ != null) {
        keywordBuilder_.clear();
      }
      if (targetCpaOptInBuilder_ != null) {
        targetCpaOptInBuilder_.clear();
      }
      if (targetRoasOptInBuilder_ != null) {
        targetRoasOptInBuilder_.clear();
      }
      if (calloutExtensionBuilder_ != null) {
        calloutExtensionBuilder_.clear();
      }
      if (callExtensionBuilder_ != null) {
        callExtensionBuilder_.clear();
      }
      if (sitelinkExtensionBuilder_ != null) {
        sitelinkExtensionBuilder_.clear();
      }
      if (moveUnusedBudgetBuilder_ != null) {
        moveUnusedBudgetBuilder_.clear();
      }
      if (responsiveSearchAdBuilder_ != null) {
        responsiveSearchAdBuilder_.clear();
      }
      if (useBroadMatchKeywordBuilder_ != null) {
        useBroadMatchKeywordBuilder_.clear();
      }
      if (responsiveSearchAdAssetBuilder_ != null) {
        responsiveSearchAdAssetBuilder_.clear();
      }
      if (responsiveSearchAdImproveAdStrengthBuilder_ != null) {
        responsiveSearchAdImproveAdStrengthBuilder_.clear();
      }
      if (raiseTargetCpaBidTooLowBuilder_ != null) {
        raiseTargetCpaBidTooLowBuilder_.clear();
      }
      if (forecastingSetTargetRoasBuilder_ != null) {
        forecastingSetTargetRoasBuilder_.clear();
      }
      if (calloutAssetBuilder_ != null) {
        calloutAssetBuilder_.clear();
      }
      if (callAssetBuilder_ != null) {
        callAssetBuilder_.clear();
      }
      if (sitelinkAssetBuilder_ != null) {
        sitelinkAssetBuilder_.clear();
      }
      if (raiseTargetCpaBuilder_ != null) {
        raiseTargetCpaBuilder_.clear();
      }
      if (lowerTargetRoasBuilder_ != null) {
        lowerTargetRoasBuilder_.clear();
      }
      applyParametersCase_ = 0;
      applyParameters_ = null;
      return this;
    }

    @java.lang.Override
    public com.google.protobuf.Descriptors.Descriptor
        getDescriptorForType() {
      return com.google.ads.googleads.v14.services.RecommendationServiceProto.internal_static_google_ads_googleads_v14_services_ApplyRecommendationOperation_descriptor;
    }

    @java.lang.Override
    public com.google.ads.googleads.v14.services.ApplyRecommendationOperation getDefaultInstanceForType() {
      return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.getDefaultInstance();
    }

    @java.lang.Override
    public com.google.ads.googleads.v14.services.ApplyRecommendationOperation build() {
      com.google.ads.googleads.v14.services.ApplyRecommendationOperation result = buildPartial();
      if (!result.isInitialized()) {
        throw newUninitializedMessageException(result);
      }
      return result;
    }

    @java.lang.Override
    public com.google.ads.googleads.v14.services.ApplyRecommendationOperation buildPartial() {
      com.google.ads.googleads.v14.services.ApplyRecommendationOperation result = new com.google.ads.googleads.v14.services.ApplyRecommendationOperation(this);
      if (bitField0_ != 0) { buildPartial0(result); }
      buildPartialOneofs(result);
      onBuilt();
      return result;
    }

    private void buildPartial0(com.google.ads.googleads.v14.services.ApplyRecommendationOperation result) {
      int from_bitField0_ = bitField0_;
      if (((from_bitField0_ & 0x00000001) != 0)) {
        result.resourceName_ = resourceName_;
      }
    }

    private void buildPartialOneofs(com.google.ads.googleads.v14.services.ApplyRecommendationOperation result) {
      result.applyParametersCase_ = applyParametersCase_;
      result.applyParameters_ = this.applyParameters_;
      if (applyParametersCase_ == 2 &&
          campaignBudgetBuilder_ != null) {
        result.applyParameters_ = campaignBudgetBuilder_.build();
      }
      if (applyParametersCase_ == 3 &&
          textAdBuilder_ != null) {
        result.applyParameters_ = textAdBuilder_.build();
      }
      if (applyParametersCase_ == 4 &&
          keywordBuilder_ != null) {
        result.applyParameters_ = keywordBuilder_.build();
      }
      if (applyParametersCase_ == 5 &&
          targetCpaOptInBuilder_ != null) {
        result.applyParameters_ = targetCpaOptInBuilder_.build();
      }
      if (applyParametersCase_ == 10 &&
          targetRoasOptInBuilder_ != null) {
        result.applyParameters_ = targetRoasOptInBuilder_.build();
      }
      if (applyParametersCase_ == 6 &&
          calloutExtensionBuilder_ != null) {
        result.applyParameters_ = calloutExtensionBuilder_.build();
      }
      if (applyParametersCase_ == 7 &&
          callExtensionBuilder_ != null) {
        result.applyParameters_ = callExtensionBuilder_.build();
      }
      if (applyParametersCase_ == 8 &&
          sitelinkExtensionBuilder_ != null) {
        result.applyParameters_ = sitelinkExtensionBuilder_.build();
      }
      if (applyParametersCase_ == 9 &&
          moveUnusedBudgetBuilder_ != null) {
        result.applyParameters_ = moveUnusedBudgetBuilder_.build();
      }
      if (applyParametersCase_ == 11 &&
          responsiveSearchAdBuilder_ != null) {
        result.applyParameters_ = responsiveSearchAdBuilder_.build();
      }
      if (applyParametersCase_ == 12 &&
          useBroadMatchKeywordBuilder_ != null) {
        result.applyParameters_ = useBroadMatchKeywordBuilder_.build();
      }
      if (applyParametersCase_ == 13 &&
          responsiveSearchAdAssetBuilder_ != null) {
        result.applyParameters_ = responsiveSearchAdAssetBuilder_.build();
      }
      if (applyParametersCase_ == 14 &&
          responsiveSearchAdImproveAdStrengthBuilder_ != null) {
        result.applyParameters_ = responsiveSearchAdImproveAdStrengthBuilder_.build();
      }
      if (applyParametersCase_ == 15 &&
          raiseTargetCpaBidTooLowBuilder_ != null) {
        result.applyParameters_ = raiseTargetCpaBidTooLowBuilder_.build();
      }
      if (applyParametersCase_ == 16 &&
          forecastingSetTargetRoasBuilder_ != null) {
        result.applyParameters_ = forecastingSetTargetRoasBuilder_.build();
      }
      if (applyParametersCase_ == 17 &&
          calloutAssetBuilder_ != null) {
        result.applyParameters_ = calloutAssetBuilder_.build();
      }
      if (applyParametersCase_ == 18 &&
          callAssetBuilder_ != null) {
        result.applyParameters_ = callAssetBuilder_.build();
      }
      if (applyParametersCase_ == 19 &&
          sitelinkAssetBuilder_ != null) {
        result.applyParameters_ = sitelinkAssetBuilder_.build();
      }
      if (applyParametersCase_ == 20 &&
          raiseTargetCpaBuilder_ != null) {
        result.applyParameters_ = raiseTargetCpaBuilder_.build();
      }
      if (applyParametersCase_ == 21 &&
          lowerTargetRoasBuilder_ != null) {
        result.applyParameters_ = lowerTargetRoasBuilder_.build();
      }
    }

    @java.lang.Override
    public Builder clone() {
      return super.clone();
    }
    @java.lang.Override
    public Builder setField(
        com.google.protobuf.Descriptors.FieldDescriptor field,
        java.lang.Object value) {
      return super.setField(field, value);
    }
    @java.lang.Override
    public Builder clearField(
        com.google.protobuf.Descriptors.FieldDescriptor field) {
      return super.clearField(field);
    }
    @java.lang.Override
    public Builder clearOneof(
        com.google.protobuf.Descriptors.OneofDescriptor oneof) {
      return super.clearOneof(oneof);
    }
    @java.lang.Override
    public Builder setRepeatedField(
        com.google.protobuf.Descriptors.FieldDescriptor field,
        int index, java.lang.Object value) {
      return super.setRepeatedField(field, index, value);
    }
    @java.lang.Override
    public Builder addRepeatedField(
        com.google.protobuf.Descriptors.FieldDescriptor field,
        java.lang.Object value) {
      return super.addRepeatedField(field, value);
    }
    @java.lang.Override
    public Builder mergeFrom(com.google.protobuf.Message other) {
      if (other instanceof com.google.ads.googleads.v14.services.ApplyRecommendationOperation) {
        return mergeFrom((com.google.ads.googleads.v14.services.ApplyRecommendationOperation)other);
      } else {
        super.mergeFrom(other);
        return this;
      }
    }

    public Builder mergeFrom(com.google.ads.googleads.v14.services.ApplyRecommendationOperation other) {
      if (other == com.google.ads.googleads.v14.services.ApplyRecommendationOperation.getDefaultInstance()) return this;
      if (!other.getResourceName().isEmpty()) {
        resourceName_ = other.resourceName_;
        bitField0_ |= 0x00000001;
        onChanged();
      }
      switch (other.getApplyParametersCase()) {
        case CAMPAIGN_BUDGET: {
          mergeCampaignBudget(other.getCampaignBudget());
          break;
        }
        case TEXT_AD: {
          mergeTextAd(other.getTextAd());
          break;
        }
        case KEYWORD: {
          mergeKeyword(other.getKeyword());
          break;
        }
        case TARGET_CPA_OPT_IN: {
          mergeTargetCpaOptIn(other.getTargetCpaOptIn());
          break;
        }
        case TARGET_ROAS_OPT_IN: {
          mergeTargetRoasOptIn(other.getTargetRoasOptIn());
          break;
        }
        case CALLOUT_EXTENSION: {
          mergeCalloutExtension(other.getCalloutExtension());
          break;
        }
        case CALL_EXTENSION: {
          mergeCallExtension(other.getCallExtension());
          break;
        }
        case SITELINK_EXTENSION: {
          mergeSitelinkExtension(other.getSitelinkExtension());
          break;
        }
        case MOVE_UNUSED_BUDGET: {
          mergeMoveUnusedBudget(other.getMoveUnusedBudget());
          break;
        }
        case RESPONSIVE_SEARCH_AD: {
          mergeResponsiveSearchAd(other.getResponsiveSearchAd());
          break;
        }
        case USE_BROAD_MATCH_KEYWORD: {
          mergeUseBroadMatchKeyword(other.getUseBroadMatchKeyword());
          break;
        }
        case RESPONSIVE_SEARCH_AD_ASSET: {
          mergeResponsiveSearchAdAsset(other.getResponsiveSearchAdAsset());
          break;
        }
        case RESPONSIVE_SEARCH_AD_IMPROVE_AD_STRENGTH: {
          mergeResponsiveSearchAdImproveAdStrength(other.getResponsiveSearchAdImproveAdStrength());
          break;
        }
        case RAISE_TARGET_CPA_BID_TOO_LOW: {
          mergeRaiseTargetCpaBidTooLow(other.getRaiseTargetCpaBidTooLow());
          break;
        }
        case FORECASTING_SET_TARGET_ROAS: {
          mergeForecastingSetTargetRoas(other.getForecastingSetTargetRoas());
          break;
        }
        case CALLOUT_ASSET: {
          mergeCalloutAsset(other.getCalloutAsset());
          break;
        }
        case CALL_ASSET: {
          mergeCallAsset(other.getCallAsset());
          break;
        }
        case SITELINK_ASSET: {
          mergeSitelinkAsset(other.getSitelinkAsset());
          break;
        }
        case RAISE_TARGET_CPA: {
          mergeRaiseTargetCpa(other.getRaiseTargetCpa());
          break;
        }
        case LOWER_TARGET_ROAS: {
          mergeLowerTargetRoas(other.getLowerTargetRoas());
          break;
        }
        case APPLYPARAMETERS_NOT_SET: {
          break;
        }
      }
      this.mergeUnknownFields(other.getUnknownFields());
      onChanged();
      return this;
    }

    @java.lang.Override
    public final boolean isInitialized() {
      return true;
    }

    @java.lang.Override
    public Builder mergeFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              resourceName_ = input.readStringRequireUtf8();
              bitField0_ |= 0x00000001;
              break;
            } // case 10
            case 18: {
              input.readMessage(
                  getCampaignBudgetFieldBuilder().getBuilder(),
                  extensionRegistry);
              applyParametersCase_ = 2;
              break;
            } // case 18
            case 26: {
              input.readMessage(
                  getTextAdFieldBuilder().getBuilder(),
                  extensionRegistry);
              applyParametersCase_ = 3;
              break;
            } // case 26
            case 34: {
              input.readMessage(
                  getKeywordFieldBuilder().getBuilder(),
                  extensionRegistry);
              applyParametersCase_ = 4;
              break;
            } // case 34
            case 42: {
              input.readMessage(
                  getTargetCpaOptInFieldBuilder().getBuilder(),
                  extensionRegistry);
              applyParametersCase_ = 5;
              break;
            } // case 42
            case 50: {
              input.readMessage(
                  getCalloutExtensionFieldBuilder().getBuilder(),
                  extensionRegistry);
              applyParametersCase_ = 6;
              break;
            } // case 50
            case 58: {
              input.readMessage(
                  getCallExtensionFieldBuilder().getBuilder(),
                  extensionRegistry);
              applyParametersCase_ = 7;
              break;
            } // case 58
            case 66: {
              input.readMessage(
                  getSitelinkExtensionFieldBuilder().getBuilder(),
                  extensionRegistry);
              applyParametersCase_ = 8;
              break;
            } // case 66
            case 74: {
              input.readMessage(
                  getMoveUnusedBudgetFieldBuilder().getBuilder(),
                  extensionRegistry);
              applyParametersCase_ = 9;
              break;
            } // case 74
            case 82: {
              input.readMessage(
                  getTargetRoasOptInFieldBuilder().getBuilder(),
                  extensionRegistry);
              applyParametersCase_ = 10;
              break;
            } // case 82
            case 90: {
              input.readMessage(
                  getResponsiveSearchAdFieldBuilder().getBuilder(),
                  extensionRegistry);
              applyParametersCase_ = 11;
              break;
            } // case 90
            case 98: {
              input.readMessage(
                  getUseBroadMatchKeywordFieldBuilder().getBuilder(),
                  extensionRegistry);
              applyParametersCase_ = 12;
              break;
            } // case 98
            case 106: {
              input.readMessage(
                  getResponsiveSearchAdAssetFieldBuilder().getBuilder(),
                  extensionRegistry);
              applyParametersCase_ = 13;
              break;
            } // case 106
            case 114: {
              input.readMessage(
                  getResponsiveSearchAdImproveAdStrengthFieldBuilder().getBuilder(),
                  extensionRegistry);
              applyParametersCase_ = 14;
              break;
            } // case 114
            case 122: {
              input.readMessage(
                  getRaiseTargetCpaBidTooLowFieldBuilder().getBuilder(),
                  extensionRegistry);
              applyParametersCase_ = 15;
              break;
            } // case 122
            case 130: {
              input.readMessage(
                  getForecastingSetTargetRoasFieldBuilder().getBuilder(),
                  extensionRegistry);
              applyParametersCase_ = 16;
              break;
            } // case 130
            case 138: {
              input.readMessage(
                  getCalloutAssetFieldBuilder().getBuilder(),
                  extensionRegistry);
              applyParametersCase_ = 17;
              break;
            } // case 138
            case 146: {
              input.readMessage(
                  getCallAssetFieldBuilder().getBuilder(),
                  extensionRegistry);
              applyParametersCase_ = 18;
              break;
            } // case 146
            case 154: {
              input.readMessage(
                  getSitelinkAssetFieldBuilder().getBuilder(),
                  extensionRegistry);
              applyParametersCase_ = 19;
              break;
            } // case 154
            case 162: {
              input.readMessage(
                  getRaiseTargetCpaFieldBuilder().getBuilder(),
                  extensionRegistry);
              applyParametersCase_ = 20;
              break;
            } // case 162
            case 170: {
              input.readMessage(
                  getLowerTargetRoasFieldBuilder().getBuilder(),
                  extensionRegistry);
              applyParametersCase_ = 21;
              break;
            } // case 170
            default: {
              if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                done = true; // was an endgroup tag
              }
              break;
            } // default:
          } // switch (tag)
        } // while (!done)
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.unwrapIOException();
      } finally {
        onChanged();
      } // finally
      return this;
    }
    private int applyParametersCase_ = 0;
    private java.lang.Object applyParameters_;
    public ApplyParametersCase
        getApplyParametersCase() {
      return ApplyParametersCase.forNumber(
          applyParametersCase_);
    }

    public Builder clearApplyParameters() {
      applyParametersCase_ = 0;
      applyParameters_ = null;
      onChanged();
      return this;
    }

    private int bitField0_;

    private java.lang.Object resourceName_ = "";
    /**
     * <pre>
     * The resource name of the recommendation to apply.
     * </pre>
     *
     * <code>string resource_name = 1 [(.google.api.resource_reference) = { ... }</code>
     * @return The resourceName.
     */
    public java.lang.String getResourceName() {
      java.lang.Object ref = resourceName_;
      if (!(ref instanceof java.lang.String)) {
        com.google.protobuf.ByteString bs =
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        resourceName_ = s;
        return s;
      } else {
        return (java.lang.String) ref;
      }
    }
    /**
     * <pre>
     * The resource name of the recommendation to apply.
     * </pre>
     *
     * <code>string resource_name = 1 [(.google.api.resource_reference) = { ... }</code>
     * @return The bytes for resourceName.
     */
    public com.google.protobuf.ByteString
        getResourceNameBytes() {
      java.lang.Object ref = resourceName_;
      if (ref instanceof String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        resourceName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }
    /**
     * <pre>
     * The resource name of the recommendation to apply.
     * </pre>
     *
     * <code>string resource_name = 1 [(.google.api.resource_reference) = { ... }</code>
     * @param value The resourceName to set.
     * @return This builder for chaining.
     */
    public Builder setResourceName(
        java.lang.String value) {
      if (value == null) { throw new NullPointerException(); }
      resourceName_ = value;
      bitField0_ |= 0x00000001;
      onChanged();
      return this;
    }
    /**
     * <pre>
     * The resource name of the recommendation to apply.
     * </pre>
     *
     * <code>string resource_name = 1 [(.google.api.resource_reference) = { ... }</code>
     * @return This builder for chaining.
     */
    public Builder clearResourceName() {
      resourceName_ = getDefaultInstance().getResourceName();
      bitField0_ = (bitField0_ & ~0x00000001);
      onChanged();
      return this;
    }
    /**
     * <pre>
     * The resource name of the recommendation to apply.
     * </pre>
     *
     * <code>string resource_name = 1 [(.google.api.resource_reference) = { ... }</code>
     * @param value The bytes for resourceName to set.
     * @return This builder for chaining.
     */
    public Builder setResourceNameBytes(
        com.google.protobuf.ByteString value) {
      if (value == null) { throw new NullPointerException(); }
      checkByteStringIsUtf8(value);
      resourceName_ = value;
      bitField0_ |= 0x00000001;
      onChanged();
      return this;
    }

    private com.google.protobuf.SingleFieldBuilderV3<
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CampaignBudgetParameters, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CampaignBudgetParameters.Builder, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CampaignBudgetParametersOrBuilder> campaignBudgetBuilder_;
    /**
     * <pre>
     * Optional parameters to use when applying a campaign budget
     * recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.CampaignBudgetParameters campaign_budget = 2;</code>
     * @return Whether the campaignBudget field is set.
     */
    @java.lang.Override
    public boolean hasCampaignBudget() {
      return applyParametersCase_ == 2;
    }
    /**
     * <pre>
     * Optional parameters to use when applying a campaign budget
     * recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.CampaignBudgetParameters campaign_budget = 2;</code>
     * @return The campaignBudget.
     */
    @java.lang.Override
    public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CampaignBudgetParameters getCampaignBudget() {
      if (campaignBudgetBuilder_ == null) {
        if (applyParametersCase_ == 2) {
          return (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CampaignBudgetParameters) applyParameters_;
        }
        return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CampaignBudgetParameters.getDefaultInstance();
      } else {
        if (applyParametersCase_ == 2) {
          return campaignBudgetBuilder_.getMessage();
        }
        return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CampaignBudgetParameters.getDefaultInstance();
      }
    }
    /**
     * <pre>
     * Optional parameters to use when applying a campaign budget
     * recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.CampaignBudgetParameters campaign_budget = 2;</code>
     */
    public Builder setCampaignBudget(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CampaignBudgetParameters value) {
      if (campaignBudgetBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        applyParameters_ = value;
        onChanged();
      } else {
        campaignBudgetBuilder_.setMessage(value);
      }
      applyParametersCase_ = 2;
      return this;
    }
    /**
     * <pre>
     * Optional parameters to use when applying a campaign budget
     * recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.CampaignBudgetParameters campaign_budget = 2;</code>
     */
    public Builder setCampaignBudget(
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CampaignBudgetParameters.Builder builderForValue) {
      if (campaignBudgetBuilder_ == null) {
        applyParameters_ = builderForValue.build();
        onChanged();
      } else {
        campaignBudgetBuilder_.setMessage(builderForValue.build());
      }
      applyParametersCase_ = 2;
      return this;
    }
    /**
     * <pre>
     * Optional parameters to use when applying a campaign budget
     * recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.CampaignBudgetParameters campaign_budget = 2;</code>
     */
    public Builder mergeCampaignBudget(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CampaignBudgetParameters value) {
      if (campaignBudgetBuilder_ == null) {
        if (applyParametersCase_ == 2 &&
            applyParameters_ != com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CampaignBudgetParameters.getDefaultInstance()) {
          applyParameters_ = com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CampaignBudgetParameters.newBuilder((com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CampaignBudgetParameters) applyParameters_)
              .mergeFrom(value).buildPartial();
        } else {
          applyParameters_ = value;
        }
        onChanged();
      } else {
        if (applyParametersCase_ == 2) {
          campaignBudgetBuilder_.mergeFrom(value);
        } else {
          campaignBudgetBuilder_.setMessage(value);
        }
      }
      applyParametersCase_ = 2;
      return this;
    }
    /**
     * <pre>
     * Optional parameters to use when applying a campaign budget
     * recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.CampaignBudgetParameters campaign_budget = 2;</code>
     */
    public Builder clearCampaignBudget() {
      if (campaignBudgetBuilder_ == null) {
        if (applyParametersCase_ == 2) {
          applyParametersCase_ = 0;
          applyParameters_ = null;
          onChanged();
        }
      } else {
        if (applyParametersCase_ == 2) {
          applyParametersCase_ = 0;
          applyParameters_ = null;
        }
        campaignBudgetBuilder_.clear();
      }
      return this;
    }
    /**
     * <pre>
     * Optional parameters to use when applying a campaign budget
     * recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.CampaignBudgetParameters campaign_budget = 2;</code>
     */
    public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CampaignBudgetParameters.Builder getCampaignBudgetBuilder() {
      return getCampaignBudgetFieldBuilder().getBuilder();
    }
    /**
     * <pre>
     * Optional parameters to use when applying a campaign budget
     * recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.CampaignBudgetParameters campaign_budget = 2;</code>
     */
    @java.lang.Override
    public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CampaignBudgetParametersOrBuilder getCampaignBudgetOrBuilder() {
      if ((applyParametersCase_ == 2) && (campaignBudgetBuilder_ != null)) {
        return campaignBudgetBuilder_.getMessageOrBuilder();
      } else {
        if (applyParametersCase_ == 2) {
          return (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CampaignBudgetParameters) applyParameters_;
        }
        return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CampaignBudgetParameters.getDefaultInstance();
      }
    }
    /**
     * <pre>
     * Optional parameters to use when applying a campaign budget
     * recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.CampaignBudgetParameters campaign_budget = 2;</code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CampaignBudgetParameters, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CampaignBudgetParameters.Builder, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CampaignBudgetParametersOrBuilder> 
        getCampaignBudgetFieldBuilder() {
      if (campaignBudgetBuilder_ == null) {
        if (!(applyParametersCase_ == 2)) {
          applyParameters_ = com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CampaignBudgetParameters.getDefaultInstance();
        }
        campaignBudgetBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
            com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CampaignBudgetParameters, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CampaignBudgetParameters.Builder, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CampaignBudgetParametersOrBuilder>(
                (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CampaignBudgetParameters) applyParameters_,
                getParentForChildren(),
                isClean());
        applyParameters_ = null;
      }
      applyParametersCase_ = 2;
      onChanged();
      return campaignBudgetBuilder_;
    }

    private com.google.protobuf.SingleFieldBuilderV3<
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TextAdParameters, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TextAdParameters.Builder, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TextAdParametersOrBuilder> textAdBuilder_;
    /**
     * <pre>
     * Optional parameters to use when applying a text ad recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.TextAdParameters text_ad = 3;</code>
     * @return Whether the textAd field is set.
     */
    @java.lang.Override
    public boolean hasTextAd() {
      return applyParametersCase_ == 3;
    }
    /**
     * <pre>
     * Optional parameters to use when applying a text ad recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.TextAdParameters text_ad = 3;</code>
     * @return The textAd.
     */
    @java.lang.Override
    public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TextAdParameters getTextAd() {
      if (textAdBuilder_ == null) {
        if (applyParametersCase_ == 3) {
          return (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TextAdParameters) applyParameters_;
        }
        return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TextAdParameters.getDefaultInstance();
      } else {
        if (applyParametersCase_ == 3) {
          return textAdBuilder_.getMessage();
        }
        return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TextAdParameters.getDefaultInstance();
      }
    }
    /**
     * <pre>
     * Optional parameters to use when applying a text ad recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.TextAdParameters text_ad = 3;</code>
     */
    public Builder setTextAd(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TextAdParameters value) {
      if (textAdBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        applyParameters_ = value;
        onChanged();
      } else {
        textAdBuilder_.setMessage(value);
      }
      applyParametersCase_ = 3;
      return this;
    }
    /**
     * <pre>
     * Optional parameters to use when applying a text ad recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.TextAdParameters text_ad = 3;</code>
     */
    public Builder setTextAd(
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TextAdParameters.Builder builderForValue) {
      if (textAdBuilder_ == null) {
        applyParameters_ = builderForValue.build();
        onChanged();
      } else {
        textAdBuilder_.setMessage(builderForValue.build());
      }
      applyParametersCase_ = 3;
      return this;
    }
    /**
     * <pre>
     * Optional parameters to use when applying a text ad recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.TextAdParameters text_ad = 3;</code>
     */
    public Builder mergeTextAd(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TextAdParameters value) {
      if (textAdBuilder_ == null) {
        if (applyParametersCase_ == 3 &&
            applyParameters_ != com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TextAdParameters.getDefaultInstance()) {
          applyParameters_ = com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TextAdParameters.newBuilder((com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TextAdParameters) applyParameters_)
              .mergeFrom(value).buildPartial();
        } else {
          applyParameters_ = value;
        }
        onChanged();
      } else {
        if (applyParametersCase_ == 3) {
          textAdBuilder_.mergeFrom(value);
        } else {
          textAdBuilder_.setMessage(value);
        }
      }
      applyParametersCase_ = 3;
      return this;
    }
    /**
     * <pre>
     * Optional parameters to use when applying a text ad recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.TextAdParameters text_ad = 3;</code>
     */
    public Builder clearTextAd() {
      if (textAdBuilder_ == null) {
        if (applyParametersCase_ == 3) {
          applyParametersCase_ = 0;
          applyParameters_ = null;
          onChanged();
        }
      } else {
        if (applyParametersCase_ == 3) {
          applyParametersCase_ = 0;
          applyParameters_ = null;
        }
        textAdBuilder_.clear();
      }
      return this;
    }
    /**
     * <pre>
     * Optional parameters to use when applying a text ad recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.TextAdParameters text_ad = 3;</code>
     */
    public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TextAdParameters.Builder getTextAdBuilder() {
      return getTextAdFieldBuilder().getBuilder();
    }
    /**
     * <pre>
     * Optional parameters to use when applying a text ad recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.TextAdParameters text_ad = 3;</code>
     */
    @java.lang.Override
    public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TextAdParametersOrBuilder getTextAdOrBuilder() {
      if ((applyParametersCase_ == 3) && (textAdBuilder_ != null)) {
        return textAdBuilder_.getMessageOrBuilder();
      } else {
        if (applyParametersCase_ == 3) {
          return (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TextAdParameters) applyParameters_;
        }
        return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TextAdParameters.getDefaultInstance();
      }
    }
    /**
     * <pre>
     * Optional parameters to use when applying a text ad recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.TextAdParameters text_ad = 3;</code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TextAdParameters, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TextAdParameters.Builder, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TextAdParametersOrBuilder> 
        getTextAdFieldBuilder() {
      if (textAdBuilder_ == null) {
        if (!(applyParametersCase_ == 3)) {
          applyParameters_ = com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TextAdParameters.getDefaultInstance();
        }
        textAdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
            com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TextAdParameters, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TextAdParameters.Builder, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TextAdParametersOrBuilder>(
                (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TextAdParameters) applyParameters_,
                getParentForChildren(),
                isClean());
        applyParameters_ = null;
      }
      applyParametersCase_ = 3;
      onChanged();
      return textAdBuilder_;
    }

    private com.google.protobuf.SingleFieldBuilderV3<
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.KeywordParameters, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.KeywordParameters.Builder, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.KeywordParametersOrBuilder> keywordBuilder_;
    /**
     * <pre>
     * Optional parameters to use when applying keyword recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.KeywordParameters keyword = 4;</code>
     * @return Whether the keyword field is set.
     */
    @java.lang.Override
    public boolean hasKeyword() {
      return applyParametersCase_ == 4;
    }
    /**
     * <pre>
     * Optional parameters to use when applying keyword recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.KeywordParameters keyword = 4;</code>
     * @return The keyword.
     */
    @java.lang.Override
    public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.KeywordParameters getKeyword() {
      if (keywordBuilder_ == null) {
        if (applyParametersCase_ == 4) {
          return (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.KeywordParameters) applyParameters_;
        }
        return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.KeywordParameters.getDefaultInstance();
      } else {
        if (applyParametersCase_ == 4) {
          return keywordBuilder_.getMessage();
        }
        return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.KeywordParameters.getDefaultInstance();
      }
    }
    /**
     * <pre>
     * Optional parameters to use when applying keyword recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.KeywordParameters keyword = 4;</code>
     */
    public Builder setKeyword(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.KeywordParameters value) {
      if (keywordBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        applyParameters_ = value;
        onChanged();
      } else {
        keywordBuilder_.setMessage(value);
      }
      applyParametersCase_ = 4;
      return this;
    }
    /**
     * <pre>
     * Optional parameters to use when applying keyword recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.KeywordParameters keyword = 4;</code>
     */
    public Builder setKeyword(
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.KeywordParameters.Builder builderForValue) {
      if (keywordBuilder_ == null) {
        applyParameters_ = builderForValue.build();
        onChanged();
      } else {
        keywordBuilder_.setMessage(builderForValue.build());
      }
      applyParametersCase_ = 4;
      return this;
    }
    /**
     * <pre>
     * Optional parameters to use when applying keyword recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.KeywordParameters keyword = 4;</code>
     */
    public Builder mergeKeyword(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.KeywordParameters value) {
      if (keywordBuilder_ == null) {
        if (applyParametersCase_ == 4 &&
            applyParameters_ != com.google.ads.googleads.v14.services.ApplyRecommendationOperation.KeywordParameters.getDefaultInstance()) {
          applyParameters_ = com.google.ads.googleads.v14.services.ApplyRecommendationOperation.KeywordParameters.newBuilder((com.google.ads.googleads.v14.services.ApplyRecommendationOperation.KeywordParameters) applyParameters_)
              .mergeFrom(value).buildPartial();
        } else {
          applyParameters_ = value;
        }
        onChanged();
      } else {
        if (applyParametersCase_ == 4) {
          keywordBuilder_.mergeFrom(value);
        } else {
          keywordBuilder_.setMessage(value);
        }
      }
      applyParametersCase_ = 4;
      return this;
    }
    /**
     * <pre>
     * Optional parameters to use when applying keyword recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.KeywordParameters keyword = 4;</code>
     */
    public Builder clearKeyword() {
      if (keywordBuilder_ == null) {
        if (applyParametersCase_ == 4) {
          applyParametersCase_ = 0;
          applyParameters_ = null;
          onChanged();
        }
      } else {
        if (applyParametersCase_ == 4) {
          applyParametersCase_ = 0;
          applyParameters_ = null;
        }
        keywordBuilder_.clear();
      }
      return this;
    }
    /**
     * <pre>
     * Optional parameters to use when applying keyword recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.KeywordParameters keyword = 4;</code>
     */
    public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.KeywordParameters.Builder getKeywordBuilder() {
      return getKeywordFieldBuilder().getBuilder();
    }
    /**
     * <pre>
     * Optional parameters to use when applying keyword recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.KeywordParameters keyword = 4;</code>
     */
    @java.lang.Override
    public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.KeywordParametersOrBuilder getKeywordOrBuilder() {
      if ((applyParametersCase_ == 4) && (keywordBuilder_ != null)) {
        return keywordBuilder_.getMessageOrBuilder();
      } else {
        if (applyParametersCase_ == 4) {
          return (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.KeywordParameters) applyParameters_;
        }
        return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.KeywordParameters.getDefaultInstance();
      }
    }
    /**
     * <pre>
     * Optional parameters to use when applying keyword recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.KeywordParameters keyword = 4;</code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.KeywordParameters, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.KeywordParameters.Builder, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.KeywordParametersOrBuilder> 
        getKeywordFieldBuilder() {
      if (keywordBuilder_ == null) {
        if (!(applyParametersCase_ == 4)) {
          applyParameters_ = com.google.ads.googleads.v14.services.ApplyRecommendationOperation.KeywordParameters.getDefaultInstance();
        }
        keywordBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
            com.google.ads.googleads.v14.services.ApplyRecommendationOperation.KeywordParameters, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.KeywordParameters.Builder, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.KeywordParametersOrBuilder>(
                (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.KeywordParameters) applyParameters_,
                getParentForChildren(),
                isClean());
        applyParameters_ = null;
      }
      applyParametersCase_ = 4;
      onChanged();
      return keywordBuilder_;
    }

    private com.google.protobuf.SingleFieldBuilderV3<
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetCpaOptInParameters, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetCpaOptInParameters.Builder, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetCpaOptInParametersOrBuilder> targetCpaOptInBuilder_;
    /**
     * <pre>
     * Optional parameters to use when applying target CPA opt-in
     * recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetCpaOptInParameters target_cpa_opt_in = 5;</code>
     * @return Whether the targetCpaOptIn field is set.
     */
    @java.lang.Override
    public boolean hasTargetCpaOptIn() {
      return applyParametersCase_ == 5;
    }
    /**
     * <pre>
     * Optional parameters to use when applying target CPA opt-in
     * recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetCpaOptInParameters target_cpa_opt_in = 5;</code>
     * @return The targetCpaOptIn.
     */
    @java.lang.Override
    public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetCpaOptInParameters getTargetCpaOptIn() {
      if (targetCpaOptInBuilder_ == null) {
        if (applyParametersCase_ == 5) {
          return (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetCpaOptInParameters) applyParameters_;
        }
        return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetCpaOptInParameters.getDefaultInstance();
      } else {
        if (applyParametersCase_ == 5) {
          return targetCpaOptInBuilder_.getMessage();
        }
        return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetCpaOptInParameters.getDefaultInstance();
      }
    }
    /**
     * <pre>
     * Optional parameters to use when applying target CPA opt-in
     * recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetCpaOptInParameters target_cpa_opt_in = 5;</code>
     */
    public Builder setTargetCpaOptIn(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetCpaOptInParameters value) {
      if (targetCpaOptInBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        applyParameters_ = value;
        onChanged();
      } else {
        targetCpaOptInBuilder_.setMessage(value);
      }
      applyParametersCase_ = 5;
      return this;
    }
    /**
     * <pre>
     * Optional parameters to use when applying target CPA opt-in
     * recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetCpaOptInParameters target_cpa_opt_in = 5;</code>
     */
    public Builder setTargetCpaOptIn(
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetCpaOptInParameters.Builder builderForValue) {
      if (targetCpaOptInBuilder_ == null) {
        applyParameters_ = builderForValue.build();
        onChanged();
      } else {
        targetCpaOptInBuilder_.setMessage(builderForValue.build());
      }
      applyParametersCase_ = 5;
      return this;
    }
    /**
     * <pre>
     * Optional parameters to use when applying target CPA opt-in
     * recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetCpaOptInParameters target_cpa_opt_in = 5;</code>
     */
    public Builder mergeTargetCpaOptIn(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetCpaOptInParameters value) {
      if (targetCpaOptInBuilder_ == null) {
        if (applyParametersCase_ == 5 &&
            applyParameters_ != com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetCpaOptInParameters.getDefaultInstance()) {
          applyParameters_ = com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetCpaOptInParameters.newBuilder((com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetCpaOptInParameters) applyParameters_)
              .mergeFrom(value).buildPartial();
        } else {
          applyParameters_ = value;
        }
        onChanged();
      } else {
        if (applyParametersCase_ == 5) {
          targetCpaOptInBuilder_.mergeFrom(value);
        } else {
          targetCpaOptInBuilder_.setMessage(value);
        }
      }
      applyParametersCase_ = 5;
      return this;
    }
    /**
     * <pre>
     * Optional parameters to use when applying target CPA opt-in
     * recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetCpaOptInParameters target_cpa_opt_in = 5;</code>
     */
    public Builder clearTargetCpaOptIn() {
      if (targetCpaOptInBuilder_ == null) {
        if (applyParametersCase_ == 5) {
          applyParametersCase_ = 0;
          applyParameters_ = null;
          onChanged();
        }
      } else {
        if (applyParametersCase_ == 5) {
          applyParametersCase_ = 0;
          applyParameters_ = null;
        }
        targetCpaOptInBuilder_.clear();
      }
      return this;
    }
    /**
     * <pre>
     * Optional parameters to use when applying target CPA opt-in
     * recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetCpaOptInParameters target_cpa_opt_in = 5;</code>
     */
    public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetCpaOptInParameters.Builder getTargetCpaOptInBuilder() {
      return getTargetCpaOptInFieldBuilder().getBuilder();
    }
    /**
     * <pre>
     * Optional parameters to use when applying target CPA opt-in
     * recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetCpaOptInParameters target_cpa_opt_in = 5;</code>
     */
    @java.lang.Override
    public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetCpaOptInParametersOrBuilder getTargetCpaOptInOrBuilder() {
      if ((applyParametersCase_ == 5) && (targetCpaOptInBuilder_ != null)) {
        return targetCpaOptInBuilder_.getMessageOrBuilder();
      } else {
        if (applyParametersCase_ == 5) {
          return (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetCpaOptInParameters) applyParameters_;
        }
        return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetCpaOptInParameters.getDefaultInstance();
      }
    }
    /**
     * <pre>
     * Optional parameters to use when applying target CPA opt-in
     * recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetCpaOptInParameters target_cpa_opt_in = 5;</code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetCpaOptInParameters, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetCpaOptInParameters.Builder, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetCpaOptInParametersOrBuilder> 
        getTargetCpaOptInFieldBuilder() {
      if (targetCpaOptInBuilder_ == null) {
        if (!(applyParametersCase_ == 5)) {
          applyParameters_ = com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetCpaOptInParameters.getDefaultInstance();
        }
        targetCpaOptInBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
            com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetCpaOptInParameters, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetCpaOptInParameters.Builder, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetCpaOptInParametersOrBuilder>(
                (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetCpaOptInParameters) applyParameters_,
                getParentForChildren(),
                isClean());
        applyParameters_ = null;
      }
      applyParametersCase_ = 5;
      onChanged();
      return targetCpaOptInBuilder_;
    }

    private com.google.protobuf.SingleFieldBuilderV3<
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetRoasOptInParameters, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetRoasOptInParameters.Builder, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetRoasOptInParametersOrBuilder> targetRoasOptInBuilder_;
    /**
     * <pre>
     * Optional parameters to use when applying target ROAS opt-in
     * recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetRoasOptInParameters target_roas_opt_in = 10;</code>
     * @return Whether the targetRoasOptIn field is set.
     */
    @java.lang.Override
    public boolean hasTargetRoasOptIn() {
      return applyParametersCase_ == 10;
    }
    /**
     * <pre>
     * Optional parameters to use when applying target ROAS opt-in
     * recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetRoasOptInParameters target_roas_opt_in = 10;</code>
     * @return The targetRoasOptIn.
     */
    @java.lang.Override
    public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetRoasOptInParameters getTargetRoasOptIn() {
      if (targetRoasOptInBuilder_ == null) {
        if (applyParametersCase_ == 10) {
          return (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetRoasOptInParameters) applyParameters_;
        }
        return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetRoasOptInParameters.getDefaultInstance();
      } else {
        if (applyParametersCase_ == 10) {
          return targetRoasOptInBuilder_.getMessage();
        }
        return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetRoasOptInParameters.getDefaultInstance();
      }
    }
    /**
     * <pre>
     * Optional parameters to use when applying target ROAS opt-in
     * recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetRoasOptInParameters target_roas_opt_in = 10;</code>
     */
    public Builder setTargetRoasOptIn(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetRoasOptInParameters value) {
      if (targetRoasOptInBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        applyParameters_ = value;
        onChanged();
      } else {
        targetRoasOptInBuilder_.setMessage(value);
      }
      applyParametersCase_ = 10;
      return this;
    }
    /**
     * <pre>
     * Optional parameters to use when applying target ROAS opt-in
     * recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetRoasOptInParameters target_roas_opt_in = 10;</code>
     */
    public Builder setTargetRoasOptIn(
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetRoasOptInParameters.Builder builderForValue) {
      if (targetRoasOptInBuilder_ == null) {
        applyParameters_ = builderForValue.build();
        onChanged();
      } else {
        targetRoasOptInBuilder_.setMessage(builderForValue.build());
      }
      applyParametersCase_ = 10;
      return this;
    }
    /**
     * <pre>
     * Optional parameters to use when applying target ROAS opt-in
     * recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetRoasOptInParameters target_roas_opt_in = 10;</code>
     */
    public Builder mergeTargetRoasOptIn(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetRoasOptInParameters value) {
      if (targetRoasOptInBuilder_ == null) {
        if (applyParametersCase_ == 10 &&
            applyParameters_ != com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetRoasOptInParameters.getDefaultInstance()) {
          applyParameters_ = com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetRoasOptInParameters.newBuilder((com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetRoasOptInParameters) applyParameters_)
              .mergeFrom(value).buildPartial();
        } else {
          applyParameters_ = value;
        }
        onChanged();
      } else {
        if (applyParametersCase_ == 10) {
          targetRoasOptInBuilder_.mergeFrom(value);
        } else {
          targetRoasOptInBuilder_.setMessage(value);
        }
      }
      applyParametersCase_ = 10;
      return this;
    }
    /**
     * <pre>
     * Optional parameters to use when applying target ROAS opt-in
     * recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetRoasOptInParameters target_roas_opt_in = 10;</code>
     */
    public Builder clearTargetRoasOptIn() {
      if (targetRoasOptInBuilder_ == null) {
        if (applyParametersCase_ == 10) {
          applyParametersCase_ = 0;
          applyParameters_ = null;
          onChanged();
        }
      } else {
        if (applyParametersCase_ == 10) {
          applyParametersCase_ = 0;
          applyParameters_ = null;
        }
        targetRoasOptInBuilder_.clear();
      }
      return this;
    }
    /**
     * <pre>
     * Optional parameters to use when applying target ROAS opt-in
     * recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetRoasOptInParameters target_roas_opt_in = 10;</code>
     */
    public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetRoasOptInParameters.Builder getTargetRoasOptInBuilder() {
      return getTargetRoasOptInFieldBuilder().getBuilder();
    }
    /**
     * <pre>
     * Optional parameters to use when applying target ROAS opt-in
     * recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetRoasOptInParameters target_roas_opt_in = 10;</code>
     */
    @java.lang.Override
    public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetRoasOptInParametersOrBuilder getTargetRoasOptInOrBuilder() {
      if ((applyParametersCase_ == 10) && (targetRoasOptInBuilder_ != null)) {
        return targetRoasOptInBuilder_.getMessageOrBuilder();
      } else {
        if (applyParametersCase_ == 10) {
          return (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetRoasOptInParameters) applyParameters_;
        }
        return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetRoasOptInParameters.getDefaultInstance();
      }
    }
    /**
     * <pre>
     * Optional parameters to use when applying target ROAS opt-in
     * recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetRoasOptInParameters target_roas_opt_in = 10;</code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetRoasOptInParameters, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetRoasOptInParameters.Builder, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetRoasOptInParametersOrBuilder> 
        getTargetRoasOptInFieldBuilder() {
      if (targetRoasOptInBuilder_ == null) {
        if (!(applyParametersCase_ == 10)) {
          applyParameters_ = com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetRoasOptInParameters.getDefaultInstance();
        }
        targetRoasOptInBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
            com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetRoasOptInParameters, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetRoasOptInParameters.Builder, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetRoasOptInParametersOrBuilder>(
                (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.TargetRoasOptInParameters) applyParameters_,
                getParentForChildren(),
                isClean());
        applyParameters_ = null;
      }
      applyParametersCase_ = 10;
      onChanged();
      return targetRoasOptInBuilder_;
    }

    private com.google.protobuf.SingleFieldBuilderV3<
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutExtensionParameters, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutExtensionParameters.Builder, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutExtensionParametersOrBuilder> calloutExtensionBuilder_;
    /**
     * <pre>
     * Parameters to use when applying callout extension recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutExtensionParameters callout_extension = 6;</code>
     * @return Whether the calloutExtension field is set.
     */
    @java.lang.Override
    public boolean hasCalloutExtension() {
      return applyParametersCase_ == 6;
    }
    /**
     * <pre>
     * Parameters to use when applying callout extension recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutExtensionParameters callout_extension = 6;</code>
     * @return The calloutExtension.
     */
    @java.lang.Override
    public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutExtensionParameters getCalloutExtension() {
      if (calloutExtensionBuilder_ == null) {
        if (applyParametersCase_ == 6) {
          return (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutExtensionParameters) applyParameters_;
        }
        return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutExtensionParameters.getDefaultInstance();
      } else {
        if (applyParametersCase_ == 6) {
          return calloutExtensionBuilder_.getMessage();
        }
        return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutExtensionParameters.getDefaultInstance();
      }
    }
    /**
     * <pre>
     * Parameters to use when applying callout extension recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutExtensionParameters callout_extension = 6;</code>
     */
    public Builder setCalloutExtension(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutExtensionParameters value) {
      if (calloutExtensionBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        applyParameters_ = value;
        onChanged();
      } else {
        calloutExtensionBuilder_.setMessage(value);
      }
      applyParametersCase_ = 6;
      return this;
    }
    /**
     * <pre>
     * Parameters to use when applying callout extension recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutExtensionParameters callout_extension = 6;</code>
     */
    public Builder setCalloutExtension(
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutExtensionParameters.Builder builderForValue) {
      if (calloutExtensionBuilder_ == null) {
        applyParameters_ = builderForValue.build();
        onChanged();
      } else {
        calloutExtensionBuilder_.setMessage(builderForValue.build());
      }
      applyParametersCase_ = 6;
      return this;
    }
    /**
     * <pre>
     * Parameters to use when applying callout extension recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutExtensionParameters callout_extension = 6;</code>
     */
    public Builder mergeCalloutExtension(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutExtensionParameters value) {
      if (calloutExtensionBuilder_ == null) {
        if (applyParametersCase_ == 6 &&
            applyParameters_ != com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutExtensionParameters.getDefaultInstance()) {
          applyParameters_ = com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutExtensionParameters.newBuilder((com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutExtensionParameters) applyParameters_)
              .mergeFrom(value).buildPartial();
        } else {
          applyParameters_ = value;
        }
        onChanged();
      } else {
        if (applyParametersCase_ == 6) {
          calloutExtensionBuilder_.mergeFrom(value);
        } else {
          calloutExtensionBuilder_.setMessage(value);
        }
      }
      applyParametersCase_ = 6;
      return this;
    }
    /**
     * <pre>
     * Parameters to use when applying callout extension recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutExtensionParameters callout_extension = 6;</code>
     */
    public Builder clearCalloutExtension() {
      if (calloutExtensionBuilder_ == null) {
        if (applyParametersCase_ == 6) {
          applyParametersCase_ = 0;
          applyParameters_ = null;
          onChanged();
        }
      } else {
        if (applyParametersCase_ == 6) {
          applyParametersCase_ = 0;
          applyParameters_ = null;
        }
        calloutExtensionBuilder_.clear();
      }
      return this;
    }
    /**
     * <pre>
     * Parameters to use when applying callout extension recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutExtensionParameters callout_extension = 6;</code>
     */
    public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutExtensionParameters.Builder getCalloutExtensionBuilder() {
      return getCalloutExtensionFieldBuilder().getBuilder();
    }
    /**
     * <pre>
     * Parameters to use when applying callout extension recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutExtensionParameters callout_extension = 6;</code>
     */
    @java.lang.Override
    public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutExtensionParametersOrBuilder getCalloutExtensionOrBuilder() {
      if ((applyParametersCase_ == 6) && (calloutExtensionBuilder_ != null)) {
        return calloutExtensionBuilder_.getMessageOrBuilder();
      } else {
        if (applyParametersCase_ == 6) {
          return (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutExtensionParameters) applyParameters_;
        }
        return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutExtensionParameters.getDefaultInstance();
      }
    }
    /**
     * <pre>
     * Parameters to use when applying callout extension recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutExtensionParameters callout_extension = 6;</code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutExtensionParameters, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutExtensionParameters.Builder, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutExtensionParametersOrBuilder> 
        getCalloutExtensionFieldBuilder() {
      if (calloutExtensionBuilder_ == null) {
        if (!(applyParametersCase_ == 6)) {
          applyParameters_ = com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutExtensionParameters.getDefaultInstance();
        }
        calloutExtensionBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
            com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutExtensionParameters, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutExtensionParameters.Builder, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutExtensionParametersOrBuilder>(
                (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutExtensionParameters) applyParameters_,
                getParentForChildren(),
                isClean());
        applyParameters_ = null;
      }
      applyParametersCase_ = 6;
      onChanged();
      return calloutExtensionBuilder_;
    }

    private com.google.protobuf.SingleFieldBuilderV3<
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallExtensionParameters, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallExtensionParameters.Builder, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallExtensionParametersOrBuilder> callExtensionBuilder_;
    /**
     * <pre>
     * Parameters to use when applying call extension recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallExtensionParameters call_extension = 7;</code>
     * @return Whether the callExtension field is set.
     */
    @java.lang.Override
    public boolean hasCallExtension() {
      return applyParametersCase_ == 7;
    }
    /**
     * <pre>
     * Parameters to use when applying call extension recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallExtensionParameters call_extension = 7;</code>
     * @return The callExtension.
     */
    @java.lang.Override
    public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallExtensionParameters getCallExtension() {
      if (callExtensionBuilder_ == null) {
        if (applyParametersCase_ == 7) {
          return (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallExtensionParameters) applyParameters_;
        }
        return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallExtensionParameters.getDefaultInstance();
      } else {
        if (applyParametersCase_ == 7) {
          return callExtensionBuilder_.getMessage();
        }
        return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallExtensionParameters.getDefaultInstance();
      }
    }
    /**
     * <pre>
     * Parameters to use when applying call extension recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallExtensionParameters call_extension = 7;</code>
     */
    public Builder setCallExtension(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallExtensionParameters value) {
      if (callExtensionBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        applyParameters_ = value;
        onChanged();
      } else {
        callExtensionBuilder_.setMessage(value);
      }
      applyParametersCase_ = 7;
      return this;
    }
    /**
     * <pre>
     * Parameters to use when applying call extension recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallExtensionParameters call_extension = 7;</code>
     */
    public Builder setCallExtension(
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallExtensionParameters.Builder builderForValue) {
      if (callExtensionBuilder_ == null) {
        applyParameters_ = builderForValue.build();
        onChanged();
      } else {
        callExtensionBuilder_.setMessage(builderForValue.build());
      }
      applyParametersCase_ = 7;
      return this;
    }
    /**
     * <pre>
     * Parameters to use when applying call extension recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallExtensionParameters call_extension = 7;</code>
     */
    public Builder mergeCallExtension(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallExtensionParameters value) {
      if (callExtensionBuilder_ == null) {
        if (applyParametersCase_ == 7 &&
            applyParameters_ != com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallExtensionParameters.getDefaultInstance()) {
          applyParameters_ = com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallExtensionParameters.newBuilder((com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallExtensionParameters) applyParameters_)
              .mergeFrom(value).buildPartial();
        } else {
          applyParameters_ = value;
        }
        onChanged();
      } else {
        if (applyParametersCase_ == 7) {
          callExtensionBuilder_.mergeFrom(value);
        } else {
          callExtensionBuilder_.setMessage(value);
        }
      }
      applyParametersCase_ = 7;
      return this;
    }
    /**
     * <pre>
     * Parameters to use when applying call extension recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallExtensionParameters call_extension = 7;</code>
     */
    public Builder clearCallExtension() {
      if (callExtensionBuilder_ == null) {
        if (applyParametersCase_ == 7) {
          applyParametersCase_ = 0;
          applyParameters_ = null;
          onChanged();
        }
      } else {
        if (applyParametersCase_ == 7) {
          applyParametersCase_ = 0;
          applyParameters_ = null;
        }
        callExtensionBuilder_.clear();
      }
      return this;
    }
    /**
     * <pre>
     * Parameters to use when applying call extension recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallExtensionParameters call_extension = 7;</code>
     */
    public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallExtensionParameters.Builder getCallExtensionBuilder() {
      return getCallExtensionFieldBuilder().getBuilder();
    }
    /**
     * <pre>
     * Parameters to use when applying call extension recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallExtensionParameters call_extension = 7;</code>
     */
    @java.lang.Override
    public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallExtensionParametersOrBuilder getCallExtensionOrBuilder() {
      if ((applyParametersCase_ == 7) && (callExtensionBuilder_ != null)) {
        return callExtensionBuilder_.getMessageOrBuilder();
      } else {
        if (applyParametersCase_ == 7) {
          return (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallExtensionParameters) applyParameters_;
        }
        return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallExtensionParameters.getDefaultInstance();
      }
    }
    /**
     * <pre>
     * Parameters to use when applying call extension recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallExtensionParameters call_extension = 7;</code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallExtensionParameters, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallExtensionParameters.Builder, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallExtensionParametersOrBuilder> 
        getCallExtensionFieldBuilder() {
      if (callExtensionBuilder_ == null) {
        if (!(applyParametersCase_ == 7)) {
          applyParameters_ = com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallExtensionParameters.getDefaultInstance();
        }
        callExtensionBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
            com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallExtensionParameters, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallExtensionParameters.Builder, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallExtensionParametersOrBuilder>(
                (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallExtensionParameters) applyParameters_,
                getParentForChildren(),
                isClean());
        applyParameters_ = null;
      }
      applyParametersCase_ = 7;
      onChanged();
      return callExtensionBuilder_;
    }

    private com.google.protobuf.SingleFieldBuilderV3<
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkExtensionParameters, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkExtensionParameters.Builder, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkExtensionParametersOrBuilder> sitelinkExtensionBuilder_;
    /**
     * <pre>
     * Parameters to use when applying sitelink recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkExtensionParameters sitelink_extension = 8;</code>
     * @return Whether the sitelinkExtension field is set.
     */
    @java.lang.Override
    public boolean hasSitelinkExtension() {
      return applyParametersCase_ == 8;
    }
    /**
     * <pre>
     * Parameters to use when applying sitelink recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkExtensionParameters sitelink_extension = 8;</code>
     * @return The sitelinkExtension.
     */
    @java.lang.Override
    public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkExtensionParameters getSitelinkExtension() {
      if (sitelinkExtensionBuilder_ == null) {
        if (applyParametersCase_ == 8) {
          return (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkExtensionParameters) applyParameters_;
        }
        return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkExtensionParameters.getDefaultInstance();
      } else {
        if (applyParametersCase_ == 8) {
          return sitelinkExtensionBuilder_.getMessage();
        }
        return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkExtensionParameters.getDefaultInstance();
      }
    }
    /**
     * <pre>
     * Parameters to use when applying sitelink recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkExtensionParameters sitelink_extension = 8;</code>
     */
    public Builder setSitelinkExtension(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkExtensionParameters value) {
      if (sitelinkExtensionBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        applyParameters_ = value;
        onChanged();
      } else {
        sitelinkExtensionBuilder_.setMessage(value);
      }
      applyParametersCase_ = 8;
      return this;
    }
    /**
     * <pre>
     * Parameters to use when applying sitelink recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkExtensionParameters sitelink_extension = 8;</code>
     */
    public Builder setSitelinkExtension(
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkExtensionParameters.Builder builderForValue) {
      if (sitelinkExtensionBuilder_ == null) {
        applyParameters_ = builderForValue.build();
        onChanged();
      } else {
        sitelinkExtensionBuilder_.setMessage(builderForValue.build());
      }
      applyParametersCase_ = 8;
      return this;
    }
    /**
     * <pre>
     * Parameters to use when applying sitelink recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkExtensionParameters sitelink_extension = 8;</code>
     */
    public Builder mergeSitelinkExtension(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkExtensionParameters value) {
      if (sitelinkExtensionBuilder_ == null) {
        if (applyParametersCase_ == 8 &&
            applyParameters_ != com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkExtensionParameters.getDefaultInstance()) {
          applyParameters_ = com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkExtensionParameters.newBuilder((com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkExtensionParameters) applyParameters_)
              .mergeFrom(value).buildPartial();
        } else {
          applyParameters_ = value;
        }
        onChanged();
      } else {
        if (applyParametersCase_ == 8) {
          sitelinkExtensionBuilder_.mergeFrom(value);
        } else {
          sitelinkExtensionBuilder_.setMessage(value);
        }
      }
      applyParametersCase_ = 8;
      return this;
    }
    /**
     * <pre>
     * Parameters to use when applying sitelink recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkExtensionParameters sitelink_extension = 8;</code>
     */
    public Builder clearSitelinkExtension() {
      if (sitelinkExtensionBuilder_ == null) {
        if (applyParametersCase_ == 8) {
          applyParametersCase_ = 0;
          applyParameters_ = null;
          onChanged();
        }
      } else {
        if (applyParametersCase_ == 8) {
          applyParametersCase_ = 0;
          applyParameters_ = null;
        }
        sitelinkExtensionBuilder_.clear();
      }
      return this;
    }
    /**
     * <pre>
     * Parameters to use when applying sitelink recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkExtensionParameters sitelink_extension = 8;</code>
     */
    public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkExtensionParameters.Builder getSitelinkExtensionBuilder() {
      return getSitelinkExtensionFieldBuilder().getBuilder();
    }
    /**
     * <pre>
     * Parameters to use when applying sitelink recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkExtensionParameters sitelink_extension = 8;</code>
     */
    @java.lang.Override
    public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkExtensionParametersOrBuilder getSitelinkExtensionOrBuilder() {
      if ((applyParametersCase_ == 8) && (sitelinkExtensionBuilder_ != null)) {
        return sitelinkExtensionBuilder_.getMessageOrBuilder();
      } else {
        if (applyParametersCase_ == 8) {
          return (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkExtensionParameters) applyParameters_;
        }
        return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkExtensionParameters.getDefaultInstance();
      }
    }
    /**
     * <pre>
     * Parameters to use when applying sitelink recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkExtensionParameters sitelink_extension = 8;</code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkExtensionParameters, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkExtensionParameters.Builder, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkExtensionParametersOrBuilder> 
        getSitelinkExtensionFieldBuilder() {
      if (sitelinkExtensionBuilder_ == null) {
        if (!(applyParametersCase_ == 8)) {
          applyParameters_ = com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkExtensionParameters.getDefaultInstance();
        }
        sitelinkExtensionBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
            com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkExtensionParameters, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkExtensionParameters.Builder, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkExtensionParametersOrBuilder>(
                (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkExtensionParameters) applyParameters_,
                getParentForChildren(),
                isClean());
        applyParameters_ = null;
      }
      applyParametersCase_ = 8;
      onChanged();
      return sitelinkExtensionBuilder_;
    }

    private com.google.protobuf.SingleFieldBuilderV3<
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters.Builder, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.MoveUnusedBudgetParametersOrBuilder> moveUnusedBudgetBuilder_;
    /**
     * <pre>
     * Parameters to use when applying move unused budget recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters move_unused_budget = 9;</code>
     * @return Whether the moveUnusedBudget field is set.
     */
    @java.lang.Override
    public boolean hasMoveUnusedBudget() {
      return applyParametersCase_ == 9;
    }
    /**
     * <pre>
     * Parameters to use when applying move unused budget recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters move_unused_budget = 9;</code>
     * @return The moveUnusedBudget.
     */
    @java.lang.Override
    public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters getMoveUnusedBudget() {
      if (moveUnusedBudgetBuilder_ == null) {
        if (applyParametersCase_ == 9) {
          return (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters) applyParameters_;
        }
        return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters.getDefaultInstance();
      } else {
        if (applyParametersCase_ == 9) {
          return moveUnusedBudgetBuilder_.getMessage();
        }
        return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters.getDefaultInstance();
      }
    }
    /**
     * <pre>
     * Parameters to use when applying move unused budget recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters move_unused_budget = 9;</code>
     */
    public Builder setMoveUnusedBudget(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters value) {
      if (moveUnusedBudgetBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        applyParameters_ = value;
        onChanged();
      } else {
        moveUnusedBudgetBuilder_.setMessage(value);
      }
      applyParametersCase_ = 9;
      return this;
    }
    /**
     * <pre>
     * Parameters to use when applying move unused budget recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters move_unused_budget = 9;</code>
     */
    public Builder setMoveUnusedBudget(
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters.Builder builderForValue) {
      if (moveUnusedBudgetBuilder_ == null) {
        applyParameters_ = builderForValue.build();
        onChanged();
      } else {
        moveUnusedBudgetBuilder_.setMessage(builderForValue.build());
      }
      applyParametersCase_ = 9;
      return this;
    }
    /**
     * <pre>
     * Parameters to use when applying move unused budget recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters move_unused_budget = 9;</code>
     */
    public Builder mergeMoveUnusedBudget(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters value) {
      if (moveUnusedBudgetBuilder_ == null) {
        if (applyParametersCase_ == 9 &&
            applyParameters_ != com.google.ads.googleads.v14.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters.getDefaultInstance()) {
          applyParameters_ = com.google.ads.googleads.v14.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters.newBuilder((com.google.ads.googleads.v14.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters) applyParameters_)
              .mergeFrom(value).buildPartial();
        } else {
          applyParameters_ = value;
        }
        onChanged();
      } else {
        if (applyParametersCase_ == 9) {
          moveUnusedBudgetBuilder_.mergeFrom(value);
        } else {
          moveUnusedBudgetBuilder_.setMessage(value);
        }
      }
      applyParametersCase_ = 9;
      return this;
    }
    /**
     * <pre>
     * Parameters to use when applying move unused budget recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters move_unused_budget = 9;</code>
     */
    public Builder clearMoveUnusedBudget() {
      if (moveUnusedBudgetBuilder_ == null) {
        if (applyParametersCase_ == 9) {
          applyParametersCase_ = 0;
          applyParameters_ = null;
          onChanged();
        }
      } else {
        if (applyParametersCase_ == 9) {
          applyParametersCase_ = 0;
          applyParameters_ = null;
        }
        moveUnusedBudgetBuilder_.clear();
      }
      return this;
    }
    /**
     * <pre>
     * Parameters to use when applying move unused budget recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters move_unused_budget = 9;</code>
     */
    public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters.Builder getMoveUnusedBudgetBuilder() {
      return getMoveUnusedBudgetFieldBuilder().getBuilder();
    }
    /**
     * <pre>
     * Parameters to use when applying move unused budget recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters move_unused_budget = 9;</code>
     */
    @java.lang.Override
    public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.MoveUnusedBudgetParametersOrBuilder getMoveUnusedBudgetOrBuilder() {
      if ((applyParametersCase_ == 9) && (moveUnusedBudgetBuilder_ != null)) {
        return moveUnusedBudgetBuilder_.getMessageOrBuilder();
      } else {
        if (applyParametersCase_ == 9) {
          return (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters) applyParameters_;
        }
        return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters.getDefaultInstance();
      }
    }
    /**
     * <pre>
     * Parameters to use when applying move unused budget recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters move_unused_budget = 9;</code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters.Builder, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.MoveUnusedBudgetParametersOrBuilder> 
        getMoveUnusedBudgetFieldBuilder() {
      if (moveUnusedBudgetBuilder_ == null) {
        if (!(applyParametersCase_ == 9)) {
          applyParameters_ = com.google.ads.googleads.v14.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters.getDefaultInstance();
        }
        moveUnusedBudgetBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
            com.google.ads.googleads.v14.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters.Builder, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.MoveUnusedBudgetParametersOrBuilder>(
                (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.MoveUnusedBudgetParameters) applyParameters_,
                getParentForChildren(),
                isClean());
        applyParameters_ = null;
      }
      applyParametersCase_ = 9;
      onChanged();
      return moveUnusedBudgetBuilder_;
    }

    private com.google.protobuf.SingleFieldBuilderV3<
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters.Builder, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdParametersOrBuilder> responsiveSearchAdBuilder_;
    /**
     * <pre>
     * Parameters to use when applying a responsive search ad recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters responsive_search_ad = 11;</code>
     * @return Whether the responsiveSearchAd field is set.
     */
    @java.lang.Override
    public boolean hasResponsiveSearchAd() {
      return applyParametersCase_ == 11;
    }
    /**
     * <pre>
     * Parameters to use when applying a responsive search ad recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters responsive_search_ad = 11;</code>
     * @return The responsiveSearchAd.
     */
    @java.lang.Override
    public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters getResponsiveSearchAd() {
      if (responsiveSearchAdBuilder_ == null) {
        if (applyParametersCase_ == 11) {
          return (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters) applyParameters_;
        }
        return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters.getDefaultInstance();
      } else {
        if (applyParametersCase_ == 11) {
          return responsiveSearchAdBuilder_.getMessage();
        }
        return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters.getDefaultInstance();
      }
    }
    /**
     * <pre>
     * Parameters to use when applying a responsive search ad recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters responsive_search_ad = 11;</code>
     */
    public Builder setResponsiveSearchAd(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters value) {
      if (responsiveSearchAdBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        applyParameters_ = value;
        onChanged();
      } else {
        responsiveSearchAdBuilder_.setMessage(value);
      }
      applyParametersCase_ = 11;
      return this;
    }
    /**
     * <pre>
     * Parameters to use when applying a responsive search ad recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters responsive_search_ad = 11;</code>
     */
    public Builder setResponsiveSearchAd(
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters.Builder builderForValue) {
      if (responsiveSearchAdBuilder_ == null) {
        applyParameters_ = builderForValue.build();
        onChanged();
      } else {
        responsiveSearchAdBuilder_.setMessage(builderForValue.build());
      }
      applyParametersCase_ = 11;
      return this;
    }
    /**
     * <pre>
     * Parameters to use when applying a responsive search ad recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters responsive_search_ad = 11;</code>
     */
    public Builder mergeResponsiveSearchAd(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters value) {
      if (responsiveSearchAdBuilder_ == null) {
        if (applyParametersCase_ == 11 &&
            applyParameters_ != com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters.getDefaultInstance()) {
          applyParameters_ = com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters.newBuilder((com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters) applyParameters_)
              .mergeFrom(value).buildPartial();
        } else {
          applyParameters_ = value;
        }
        onChanged();
      } else {
        if (applyParametersCase_ == 11) {
          responsiveSearchAdBuilder_.mergeFrom(value);
        } else {
          responsiveSearchAdBuilder_.setMessage(value);
        }
      }
      applyParametersCase_ = 11;
      return this;
    }
    /**
     * <pre>
     * Parameters to use when applying a responsive search ad recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters responsive_search_ad = 11;</code>
     */
    public Builder clearResponsiveSearchAd() {
      if (responsiveSearchAdBuilder_ == null) {
        if (applyParametersCase_ == 11) {
          applyParametersCase_ = 0;
          applyParameters_ = null;
          onChanged();
        }
      } else {
        if (applyParametersCase_ == 11) {
          applyParametersCase_ = 0;
          applyParameters_ = null;
        }
        responsiveSearchAdBuilder_.clear();
      }
      return this;
    }
    /**
     * <pre>
     * Parameters to use when applying a responsive search ad recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters responsive_search_ad = 11;</code>
     */
    public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters.Builder getResponsiveSearchAdBuilder() {
      return getResponsiveSearchAdFieldBuilder().getBuilder();
    }
    /**
     * <pre>
     * Parameters to use when applying a responsive search ad recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters responsive_search_ad = 11;</code>
     */
    @java.lang.Override
    public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdParametersOrBuilder getResponsiveSearchAdOrBuilder() {
      if ((applyParametersCase_ == 11) && (responsiveSearchAdBuilder_ != null)) {
        return responsiveSearchAdBuilder_.getMessageOrBuilder();
      } else {
        if (applyParametersCase_ == 11) {
          return (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters) applyParameters_;
        }
        return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters.getDefaultInstance();
      }
    }
    /**
     * <pre>
     * Parameters to use when applying a responsive search ad recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters responsive_search_ad = 11;</code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters.Builder, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdParametersOrBuilder> 
        getResponsiveSearchAdFieldBuilder() {
      if (responsiveSearchAdBuilder_ == null) {
        if (!(applyParametersCase_ == 11)) {
          applyParameters_ = com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters.getDefaultInstance();
        }
        responsiveSearchAdBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
            com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters.Builder, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdParametersOrBuilder>(
                (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdParameters) applyParameters_,
                getParentForChildren(),
                isClean());
        applyParameters_ = null;
      }
      applyParametersCase_ = 11;
      onChanged();
      return responsiveSearchAdBuilder_;
    }

    private com.google.protobuf.SingleFieldBuilderV3<
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.UseBroadMatchKeywordParameters, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.UseBroadMatchKeywordParameters.Builder, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.UseBroadMatchKeywordParametersOrBuilder> useBroadMatchKeywordBuilder_;
    /**
     * <pre>
     * Parameters to use when applying a use broad match keyword recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.UseBroadMatchKeywordParameters use_broad_match_keyword = 12;</code>
     * @return Whether the useBroadMatchKeyword field is set.
     */
    @java.lang.Override
    public boolean hasUseBroadMatchKeyword() {
      return applyParametersCase_ == 12;
    }
    /**
     * <pre>
     * Parameters to use when applying a use broad match keyword recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.UseBroadMatchKeywordParameters use_broad_match_keyword = 12;</code>
     * @return The useBroadMatchKeyword.
     */
    @java.lang.Override
    public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.UseBroadMatchKeywordParameters getUseBroadMatchKeyword() {
      if (useBroadMatchKeywordBuilder_ == null) {
        if (applyParametersCase_ == 12) {
          return (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.UseBroadMatchKeywordParameters) applyParameters_;
        }
        return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.UseBroadMatchKeywordParameters.getDefaultInstance();
      } else {
        if (applyParametersCase_ == 12) {
          return useBroadMatchKeywordBuilder_.getMessage();
        }
        return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.UseBroadMatchKeywordParameters.getDefaultInstance();
      }
    }
    /**
     * <pre>
     * Parameters to use when applying a use broad match keyword recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.UseBroadMatchKeywordParameters use_broad_match_keyword = 12;</code>
     */
    public Builder setUseBroadMatchKeyword(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.UseBroadMatchKeywordParameters value) {
      if (useBroadMatchKeywordBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        applyParameters_ = value;
        onChanged();
      } else {
        useBroadMatchKeywordBuilder_.setMessage(value);
      }
      applyParametersCase_ = 12;
      return this;
    }
    /**
     * <pre>
     * Parameters to use when applying a use broad match keyword recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.UseBroadMatchKeywordParameters use_broad_match_keyword = 12;</code>
     */
    public Builder setUseBroadMatchKeyword(
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.UseBroadMatchKeywordParameters.Builder builderForValue) {
      if (useBroadMatchKeywordBuilder_ == null) {
        applyParameters_ = builderForValue.build();
        onChanged();
      } else {
        useBroadMatchKeywordBuilder_.setMessage(builderForValue.build());
      }
      applyParametersCase_ = 12;
      return this;
    }
    /**
     * <pre>
     * Parameters to use when applying a use broad match keyword recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.UseBroadMatchKeywordParameters use_broad_match_keyword = 12;</code>
     */
    public Builder mergeUseBroadMatchKeyword(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.UseBroadMatchKeywordParameters value) {
      if (useBroadMatchKeywordBuilder_ == null) {
        if (applyParametersCase_ == 12 &&
            applyParameters_ != com.google.ads.googleads.v14.services.ApplyRecommendationOperation.UseBroadMatchKeywordParameters.getDefaultInstance()) {
          applyParameters_ = com.google.ads.googleads.v14.services.ApplyRecommendationOperation.UseBroadMatchKeywordParameters.newBuilder((com.google.ads.googleads.v14.services.ApplyRecommendationOperation.UseBroadMatchKeywordParameters) applyParameters_)
              .mergeFrom(value).buildPartial();
        } else {
          applyParameters_ = value;
        }
        onChanged();
      } else {
        if (applyParametersCase_ == 12) {
          useBroadMatchKeywordBuilder_.mergeFrom(value);
        } else {
          useBroadMatchKeywordBuilder_.setMessage(value);
        }
      }
      applyParametersCase_ = 12;
      return this;
    }
    /**
     * <pre>
     * Parameters to use when applying a use broad match keyword recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.UseBroadMatchKeywordParameters use_broad_match_keyword = 12;</code>
     */
    public Builder clearUseBroadMatchKeyword() {
      if (useBroadMatchKeywordBuilder_ == null) {
        if (applyParametersCase_ == 12) {
          applyParametersCase_ = 0;
          applyParameters_ = null;
          onChanged();
        }
      } else {
        if (applyParametersCase_ == 12) {
          applyParametersCase_ = 0;
          applyParameters_ = null;
        }
        useBroadMatchKeywordBuilder_.clear();
      }
      return this;
    }
    /**
     * <pre>
     * Parameters to use when applying a use broad match keyword recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.UseBroadMatchKeywordParameters use_broad_match_keyword = 12;</code>
     */
    public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.UseBroadMatchKeywordParameters.Builder getUseBroadMatchKeywordBuilder() {
      return getUseBroadMatchKeywordFieldBuilder().getBuilder();
    }
    /**
     * <pre>
     * Parameters to use when applying a use broad match keyword recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.UseBroadMatchKeywordParameters use_broad_match_keyword = 12;</code>
     */
    @java.lang.Override
    public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.UseBroadMatchKeywordParametersOrBuilder getUseBroadMatchKeywordOrBuilder() {
      if ((applyParametersCase_ == 12) && (useBroadMatchKeywordBuilder_ != null)) {
        return useBroadMatchKeywordBuilder_.getMessageOrBuilder();
      } else {
        if (applyParametersCase_ == 12) {
          return (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.UseBroadMatchKeywordParameters) applyParameters_;
        }
        return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.UseBroadMatchKeywordParameters.getDefaultInstance();
      }
    }
    /**
     * <pre>
     * Parameters to use when applying a use broad match keyword recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.UseBroadMatchKeywordParameters use_broad_match_keyword = 12;</code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.UseBroadMatchKeywordParameters, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.UseBroadMatchKeywordParameters.Builder, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.UseBroadMatchKeywordParametersOrBuilder> 
        getUseBroadMatchKeywordFieldBuilder() {
      if (useBroadMatchKeywordBuilder_ == null) {
        if (!(applyParametersCase_ == 12)) {
          applyParameters_ = com.google.ads.googleads.v14.services.ApplyRecommendationOperation.UseBroadMatchKeywordParameters.getDefaultInstance();
        }
        useBroadMatchKeywordBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
            com.google.ads.googleads.v14.services.ApplyRecommendationOperation.UseBroadMatchKeywordParameters, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.UseBroadMatchKeywordParameters.Builder, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.UseBroadMatchKeywordParametersOrBuilder>(
                (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.UseBroadMatchKeywordParameters) applyParameters_,
                getParentForChildren(),
                isClean());
        applyParameters_ = null;
      }
      applyParametersCase_ = 12;
      onChanged();
      return useBroadMatchKeywordBuilder_;
    }

    private com.google.protobuf.SingleFieldBuilderV3<
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParameters, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParameters.Builder, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParametersOrBuilder> responsiveSearchAdAssetBuilder_;
    /**
     * <pre>
     * Parameters to use when applying a responsive search ad asset
     * recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParameters responsive_search_ad_asset = 13;</code>
     * @return Whether the responsiveSearchAdAsset field is set.
     */
    @java.lang.Override
    public boolean hasResponsiveSearchAdAsset() {
      return applyParametersCase_ == 13;
    }
    /**
     * <pre>
     * Parameters to use when applying a responsive search ad asset
     * recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParameters responsive_search_ad_asset = 13;</code>
     * @return The responsiveSearchAdAsset.
     */
    @java.lang.Override
    public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParameters getResponsiveSearchAdAsset() {
      if (responsiveSearchAdAssetBuilder_ == null) {
        if (applyParametersCase_ == 13) {
          return (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParameters) applyParameters_;
        }
        return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParameters.getDefaultInstance();
      } else {
        if (applyParametersCase_ == 13) {
          return responsiveSearchAdAssetBuilder_.getMessage();
        }
        return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParameters.getDefaultInstance();
      }
    }
    /**
     * <pre>
     * Parameters to use when applying a responsive search ad asset
     * recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParameters responsive_search_ad_asset = 13;</code>
     */
    public Builder setResponsiveSearchAdAsset(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParameters value) {
      if (responsiveSearchAdAssetBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        applyParameters_ = value;
        onChanged();
      } else {
        responsiveSearchAdAssetBuilder_.setMessage(value);
      }
      applyParametersCase_ = 13;
      return this;
    }
    /**
     * <pre>
     * Parameters to use when applying a responsive search ad asset
     * recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParameters responsive_search_ad_asset = 13;</code>
     */
    public Builder setResponsiveSearchAdAsset(
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParameters.Builder builderForValue) {
      if (responsiveSearchAdAssetBuilder_ == null) {
        applyParameters_ = builderForValue.build();
        onChanged();
      } else {
        responsiveSearchAdAssetBuilder_.setMessage(builderForValue.build());
      }
      applyParametersCase_ = 13;
      return this;
    }
    /**
     * <pre>
     * Parameters to use when applying a responsive search ad asset
     * recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParameters responsive_search_ad_asset = 13;</code>
     */
    public Builder mergeResponsiveSearchAdAsset(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParameters value) {
      if (responsiveSearchAdAssetBuilder_ == null) {
        if (applyParametersCase_ == 13 &&
            applyParameters_ != com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParameters.getDefaultInstance()) {
          applyParameters_ = com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParameters.newBuilder((com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParameters) applyParameters_)
              .mergeFrom(value).buildPartial();
        } else {
          applyParameters_ = value;
        }
        onChanged();
      } else {
        if (applyParametersCase_ == 13) {
          responsiveSearchAdAssetBuilder_.mergeFrom(value);
        } else {
          responsiveSearchAdAssetBuilder_.setMessage(value);
        }
      }
      applyParametersCase_ = 13;
      return this;
    }
    /**
     * <pre>
     * Parameters to use when applying a responsive search ad asset
     * recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParameters responsive_search_ad_asset = 13;</code>
     */
    public Builder clearResponsiveSearchAdAsset() {
      if (responsiveSearchAdAssetBuilder_ == null) {
        if (applyParametersCase_ == 13) {
          applyParametersCase_ = 0;
          applyParameters_ = null;
          onChanged();
        }
      } else {
        if (applyParametersCase_ == 13) {
          applyParametersCase_ = 0;
          applyParameters_ = null;
        }
        responsiveSearchAdAssetBuilder_.clear();
      }
      return this;
    }
    /**
     * <pre>
     * Parameters to use when applying a responsive search ad asset
     * recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParameters responsive_search_ad_asset = 13;</code>
     */
    public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParameters.Builder getResponsiveSearchAdAssetBuilder() {
      return getResponsiveSearchAdAssetFieldBuilder().getBuilder();
    }
    /**
     * <pre>
     * Parameters to use when applying a responsive search ad asset
     * recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParameters responsive_search_ad_asset = 13;</code>
     */
    @java.lang.Override
    public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParametersOrBuilder getResponsiveSearchAdAssetOrBuilder() {
      if ((applyParametersCase_ == 13) && (responsiveSearchAdAssetBuilder_ != null)) {
        return responsiveSearchAdAssetBuilder_.getMessageOrBuilder();
      } else {
        if (applyParametersCase_ == 13) {
          return (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParameters) applyParameters_;
        }
        return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParameters.getDefaultInstance();
      }
    }
    /**
     * <pre>
     * Parameters to use when applying a responsive search ad asset
     * recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParameters responsive_search_ad_asset = 13;</code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParameters, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParameters.Builder, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParametersOrBuilder> 
        getResponsiveSearchAdAssetFieldBuilder() {
      if (responsiveSearchAdAssetBuilder_ == null) {
        if (!(applyParametersCase_ == 13)) {
          applyParameters_ = com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParameters.getDefaultInstance();
        }
        responsiveSearchAdAssetBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
            com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParameters, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParameters.Builder, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParametersOrBuilder>(
                (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdAssetParameters) applyParameters_,
                getParentForChildren(),
                isClean());
        applyParameters_ = null;
      }
      applyParametersCase_ = 13;
      onChanged();
      return responsiveSearchAdAssetBuilder_;
    }

    private com.google.protobuf.SingleFieldBuilderV3<
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParameters, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParameters.Builder, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParametersOrBuilder> responsiveSearchAdImproveAdStrengthBuilder_;
    /**
     * <pre>
     * Parameters to use when applying a responsive search ad improve ad
     * strength recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParameters responsive_search_ad_improve_ad_strength = 14;</code>
     * @return Whether the responsiveSearchAdImproveAdStrength field is set.
     */
    @java.lang.Override
    public boolean hasResponsiveSearchAdImproveAdStrength() {
      return applyParametersCase_ == 14;
    }
    /**
     * <pre>
     * Parameters to use when applying a responsive search ad improve ad
     * strength recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParameters responsive_search_ad_improve_ad_strength = 14;</code>
     * @return The responsiveSearchAdImproveAdStrength.
     */
    @java.lang.Override
    public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParameters getResponsiveSearchAdImproveAdStrength() {
      if (responsiveSearchAdImproveAdStrengthBuilder_ == null) {
        if (applyParametersCase_ == 14) {
          return (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParameters) applyParameters_;
        }
        return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParameters.getDefaultInstance();
      } else {
        if (applyParametersCase_ == 14) {
          return responsiveSearchAdImproveAdStrengthBuilder_.getMessage();
        }
        return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParameters.getDefaultInstance();
      }
    }
    /**
     * <pre>
     * Parameters to use when applying a responsive search ad improve ad
     * strength recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParameters responsive_search_ad_improve_ad_strength = 14;</code>
     */
    public Builder setResponsiveSearchAdImproveAdStrength(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParameters value) {
      if (responsiveSearchAdImproveAdStrengthBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        applyParameters_ = value;
        onChanged();
      } else {
        responsiveSearchAdImproveAdStrengthBuilder_.setMessage(value);
      }
      applyParametersCase_ = 14;
      return this;
    }
    /**
     * <pre>
     * Parameters to use when applying a responsive search ad improve ad
     * strength recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParameters responsive_search_ad_improve_ad_strength = 14;</code>
     */
    public Builder setResponsiveSearchAdImproveAdStrength(
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParameters.Builder builderForValue) {
      if (responsiveSearchAdImproveAdStrengthBuilder_ == null) {
        applyParameters_ = builderForValue.build();
        onChanged();
      } else {
        responsiveSearchAdImproveAdStrengthBuilder_.setMessage(builderForValue.build());
      }
      applyParametersCase_ = 14;
      return this;
    }
    /**
     * <pre>
     * Parameters to use when applying a responsive search ad improve ad
     * strength recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParameters responsive_search_ad_improve_ad_strength = 14;</code>
     */
    public Builder mergeResponsiveSearchAdImproveAdStrength(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParameters value) {
      if (responsiveSearchAdImproveAdStrengthBuilder_ == null) {
        if (applyParametersCase_ == 14 &&
            applyParameters_ != com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParameters.getDefaultInstance()) {
          applyParameters_ = com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParameters.newBuilder((com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParameters) applyParameters_)
              .mergeFrom(value).buildPartial();
        } else {
          applyParameters_ = value;
        }
        onChanged();
      } else {
        if (applyParametersCase_ == 14) {
          responsiveSearchAdImproveAdStrengthBuilder_.mergeFrom(value);
        } else {
          responsiveSearchAdImproveAdStrengthBuilder_.setMessage(value);
        }
      }
      applyParametersCase_ = 14;
      return this;
    }
    /**
     * <pre>
     * Parameters to use when applying a responsive search ad improve ad
     * strength recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParameters responsive_search_ad_improve_ad_strength = 14;</code>
     */
    public Builder clearResponsiveSearchAdImproveAdStrength() {
      if (responsiveSearchAdImproveAdStrengthBuilder_ == null) {
        if (applyParametersCase_ == 14) {
          applyParametersCase_ = 0;
          applyParameters_ = null;
          onChanged();
        }
      } else {
        if (applyParametersCase_ == 14) {
          applyParametersCase_ = 0;
          applyParameters_ = null;
        }
        responsiveSearchAdImproveAdStrengthBuilder_.clear();
      }
      return this;
    }
    /**
     * <pre>
     * Parameters to use when applying a responsive search ad improve ad
     * strength recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParameters responsive_search_ad_improve_ad_strength = 14;</code>
     */
    public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParameters.Builder getResponsiveSearchAdImproveAdStrengthBuilder() {
      return getResponsiveSearchAdImproveAdStrengthFieldBuilder().getBuilder();
    }
    /**
     * <pre>
     * Parameters to use when applying a responsive search ad improve ad
     * strength recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParameters responsive_search_ad_improve_ad_strength = 14;</code>
     */
    @java.lang.Override
    public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParametersOrBuilder getResponsiveSearchAdImproveAdStrengthOrBuilder() {
      if ((applyParametersCase_ == 14) && (responsiveSearchAdImproveAdStrengthBuilder_ != null)) {
        return responsiveSearchAdImproveAdStrengthBuilder_.getMessageOrBuilder();
      } else {
        if (applyParametersCase_ == 14) {
          return (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParameters) applyParameters_;
        }
        return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParameters.getDefaultInstance();
      }
    }
    /**
     * <pre>
     * Parameters to use when applying a responsive search ad improve ad
     * strength recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParameters responsive_search_ad_improve_ad_strength = 14;</code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParameters, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParameters.Builder, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParametersOrBuilder> 
        getResponsiveSearchAdImproveAdStrengthFieldBuilder() {
      if (responsiveSearchAdImproveAdStrengthBuilder_ == null) {
        if (!(applyParametersCase_ == 14)) {
          applyParameters_ = com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParameters.getDefaultInstance();
        }
        responsiveSearchAdImproveAdStrengthBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
            com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParameters, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParameters.Builder, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParametersOrBuilder>(
                (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ResponsiveSearchAdImproveAdStrengthParameters) applyParameters_,
                getParentForChildren(),
                isClean());
        applyParameters_ = null;
      }
      applyParametersCase_ = 14;
      onChanged();
      return responsiveSearchAdImproveAdStrengthBuilder_;
    }

    private com.google.protobuf.SingleFieldBuilderV3<
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParameters, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParameters.Builder, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParametersOrBuilder> raiseTargetCpaBidTooLowBuilder_;
    /**
     * <pre>
     * Parameters to use when applying a raise target CPA bid too low
     * recommendation. The apply is asynchronous and can take minutes depending
     * on the number of ad groups there is in the related campaign.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParameters raise_target_cpa_bid_too_low = 15;</code>
     * @return Whether the raiseTargetCpaBidTooLow field is set.
     */
    @java.lang.Override
    public boolean hasRaiseTargetCpaBidTooLow() {
      return applyParametersCase_ == 15;
    }
    /**
     * <pre>
     * Parameters to use when applying a raise target CPA bid too low
     * recommendation. The apply is asynchronous and can take minutes depending
     * on the number of ad groups there is in the related campaign.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParameters raise_target_cpa_bid_too_low = 15;</code>
     * @return The raiseTargetCpaBidTooLow.
     */
    @java.lang.Override
    public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParameters getRaiseTargetCpaBidTooLow() {
      if (raiseTargetCpaBidTooLowBuilder_ == null) {
        if (applyParametersCase_ == 15) {
          return (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParameters) applyParameters_;
        }
        return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParameters.getDefaultInstance();
      } else {
        if (applyParametersCase_ == 15) {
          return raiseTargetCpaBidTooLowBuilder_.getMessage();
        }
        return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParameters.getDefaultInstance();
      }
    }
    /**
     * <pre>
     * Parameters to use when applying a raise target CPA bid too low
     * recommendation. The apply is asynchronous and can take minutes depending
     * on the number of ad groups there is in the related campaign.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParameters raise_target_cpa_bid_too_low = 15;</code>
     */
    public Builder setRaiseTargetCpaBidTooLow(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParameters value) {
      if (raiseTargetCpaBidTooLowBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        applyParameters_ = value;
        onChanged();
      } else {
        raiseTargetCpaBidTooLowBuilder_.setMessage(value);
      }
      applyParametersCase_ = 15;
      return this;
    }
    /**
     * <pre>
     * Parameters to use when applying a raise target CPA bid too low
     * recommendation. The apply is asynchronous and can take minutes depending
     * on the number of ad groups there is in the related campaign.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParameters raise_target_cpa_bid_too_low = 15;</code>
     */
    public Builder setRaiseTargetCpaBidTooLow(
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParameters.Builder builderForValue) {
      if (raiseTargetCpaBidTooLowBuilder_ == null) {
        applyParameters_ = builderForValue.build();
        onChanged();
      } else {
        raiseTargetCpaBidTooLowBuilder_.setMessage(builderForValue.build());
      }
      applyParametersCase_ = 15;
      return this;
    }
    /**
     * <pre>
     * Parameters to use when applying a raise target CPA bid too low
     * recommendation. The apply is asynchronous and can take minutes depending
     * on the number of ad groups there is in the related campaign.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParameters raise_target_cpa_bid_too_low = 15;</code>
     */
    public Builder mergeRaiseTargetCpaBidTooLow(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParameters value) {
      if (raiseTargetCpaBidTooLowBuilder_ == null) {
        if (applyParametersCase_ == 15 &&
            applyParameters_ != com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParameters.getDefaultInstance()) {
          applyParameters_ = com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParameters.newBuilder((com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParameters) applyParameters_)
              .mergeFrom(value).buildPartial();
        } else {
          applyParameters_ = value;
        }
        onChanged();
      } else {
        if (applyParametersCase_ == 15) {
          raiseTargetCpaBidTooLowBuilder_.mergeFrom(value);
        } else {
          raiseTargetCpaBidTooLowBuilder_.setMessage(value);
        }
      }
      applyParametersCase_ = 15;
      return this;
    }
    /**
     * <pre>
     * Parameters to use when applying a raise target CPA bid too low
     * recommendation. The apply is asynchronous and can take minutes depending
     * on the number of ad groups there is in the related campaign.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParameters raise_target_cpa_bid_too_low = 15;</code>
     */
    public Builder clearRaiseTargetCpaBidTooLow() {
      if (raiseTargetCpaBidTooLowBuilder_ == null) {
        if (applyParametersCase_ == 15) {
          applyParametersCase_ = 0;
          applyParameters_ = null;
          onChanged();
        }
      } else {
        if (applyParametersCase_ == 15) {
          applyParametersCase_ = 0;
          applyParameters_ = null;
        }
        raiseTargetCpaBidTooLowBuilder_.clear();
      }
      return this;
    }
    /**
     * <pre>
     * Parameters to use when applying a raise target CPA bid too low
     * recommendation. The apply is asynchronous and can take minutes depending
     * on the number of ad groups there is in the related campaign.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParameters raise_target_cpa_bid_too_low = 15;</code>
     */
    public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParameters.Builder getRaiseTargetCpaBidTooLowBuilder() {
      return getRaiseTargetCpaBidTooLowFieldBuilder().getBuilder();
    }
    /**
     * <pre>
     * Parameters to use when applying a raise target CPA bid too low
     * recommendation. The apply is asynchronous and can take minutes depending
     * on the number of ad groups there is in the related campaign.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParameters raise_target_cpa_bid_too_low = 15;</code>
     */
    @java.lang.Override
    public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParametersOrBuilder getRaiseTargetCpaBidTooLowOrBuilder() {
      if ((applyParametersCase_ == 15) && (raiseTargetCpaBidTooLowBuilder_ != null)) {
        return raiseTargetCpaBidTooLowBuilder_.getMessageOrBuilder();
      } else {
        if (applyParametersCase_ == 15) {
          return (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParameters) applyParameters_;
        }
        return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParameters.getDefaultInstance();
      }
    }
    /**
     * <pre>
     * Parameters to use when applying a raise target CPA bid too low
     * recommendation. The apply is asynchronous and can take minutes depending
     * on the number of ad groups there is in the related campaign.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParameters raise_target_cpa_bid_too_low = 15;</code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParameters, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParameters.Builder, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParametersOrBuilder> 
        getRaiseTargetCpaBidTooLowFieldBuilder() {
      if (raiseTargetCpaBidTooLowBuilder_ == null) {
        if (!(applyParametersCase_ == 15)) {
          applyParameters_ = com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParameters.getDefaultInstance();
        }
        raiseTargetCpaBidTooLowBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
            com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParameters, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParameters.Builder, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParametersOrBuilder>(
                (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaBidTooLowParameters) applyParameters_,
                getParentForChildren(),
                isClean());
        applyParameters_ = null;
      }
      applyParametersCase_ = 15;
      onChanged();
      return raiseTargetCpaBidTooLowBuilder_;
    }

    private com.google.protobuf.SingleFieldBuilderV3<
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParameters, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParameters.Builder, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParametersOrBuilder> forecastingSetTargetRoasBuilder_;
    /**
     * <pre>
     * Parameters to use when applying a forecasting set target ROAS
     * recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParameters forecasting_set_target_roas = 16;</code>
     * @return Whether the forecastingSetTargetRoas field is set.
     */
    @java.lang.Override
    public boolean hasForecastingSetTargetRoas() {
      return applyParametersCase_ == 16;
    }
    /**
     * <pre>
     * Parameters to use when applying a forecasting set target ROAS
     * recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParameters forecasting_set_target_roas = 16;</code>
     * @return The forecastingSetTargetRoas.
     */
    @java.lang.Override
    public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParameters getForecastingSetTargetRoas() {
      if (forecastingSetTargetRoasBuilder_ == null) {
        if (applyParametersCase_ == 16) {
          return (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParameters) applyParameters_;
        }
        return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParameters.getDefaultInstance();
      } else {
        if (applyParametersCase_ == 16) {
          return forecastingSetTargetRoasBuilder_.getMessage();
        }
        return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParameters.getDefaultInstance();
      }
    }
    /**
     * <pre>
     * Parameters to use when applying a forecasting set target ROAS
     * recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParameters forecasting_set_target_roas = 16;</code>
     */
    public Builder setForecastingSetTargetRoas(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParameters value) {
      if (forecastingSetTargetRoasBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        applyParameters_ = value;
        onChanged();
      } else {
        forecastingSetTargetRoasBuilder_.setMessage(value);
      }
      applyParametersCase_ = 16;
      return this;
    }
    /**
     * <pre>
     * Parameters to use when applying a forecasting set target ROAS
     * recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParameters forecasting_set_target_roas = 16;</code>
     */
    public Builder setForecastingSetTargetRoas(
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParameters.Builder builderForValue) {
      if (forecastingSetTargetRoasBuilder_ == null) {
        applyParameters_ = builderForValue.build();
        onChanged();
      } else {
        forecastingSetTargetRoasBuilder_.setMessage(builderForValue.build());
      }
      applyParametersCase_ = 16;
      return this;
    }
    /**
     * <pre>
     * Parameters to use when applying a forecasting set target ROAS
     * recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParameters forecasting_set_target_roas = 16;</code>
     */
    public Builder mergeForecastingSetTargetRoas(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParameters value) {
      if (forecastingSetTargetRoasBuilder_ == null) {
        if (applyParametersCase_ == 16 &&
            applyParameters_ != com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParameters.getDefaultInstance()) {
          applyParameters_ = com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParameters.newBuilder((com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParameters) applyParameters_)
              .mergeFrom(value).buildPartial();
        } else {
          applyParameters_ = value;
        }
        onChanged();
      } else {
        if (applyParametersCase_ == 16) {
          forecastingSetTargetRoasBuilder_.mergeFrom(value);
        } else {
          forecastingSetTargetRoasBuilder_.setMessage(value);
        }
      }
      applyParametersCase_ = 16;
      return this;
    }
    /**
     * <pre>
     * Parameters to use when applying a forecasting set target ROAS
     * recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParameters forecasting_set_target_roas = 16;</code>
     */
    public Builder clearForecastingSetTargetRoas() {
      if (forecastingSetTargetRoasBuilder_ == null) {
        if (applyParametersCase_ == 16) {
          applyParametersCase_ = 0;
          applyParameters_ = null;
          onChanged();
        }
      } else {
        if (applyParametersCase_ == 16) {
          applyParametersCase_ = 0;
          applyParameters_ = null;
        }
        forecastingSetTargetRoasBuilder_.clear();
      }
      return this;
    }
    /**
     * <pre>
     * Parameters to use when applying a forecasting set target ROAS
     * recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParameters forecasting_set_target_roas = 16;</code>
     */
    public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParameters.Builder getForecastingSetTargetRoasBuilder() {
      return getForecastingSetTargetRoasFieldBuilder().getBuilder();
    }
    /**
     * <pre>
     * Parameters to use when applying a forecasting set target ROAS
     * recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParameters forecasting_set_target_roas = 16;</code>
     */
    @java.lang.Override
    public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParametersOrBuilder getForecastingSetTargetRoasOrBuilder() {
      if ((applyParametersCase_ == 16) && (forecastingSetTargetRoasBuilder_ != null)) {
        return forecastingSetTargetRoasBuilder_.getMessageOrBuilder();
      } else {
        if (applyParametersCase_ == 16) {
          return (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParameters) applyParameters_;
        }
        return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParameters.getDefaultInstance();
      }
    }
    /**
     * <pre>
     * Parameters to use when applying a forecasting set target ROAS
     * recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParameters forecasting_set_target_roas = 16;</code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParameters, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParameters.Builder, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParametersOrBuilder> 
        getForecastingSetTargetRoasFieldBuilder() {
      if (forecastingSetTargetRoasBuilder_ == null) {
        if (!(applyParametersCase_ == 16)) {
          applyParameters_ = com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParameters.getDefaultInstance();
        }
        forecastingSetTargetRoasBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
            com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParameters, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParameters.Builder, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParametersOrBuilder>(
                (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.ForecastingSetTargetRoasParameters) applyParameters_,
                getParentForChildren(),
                isClean());
        applyParameters_ = null;
      }
      applyParametersCase_ = 16;
      onChanged();
      return forecastingSetTargetRoasBuilder_;
    }

    private com.google.protobuf.SingleFieldBuilderV3<
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutAssetParameters, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutAssetParameters.Builder, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutAssetParametersOrBuilder> calloutAssetBuilder_;
    /**
     * <pre>
     * Parameters to use when applying callout asset recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutAssetParameters callout_asset = 17;</code>
     * @return Whether the calloutAsset field is set.
     */
    @java.lang.Override
    public boolean hasCalloutAsset() {
      return applyParametersCase_ == 17;
    }
    /**
     * <pre>
     * Parameters to use when applying callout asset recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutAssetParameters callout_asset = 17;</code>
     * @return The calloutAsset.
     */
    @java.lang.Override
    public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutAssetParameters getCalloutAsset() {
      if (calloutAssetBuilder_ == null) {
        if (applyParametersCase_ == 17) {
          return (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutAssetParameters) applyParameters_;
        }
        return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutAssetParameters.getDefaultInstance();
      } else {
        if (applyParametersCase_ == 17) {
          return calloutAssetBuilder_.getMessage();
        }
        return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutAssetParameters.getDefaultInstance();
      }
    }
    /**
     * <pre>
     * Parameters to use when applying callout asset recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutAssetParameters callout_asset = 17;</code>
     */
    public Builder setCalloutAsset(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutAssetParameters value) {
      if (calloutAssetBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        applyParameters_ = value;
        onChanged();
      } else {
        calloutAssetBuilder_.setMessage(value);
      }
      applyParametersCase_ = 17;
      return this;
    }
    /**
     * <pre>
     * Parameters to use when applying callout asset recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutAssetParameters callout_asset = 17;</code>
     */
    public Builder setCalloutAsset(
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutAssetParameters.Builder builderForValue) {
      if (calloutAssetBuilder_ == null) {
        applyParameters_ = builderForValue.build();
        onChanged();
      } else {
        calloutAssetBuilder_.setMessage(builderForValue.build());
      }
      applyParametersCase_ = 17;
      return this;
    }
    /**
     * <pre>
     * Parameters to use when applying callout asset recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutAssetParameters callout_asset = 17;</code>
     */
    public Builder mergeCalloutAsset(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutAssetParameters value) {
      if (calloutAssetBuilder_ == null) {
        if (applyParametersCase_ == 17 &&
            applyParameters_ != com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutAssetParameters.getDefaultInstance()) {
          applyParameters_ = com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutAssetParameters.newBuilder((com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutAssetParameters) applyParameters_)
              .mergeFrom(value).buildPartial();
        } else {
          applyParameters_ = value;
        }
        onChanged();
      } else {
        if (applyParametersCase_ == 17) {
          calloutAssetBuilder_.mergeFrom(value);
        } else {
          calloutAssetBuilder_.setMessage(value);
        }
      }
      applyParametersCase_ = 17;
      return this;
    }
    /**
     * <pre>
     * Parameters to use when applying callout asset recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutAssetParameters callout_asset = 17;</code>
     */
    public Builder clearCalloutAsset() {
      if (calloutAssetBuilder_ == null) {
        if (applyParametersCase_ == 17) {
          applyParametersCase_ = 0;
          applyParameters_ = null;
          onChanged();
        }
      } else {
        if (applyParametersCase_ == 17) {
          applyParametersCase_ = 0;
          applyParameters_ = null;
        }
        calloutAssetBuilder_.clear();
      }
      return this;
    }
    /**
     * <pre>
     * Parameters to use when applying callout asset recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutAssetParameters callout_asset = 17;</code>
     */
    public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutAssetParameters.Builder getCalloutAssetBuilder() {
      return getCalloutAssetFieldBuilder().getBuilder();
    }
    /**
     * <pre>
     * Parameters to use when applying callout asset recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutAssetParameters callout_asset = 17;</code>
     */
    @java.lang.Override
    public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutAssetParametersOrBuilder getCalloutAssetOrBuilder() {
      if ((applyParametersCase_ == 17) && (calloutAssetBuilder_ != null)) {
        return calloutAssetBuilder_.getMessageOrBuilder();
      } else {
        if (applyParametersCase_ == 17) {
          return (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutAssetParameters) applyParameters_;
        }
        return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutAssetParameters.getDefaultInstance();
      }
    }
    /**
     * <pre>
     * Parameters to use when applying callout asset recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutAssetParameters callout_asset = 17;</code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutAssetParameters, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutAssetParameters.Builder, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutAssetParametersOrBuilder> 
        getCalloutAssetFieldBuilder() {
      if (calloutAssetBuilder_ == null) {
        if (!(applyParametersCase_ == 17)) {
          applyParameters_ = com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutAssetParameters.getDefaultInstance();
        }
        calloutAssetBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
            com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutAssetParameters, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutAssetParameters.Builder, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutAssetParametersOrBuilder>(
                (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CalloutAssetParameters) applyParameters_,
                getParentForChildren(),
                isClean());
        applyParameters_ = null;
      }
      applyParametersCase_ = 17;
      onChanged();
      return calloutAssetBuilder_;
    }

    private com.google.protobuf.SingleFieldBuilderV3<
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallAssetParameters, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallAssetParameters.Builder, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallAssetParametersOrBuilder> callAssetBuilder_;
    /**
     * <pre>
     * Parameters to use when applying call asset recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallAssetParameters call_asset = 18;</code>
     * @return Whether the callAsset field is set.
     */
    @java.lang.Override
    public boolean hasCallAsset() {
      return applyParametersCase_ == 18;
    }
    /**
     * <pre>
     * Parameters to use when applying call asset recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallAssetParameters call_asset = 18;</code>
     * @return The callAsset.
     */
    @java.lang.Override
    public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallAssetParameters getCallAsset() {
      if (callAssetBuilder_ == null) {
        if (applyParametersCase_ == 18) {
          return (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallAssetParameters) applyParameters_;
        }
        return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallAssetParameters.getDefaultInstance();
      } else {
        if (applyParametersCase_ == 18) {
          return callAssetBuilder_.getMessage();
        }
        return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallAssetParameters.getDefaultInstance();
      }
    }
    /**
     * <pre>
     * Parameters to use when applying call asset recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallAssetParameters call_asset = 18;</code>
     */
    public Builder setCallAsset(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallAssetParameters value) {
      if (callAssetBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        applyParameters_ = value;
        onChanged();
      } else {
        callAssetBuilder_.setMessage(value);
      }
      applyParametersCase_ = 18;
      return this;
    }
    /**
     * <pre>
     * Parameters to use when applying call asset recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallAssetParameters call_asset = 18;</code>
     */
    public Builder setCallAsset(
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallAssetParameters.Builder builderForValue) {
      if (callAssetBuilder_ == null) {
        applyParameters_ = builderForValue.build();
        onChanged();
      } else {
        callAssetBuilder_.setMessage(builderForValue.build());
      }
      applyParametersCase_ = 18;
      return this;
    }
    /**
     * <pre>
     * Parameters to use when applying call asset recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallAssetParameters call_asset = 18;</code>
     */
    public Builder mergeCallAsset(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallAssetParameters value) {
      if (callAssetBuilder_ == null) {
        if (applyParametersCase_ == 18 &&
            applyParameters_ != com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallAssetParameters.getDefaultInstance()) {
          applyParameters_ = com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallAssetParameters.newBuilder((com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallAssetParameters) applyParameters_)
              .mergeFrom(value).buildPartial();
        } else {
          applyParameters_ = value;
        }
        onChanged();
      } else {
        if (applyParametersCase_ == 18) {
          callAssetBuilder_.mergeFrom(value);
        } else {
          callAssetBuilder_.setMessage(value);
        }
      }
      applyParametersCase_ = 18;
      return this;
    }
    /**
     * <pre>
     * Parameters to use when applying call asset recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallAssetParameters call_asset = 18;</code>
     */
    public Builder clearCallAsset() {
      if (callAssetBuilder_ == null) {
        if (applyParametersCase_ == 18) {
          applyParametersCase_ = 0;
          applyParameters_ = null;
          onChanged();
        }
      } else {
        if (applyParametersCase_ == 18) {
          applyParametersCase_ = 0;
          applyParameters_ = null;
        }
        callAssetBuilder_.clear();
      }
      return this;
    }
    /**
     * <pre>
     * Parameters to use when applying call asset recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallAssetParameters call_asset = 18;</code>
     */
    public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallAssetParameters.Builder getCallAssetBuilder() {
      return getCallAssetFieldBuilder().getBuilder();
    }
    /**
     * <pre>
     * Parameters to use when applying call asset recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallAssetParameters call_asset = 18;</code>
     */
    @java.lang.Override
    public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallAssetParametersOrBuilder getCallAssetOrBuilder() {
      if ((applyParametersCase_ == 18) && (callAssetBuilder_ != null)) {
        return callAssetBuilder_.getMessageOrBuilder();
      } else {
        if (applyParametersCase_ == 18) {
          return (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallAssetParameters) applyParameters_;
        }
        return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallAssetParameters.getDefaultInstance();
      }
    }
    /**
     * <pre>
     * Parameters to use when applying call asset recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallAssetParameters call_asset = 18;</code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallAssetParameters, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallAssetParameters.Builder, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallAssetParametersOrBuilder> 
        getCallAssetFieldBuilder() {
      if (callAssetBuilder_ == null) {
        if (!(applyParametersCase_ == 18)) {
          applyParameters_ = com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallAssetParameters.getDefaultInstance();
        }
        callAssetBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
            com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallAssetParameters, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallAssetParameters.Builder, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallAssetParametersOrBuilder>(
                (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.CallAssetParameters) applyParameters_,
                getParentForChildren(),
                isClean());
        applyParameters_ = null;
      }
      applyParametersCase_ = 18;
      onChanged();
      return callAssetBuilder_;
    }

    private com.google.protobuf.SingleFieldBuilderV3<
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkAssetParameters, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkAssetParameters.Builder, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkAssetParametersOrBuilder> sitelinkAssetBuilder_;
    /**
     * <pre>
     * Parameters to use when applying sitelink asset recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkAssetParameters sitelink_asset = 19;</code>
     * @return Whether the sitelinkAsset field is set.
     */
    @java.lang.Override
    public boolean hasSitelinkAsset() {
      return applyParametersCase_ == 19;
    }
    /**
     * <pre>
     * Parameters to use when applying sitelink asset recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkAssetParameters sitelink_asset = 19;</code>
     * @return The sitelinkAsset.
     */
    @java.lang.Override
    public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkAssetParameters getSitelinkAsset() {
      if (sitelinkAssetBuilder_ == null) {
        if (applyParametersCase_ == 19) {
          return (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkAssetParameters) applyParameters_;
        }
        return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkAssetParameters.getDefaultInstance();
      } else {
        if (applyParametersCase_ == 19) {
          return sitelinkAssetBuilder_.getMessage();
        }
        return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkAssetParameters.getDefaultInstance();
      }
    }
    /**
     * <pre>
     * Parameters to use when applying sitelink asset recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkAssetParameters sitelink_asset = 19;</code>
     */
    public Builder setSitelinkAsset(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkAssetParameters value) {
      if (sitelinkAssetBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        applyParameters_ = value;
        onChanged();
      } else {
        sitelinkAssetBuilder_.setMessage(value);
      }
      applyParametersCase_ = 19;
      return this;
    }
    /**
     * <pre>
     * Parameters to use when applying sitelink asset recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkAssetParameters sitelink_asset = 19;</code>
     */
    public Builder setSitelinkAsset(
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkAssetParameters.Builder builderForValue) {
      if (sitelinkAssetBuilder_ == null) {
        applyParameters_ = builderForValue.build();
        onChanged();
      } else {
        sitelinkAssetBuilder_.setMessage(builderForValue.build());
      }
      applyParametersCase_ = 19;
      return this;
    }
    /**
     * <pre>
     * Parameters to use when applying sitelink asset recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkAssetParameters sitelink_asset = 19;</code>
     */
    public Builder mergeSitelinkAsset(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkAssetParameters value) {
      if (sitelinkAssetBuilder_ == null) {
        if (applyParametersCase_ == 19 &&
            applyParameters_ != com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkAssetParameters.getDefaultInstance()) {
          applyParameters_ = com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkAssetParameters.newBuilder((com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkAssetParameters) applyParameters_)
              .mergeFrom(value).buildPartial();
        } else {
          applyParameters_ = value;
        }
        onChanged();
      } else {
        if (applyParametersCase_ == 19) {
          sitelinkAssetBuilder_.mergeFrom(value);
        } else {
          sitelinkAssetBuilder_.setMessage(value);
        }
      }
      applyParametersCase_ = 19;
      return this;
    }
    /**
     * <pre>
     * Parameters to use when applying sitelink asset recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkAssetParameters sitelink_asset = 19;</code>
     */
    public Builder clearSitelinkAsset() {
      if (sitelinkAssetBuilder_ == null) {
        if (applyParametersCase_ == 19) {
          applyParametersCase_ = 0;
          applyParameters_ = null;
          onChanged();
        }
      } else {
        if (applyParametersCase_ == 19) {
          applyParametersCase_ = 0;
          applyParameters_ = null;
        }
        sitelinkAssetBuilder_.clear();
      }
      return this;
    }
    /**
     * <pre>
     * Parameters to use when applying sitelink asset recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkAssetParameters sitelink_asset = 19;</code>
     */
    public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkAssetParameters.Builder getSitelinkAssetBuilder() {
      return getSitelinkAssetFieldBuilder().getBuilder();
    }
    /**
     * <pre>
     * Parameters to use when applying sitelink asset recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkAssetParameters sitelink_asset = 19;</code>
     */
    @java.lang.Override
    public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkAssetParametersOrBuilder getSitelinkAssetOrBuilder() {
      if ((applyParametersCase_ == 19) && (sitelinkAssetBuilder_ != null)) {
        return sitelinkAssetBuilder_.getMessageOrBuilder();
      } else {
        if (applyParametersCase_ == 19) {
          return (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkAssetParameters) applyParameters_;
        }
        return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkAssetParameters.getDefaultInstance();
      }
    }
    /**
     * <pre>
     * Parameters to use when applying sitelink asset recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkAssetParameters sitelink_asset = 19;</code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkAssetParameters, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkAssetParameters.Builder, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkAssetParametersOrBuilder> 
        getSitelinkAssetFieldBuilder() {
      if (sitelinkAssetBuilder_ == null) {
        if (!(applyParametersCase_ == 19)) {
          applyParameters_ = com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkAssetParameters.getDefaultInstance();
        }
        sitelinkAssetBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
            com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkAssetParameters, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkAssetParameters.Builder, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkAssetParametersOrBuilder>(
                (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.SitelinkAssetParameters) applyParameters_,
                getParentForChildren(),
                isClean());
        applyParameters_ = null;
      }
      applyParametersCase_ = 19;
      onChanged();
      return sitelinkAssetBuilder_;
    }

    private com.google.protobuf.SingleFieldBuilderV3<
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaParameters, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaParameters.Builder, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaParametersOrBuilder> raiseTargetCpaBuilder_;
    /**
     * <pre>
     * Parameters to use when applying raise Target CPA recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaParameters raise_target_cpa = 20;</code>
     * @return Whether the raiseTargetCpa field is set.
     */
    @java.lang.Override
    public boolean hasRaiseTargetCpa() {
      return applyParametersCase_ == 20;
    }
    /**
     * <pre>
     * Parameters to use when applying raise Target CPA recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaParameters raise_target_cpa = 20;</code>
     * @return The raiseTargetCpa.
     */
    @java.lang.Override
    public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaParameters getRaiseTargetCpa() {
      if (raiseTargetCpaBuilder_ == null) {
        if (applyParametersCase_ == 20) {
          return (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaParameters) applyParameters_;
        }
        return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaParameters.getDefaultInstance();
      } else {
        if (applyParametersCase_ == 20) {
          return raiseTargetCpaBuilder_.getMessage();
        }
        return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaParameters.getDefaultInstance();
      }
    }
    /**
     * <pre>
     * Parameters to use when applying raise Target CPA recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaParameters raise_target_cpa = 20;</code>
     */
    public Builder setRaiseTargetCpa(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaParameters value) {
      if (raiseTargetCpaBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        applyParameters_ = value;
        onChanged();
      } else {
        raiseTargetCpaBuilder_.setMessage(value);
      }
      applyParametersCase_ = 20;
      return this;
    }
    /**
     * <pre>
     * Parameters to use when applying raise Target CPA recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaParameters raise_target_cpa = 20;</code>
     */
    public Builder setRaiseTargetCpa(
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaParameters.Builder builderForValue) {
      if (raiseTargetCpaBuilder_ == null) {
        applyParameters_ = builderForValue.build();
        onChanged();
      } else {
        raiseTargetCpaBuilder_.setMessage(builderForValue.build());
      }
      applyParametersCase_ = 20;
      return this;
    }
    /**
     * <pre>
     * Parameters to use when applying raise Target CPA recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaParameters raise_target_cpa = 20;</code>
     */
    public Builder mergeRaiseTargetCpa(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaParameters value) {
      if (raiseTargetCpaBuilder_ == null) {
        if (applyParametersCase_ == 20 &&
            applyParameters_ != com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaParameters.getDefaultInstance()) {
          applyParameters_ = com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaParameters.newBuilder((com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaParameters) applyParameters_)
              .mergeFrom(value).buildPartial();
        } else {
          applyParameters_ = value;
        }
        onChanged();
      } else {
        if (applyParametersCase_ == 20) {
          raiseTargetCpaBuilder_.mergeFrom(value);
        } else {
          raiseTargetCpaBuilder_.setMessage(value);
        }
      }
      applyParametersCase_ = 20;
      return this;
    }
    /**
     * <pre>
     * Parameters to use when applying raise Target CPA recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaParameters raise_target_cpa = 20;</code>
     */
    public Builder clearRaiseTargetCpa() {
      if (raiseTargetCpaBuilder_ == null) {
        if (applyParametersCase_ == 20) {
          applyParametersCase_ = 0;
          applyParameters_ = null;
          onChanged();
        }
      } else {
        if (applyParametersCase_ == 20) {
          applyParametersCase_ = 0;
          applyParameters_ = null;
        }
        raiseTargetCpaBuilder_.clear();
      }
      return this;
    }
    /**
     * <pre>
     * Parameters to use when applying raise Target CPA recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaParameters raise_target_cpa = 20;</code>
     */
    public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaParameters.Builder getRaiseTargetCpaBuilder() {
      return getRaiseTargetCpaFieldBuilder().getBuilder();
    }
    /**
     * <pre>
     * Parameters to use when applying raise Target CPA recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaParameters raise_target_cpa = 20;</code>
     */
    @java.lang.Override
    public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaParametersOrBuilder getRaiseTargetCpaOrBuilder() {
      if ((applyParametersCase_ == 20) && (raiseTargetCpaBuilder_ != null)) {
        return raiseTargetCpaBuilder_.getMessageOrBuilder();
      } else {
        if (applyParametersCase_ == 20) {
          return (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaParameters) applyParameters_;
        }
        return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaParameters.getDefaultInstance();
      }
    }
    /**
     * <pre>
     * Parameters to use when applying raise Target CPA recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaParameters raise_target_cpa = 20;</code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaParameters, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaParameters.Builder, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaParametersOrBuilder> 
        getRaiseTargetCpaFieldBuilder() {
      if (raiseTargetCpaBuilder_ == null) {
        if (!(applyParametersCase_ == 20)) {
          applyParameters_ = com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaParameters.getDefaultInstance();
        }
        raiseTargetCpaBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
            com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaParameters, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaParameters.Builder, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaParametersOrBuilder>(
                (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.RaiseTargetCpaParameters) applyParameters_,
                getParentForChildren(),
                isClean());
        applyParameters_ = null;
      }
      applyParametersCase_ = 20;
      onChanged();
      return raiseTargetCpaBuilder_;
    }

    private com.google.protobuf.SingleFieldBuilderV3<
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.LowerTargetRoasParameters, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.LowerTargetRoasParameters.Builder, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.LowerTargetRoasParametersOrBuilder> lowerTargetRoasBuilder_;
    /**
     * <pre>
     * Parameters to use when applying lower Target ROAS recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.LowerTargetRoasParameters lower_target_roas = 21;</code>
     * @return Whether the lowerTargetRoas field is set.
     */
    @java.lang.Override
    public boolean hasLowerTargetRoas() {
      return applyParametersCase_ == 21;
    }
    /**
     * <pre>
     * Parameters to use when applying lower Target ROAS recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.LowerTargetRoasParameters lower_target_roas = 21;</code>
     * @return The lowerTargetRoas.
     */
    @java.lang.Override
    public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.LowerTargetRoasParameters getLowerTargetRoas() {
      if (lowerTargetRoasBuilder_ == null) {
        if (applyParametersCase_ == 21) {
          return (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.LowerTargetRoasParameters) applyParameters_;
        }
        return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.LowerTargetRoasParameters.getDefaultInstance();
      } else {
        if (applyParametersCase_ == 21) {
          return lowerTargetRoasBuilder_.getMessage();
        }
        return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.LowerTargetRoasParameters.getDefaultInstance();
      }
    }
    /**
     * <pre>
     * Parameters to use when applying lower Target ROAS recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.LowerTargetRoasParameters lower_target_roas = 21;</code>
     */
    public Builder setLowerTargetRoas(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.LowerTargetRoasParameters value) {
      if (lowerTargetRoasBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        applyParameters_ = value;
        onChanged();
      } else {
        lowerTargetRoasBuilder_.setMessage(value);
      }
      applyParametersCase_ = 21;
      return this;
    }
    /**
     * <pre>
     * Parameters to use when applying lower Target ROAS recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.LowerTargetRoasParameters lower_target_roas = 21;</code>
     */
    public Builder setLowerTargetRoas(
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.LowerTargetRoasParameters.Builder builderForValue) {
      if (lowerTargetRoasBuilder_ == null) {
        applyParameters_ = builderForValue.build();
        onChanged();
      } else {
        lowerTargetRoasBuilder_.setMessage(builderForValue.build());
      }
      applyParametersCase_ = 21;
      return this;
    }
    /**
     * <pre>
     * Parameters to use when applying lower Target ROAS recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.LowerTargetRoasParameters lower_target_roas = 21;</code>
     */
    public Builder mergeLowerTargetRoas(com.google.ads.googleads.v14.services.ApplyRecommendationOperation.LowerTargetRoasParameters value) {
      if (lowerTargetRoasBuilder_ == null) {
        if (applyParametersCase_ == 21 &&
            applyParameters_ != com.google.ads.googleads.v14.services.ApplyRecommendationOperation.LowerTargetRoasParameters.getDefaultInstance()) {
          applyParameters_ = com.google.ads.googleads.v14.services.ApplyRecommendationOperation.LowerTargetRoasParameters.newBuilder((com.google.ads.googleads.v14.services.ApplyRecommendationOperation.LowerTargetRoasParameters) applyParameters_)
              .mergeFrom(value).buildPartial();
        } else {
          applyParameters_ = value;
        }
        onChanged();
      } else {
        if (applyParametersCase_ == 21) {
          lowerTargetRoasBuilder_.mergeFrom(value);
        } else {
          lowerTargetRoasBuilder_.setMessage(value);
        }
      }
      applyParametersCase_ = 21;
      return this;
    }
    /**
     * <pre>
     * Parameters to use when applying lower Target ROAS recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.LowerTargetRoasParameters lower_target_roas = 21;</code>
     */
    public Builder clearLowerTargetRoas() {
      if (lowerTargetRoasBuilder_ == null) {
        if (applyParametersCase_ == 21) {
          applyParametersCase_ = 0;
          applyParameters_ = null;
          onChanged();
        }
      } else {
        if (applyParametersCase_ == 21) {
          applyParametersCase_ = 0;
          applyParameters_ = null;
        }
        lowerTargetRoasBuilder_.clear();
      }
      return this;
    }
    /**
     * <pre>
     * Parameters to use when applying lower Target ROAS recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.LowerTargetRoasParameters lower_target_roas = 21;</code>
     */
    public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.LowerTargetRoasParameters.Builder getLowerTargetRoasBuilder() {
      return getLowerTargetRoasFieldBuilder().getBuilder();
    }
    /**
     * <pre>
     * Parameters to use when applying lower Target ROAS recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.LowerTargetRoasParameters lower_target_roas = 21;</code>
     */
    @java.lang.Override
    public com.google.ads.googleads.v14.services.ApplyRecommendationOperation.LowerTargetRoasParametersOrBuilder getLowerTargetRoasOrBuilder() {
      if ((applyParametersCase_ == 21) && (lowerTargetRoasBuilder_ != null)) {
        return lowerTargetRoasBuilder_.getMessageOrBuilder();
      } else {
        if (applyParametersCase_ == 21) {
          return (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.LowerTargetRoasParameters) applyParameters_;
        }
        return com.google.ads.googleads.v14.services.ApplyRecommendationOperation.LowerTargetRoasParameters.getDefaultInstance();
      }
    }
    /**
     * <pre>
     * Parameters to use when applying lower Target ROAS recommendation.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.services.ApplyRecommendationOperation.LowerTargetRoasParameters lower_target_roas = 21;</code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
        com.google.ads.googleads.v14.services.ApplyRecommendationOperation.LowerTargetRoasParameters, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.LowerTargetRoasParameters.Builder, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.LowerTargetRoasParametersOrBuilder> 
        getLowerTargetRoasFieldBuilder() {
      if (lowerTargetRoasBuilder_ == null) {
        if (!(applyParametersCase_ == 21)) {
          applyParameters_ = com.google.ads.googleads.v14.services.ApplyRecommendationOperation.LowerTargetRoasParameters.getDefaultInstance();
        }
        lowerTargetRoasBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
            com.google.ads.googleads.v14.services.ApplyRecommendationOperation.LowerTargetRoasParameters, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.LowerTargetRoasParameters.Builder, com.google.ads.googleads.v14.services.ApplyRecommendationOperation.LowerTargetRoasParametersOrBuilder>(
                (com.google.ads.googleads.v14.services.ApplyRecommendationOperation.LowerTargetRoasParameters) applyParameters_,
                getParentForChildren(),
                isClean());
        applyParameters_ = null;
      }
      applyParametersCase_ = 21;
      onChanged();
      return lowerTargetRoasBuilder_;
    }
    @java.lang.Override
    public final Builder setUnknownFields(
        final com.google.protobuf.UnknownFieldSet unknownFields) {
      return super.setUnknownFields(unknownFields);
    }

    @java.lang.Override
    public final Builder mergeUnknownFields(
        final com.google.protobuf.UnknownFieldSet unknownFields) {
      return super.mergeUnknownFields(unknownFields);
    }


    // @@protoc_insertion_point(builder_scope:google.ads.googleads.v14.services.ApplyRecommendationOperation)
  }

  // @@protoc_insertion_point(class_scope:google.ads.googleads.v14.services.ApplyRecommendationOperation)
  private static final com.google.ads.googleads.v14.services.ApplyRecommendationOperation DEFAULT_INSTANCE;
  static {
    DEFAULT_INSTANCE = new com.google.ads.googleads.v14.services.ApplyRecommendationOperation();
  }

  public static com.google.ads.googleads.v14.services.ApplyRecommendationOperation getDefaultInstance() {
    return DEFAULT_INSTANCE;
  }

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

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

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

  @java.lang.Override
  public com.google.ads.googleads.v14.services.ApplyRecommendationOperation getDefaultInstanceForType() {
    return DEFAULT_INSTANCE;
  }

}

