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

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

/**
 * <pre>
 * A negative criterion for exclusions at the customer level.
 * </pre>
 *
 * Protobuf type {@code google.ads.googleads.v14.resources.CustomerNegativeCriterion}
 */
public final class CustomerNegativeCriterion extends
    com.google.protobuf.GeneratedMessageV3 implements
    // @@protoc_insertion_point(message_implements:google.ads.googleads.v14.resources.CustomerNegativeCriterion)
    CustomerNegativeCriterionOrBuilder {
private static final long serialVersionUID = 0L;
  // Use CustomerNegativeCriterion.newBuilder() to construct.
  private CustomerNegativeCriterion(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
    super(builder);
  }
  private CustomerNegativeCriterion() {
    resourceName_ = "";
    type_ = 0;
  }

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

  public static final com.google.protobuf.Descriptors.Descriptor
      getDescriptor() {
    return com.google.ads.googleads.v14.resources.CustomerNegativeCriterionProto.internal_static_google_ads_googleads_v14_resources_CustomerNegativeCriterion_descriptor;
  }

  @java.lang.Override
  protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internalGetFieldAccessorTable() {
    return com.google.ads.googleads.v14.resources.CustomerNegativeCriterionProto.internal_static_google_ads_googleads_v14_resources_CustomerNegativeCriterion_fieldAccessorTable
        .ensureFieldAccessorsInitialized(
            com.google.ads.googleads.v14.resources.CustomerNegativeCriterion.class, com.google.ads.googleads.v14.resources.CustomerNegativeCriterion.Builder.class);
  }

  private int bitField0_;
  private int criterionCase_ = 0;
  @SuppressWarnings("serial")
  private java.lang.Object criterion_;
  public enum CriterionCase
      implements com.google.protobuf.Internal.EnumLite,
          com.google.protobuf.AbstractMessage.InternalOneOfEnum {
    CONTENT_LABEL(4),
    MOBILE_APPLICATION(5),
    MOBILE_APP_CATEGORY(6),
    PLACEMENT(7),
    YOUTUBE_VIDEO(8),
    YOUTUBE_CHANNEL(9),
    NEGATIVE_KEYWORD_LIST(11),
    CRITERION_NOT_SET(0);
    private final int value;
    private CriterionCase(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 CriterionCase valueOf(int value) {
      return forNumber(value);
    }

    public static CriterionCase forNumber(int value) {
      switch (value) {
        case 4: return CONTENT_LABEL;
        case 5: return MOBILE_APPLICATION;
        case 6: return MOBILE_APP_CATEGORY;
        case 7: return PLACEMENT;
        case 8: return YOUTUBE_VIDEO;
        case 9: return YOUTUBE_CHANNEL;
        case 11: return NEGATIVE_KEYWORD_LIST;
        case 0: return CRITERION_NOT_SET;
        default: return null;
      }
    }
    public int getNumber() {
      return this.value;
    }
  };

  public CriterionCase
  getCriterionCase() {
    return CriterionCase.forNumber(
        criterionCase_);
  }

  public static final int RESOURCE_NAME_FIELD_NUMBER = 1;
  @SuppressWarnings("serial")
  private volatile java.lang.Object resourceName_ = "";
  /**
   * <pre>
   * Immutable. The resource name of the customer negative criterion.
   * Customer negative criterion resource names have the form:
   *
   * `customers/{customer_id}/customerNegativeCriteria/{criterion_id}`
   * </pre>
   *
   * <code>string resource_name = 1 [(.google.api.field_behavior) = IMMUTABLE, (.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>
   * Immutable. The resource name of the customer negative criterion.
   * Customer negative criterion resource names have the form:
   *
   * `customers/{customer_id}/customerNegativeCriteria/{criterion_id}`
   * </pre>
   *
   * <code>string resource_name = 1 [(.google.api.field_behavior) = IMMUTABLE, (.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 ID_FIELD_NUMBER = 10;
  private long id_ = 0L;
  /**
   * <pre>
   * Output only. The ID of the criterion.
   * </pre>
   *
   * <code>optional int64 id = 10 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
   * @return Whether the id field is set.
   */
  @java.lang.Override
  public boolean hasId() {
    return ((bitField0_ & 0x00000001) != 0);
  }
  /**
   * <pre>
   * Output only. The ID of the criterion.
   * </pre>
   *
   * <code>optional int64 id = 10 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
   * @return The id.
   */
  @java.lang.Override
  public long getId() {
    return id_;
  }

  public static final int TYPE_FIELD_NUMBER = 3;
  private int type_ = 0;
  /**
   * <pre>
   * Output only. The type of the criterion.
   * </pre>
   *
   * <code>.google.ads.googleads.v14.enums.CriterionTypeEnum.CriterionType type = 3 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
   * @return The enum numeric value on the wire for type.
   */
  @java.lang.Override public int getTypeValue() {
    return type_;
  }
  /**
   * <pre>
   * Output only. The type of the criterion.
   * </pre>
   *
   * <code>.google.ads.googleads.v14.enums.CriterionTypeEnum.CriterionType type = 3 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
   * @return The type.
   */
  @java.lang.Override public com.google.ads.googleads.v14.enums.CriterionTypeEnum.CriterionType getType() {
    com.google.ads.googleads.v14.enums.CriterionTypeEnum.CriterionType result = com.google.ads.googleads.v14.enums.CriterionTypeEnum.CriterionType.forNumber(type_);
    return result == null ? com.google.ads.googleads.v14.enums.CriterionTypeEnum.CriterionType.UNRECOGNIZED : result;
  }

  public static final int CONTENT_LABEL_FIELD_NUMBER = 4;
  /**
   * <pre>
   * Immutable. ContentLabel.
   * </pre>
   *
   * <code>.google.ads.googleads.v14.common.ContentLabelInfo content_label = 4 [(.google.api.field_behavior) = IMMUTABLE];</code>
   * @return Whether the contentLabel field is set.
   */
  @java.lang.Override
  public boolean hasContentLabel() {
    return criterionCase_ == 4;
  }
  /**
   * <pre>
   * Immutable. ContentLabel.
   * </pre>
   *
   * <code>.google.ads.googleads.v14.common.ContentLabelInfo content_label = 4 [(.google.api.field_behavior) = IMMUTABLE];</code>
   * @return The contentLabel.
   */
  @java.lang.Override
  public com.google.ads.googleads.v14.common.ContentLabelInfo getContentLabel() {
    if (criterionCase_ == 4) {
       return (com.google.ads.googleads.v14.common.ContentLabelInfo) criterion_;
    }
    return com.google.ads.googleads.v14.common.ContentLabelInfo.getDefaultInstance();
  }
  /**
   * <pre>
   * Immutable. ContentLabel.
   * </pre>
   *
   * <code>.google.ads.googleads.v14.common.ContentLabelInfo content_label = 4 [(.google.api.field_behavior) = IMMUTABLE];</code>
   */
  @java.lang.Override
  public com.google.ads.googleads.v14.common.ContentLabelInfoOrBuilder getContentLabelOrBuilder() {
    if (criterionCase_ == 4) {
       return (com.google.ads.googleads.v14.common.ContentLabelInfo) criterion_;
    }
    return com.google.ads.googleads.v14.common.ContentLabelInfo.getDefaultInstance();
  }

  public static final int MOBILE_APPLICATION_FIELD_NUMBER = 5;
  /**
   * <pre>
   * Immutable. MobileApplication.
   * </pre>
   *
   * <code>.google.ads.googleads.v14.common.MobileApplicationInfo mobile_application = 5 [(.google.api.field_behavior) = IMMUTABLE];</code>
   * @return Whether the mobileApplication field is set.
   */
  @java.lang.Override
  public boolean hasMobileApplication() {
    return criterionCase_ == 5;
  }
  /**
   * <pre>
   * Immutable. MobileApplication.
   * </pre>
   *
   * <code>.google.ads.googleads.v14.common.MobileApplicationInfo mobile_application = 5 [(.google.api.field_behavior) = IMMUTABLE];</code>
   * @return The mobileApplication.
   */
  @java.lang.Override
  public com.google.ads.googleads.v14.common.MobileApplicationInfo getMobileApplication() {
    if (criterionCase_ == 5) {
       return (com.google.ads.googleads.v14.common.MobileApplicationInfo) criterion_;
    }
    return com.google.ads.googleads.v14.common.MobileApplicationInfo.getDefaultInstance();
  }
  /**
   * <pre>
   * Immutable. MobileApplication.
   * </pre>
   *
   * <code>.google.ads.googleads.v14.common.MobileApplicationInfo mobile_application = 5 [(.google.api.field_behavior) = IMMUTABLE];</code>
   */
  @java.lang.Override
  public com.google.ads.googleads.v14.common.MobileApplicationInfoOrBuilder getMobileApplicationOrBuilder() {
    if (criterionCase_ == 5) {
       return (com.google.ads.googleads.v14.common.MobileApplicationInfo) criterion_;
    }
    return com.google.ads.googleads.v14.common.MobileApplicationInfo.getDefaultInstance();
  }

  public static final int MOBILE_APP_CATEGORY_FIELD_NUMBER = 6;
  /**
   * <pre>
   * Immutable. MobileAppCategory.
   * </pre>
   *
   * <code>.google.ads.googleads.v14.common.MobileAppCategoryInfo mobile_app_category = 6 [(.google.api.field_behavior) = IMMUTABLE];</code>
   * @return Whether the mobileAppCategory field is set.
   */
  @java.lang.Override
  public boolean hasMobileAppCategory() {
    return criterionCase_ == 6;
  }
  /**
   * <pre>
   * Immutable. MobileAppCategory.
   * </pre>
   *
   * <code>.google.ads.googleads.v14.common.MobileAppCategoryInfo mobile_app_category = 6 [(.google.api.field_behavior) = IMMUTABLE];</code>
   * @return The mobileAppCategory.
   */
  @java.lang.Override
  public com.google.ads.googleads.v14.common.MobileAppCategoryInfo getMobileAppCategory() {
    if (criterionCase_ == 6) {
       return (com.google.ads.googleads.v14.common.MobileAppCategoryInfo) criterion_;
    }
    return com.google.ads.googleads.v14.common.MobileAppCategoryInfo.getDefaultInstance();
  }
  /**
   * <pre>
   * Immutable. MobileAppCategory.
   * </pre>
   *
   * <code>.google.ads.googleads.v14.common.MobileAppCategoryInfo mobile_app_category = 6 [(.google.api.field_behavior) = IMMUTABLE];</code>
   */
  @java.lang.Override
  public com.google.ads.googleads.v14.common.MobileAppCategoryInfoOrBuilder getMobileAppCategoryOrBuilder() {
    if (criterionCase_ == 6) {
       return (com.google.ads.googleads.v14.common.MobileAppCategoryInfo) criterion_;
    }
    return com.google.ads.googleads.v14.common.MobileAppCategoryInfo.getDefaultInstance();
  }

  public static final int PLACEMENT_FIELD_NUMBER = 7;
  /**
   * <pre>
   * Immutable. Placement.
   * </pre>
   *
   * <code>.google.ads.googleads.v14.common.PlacementInfo placement = 7 [(.google.api.field_behavior) = IMMUTABLE];</code>
   * @return Whether the placement field is set.
   */
  @java.lang.Override
  public boolean hasPlacement() {
    return criterionCase_ == 7;
  }
  /**
   * <pre>
   * Immutable. Placement.
   * </pre>
   *
   * <code>.google.ads.googleads.v14.common.PlacementInfo placement = 7 [(.google.api.field_behavior) = IMMUTABLE];</code>
   * @return The placement.
   */
  @java.lang.Override
  public com.google.ads.googleads.v14.common.PlacementInfo getPlacement() {
    if (criterionCase_ == 7) {
       return (com.google.ads.googleads.v14.common.PlacementInfo) criterion_;
    }
    return com.google.ads.googleads.v14.common.PlacementInfo.getDefaultInstance();
  }
  /**
   * <pre>
   * Immutable. Placement.
   * </pre>
   *
   * <code>.google.ads.googleads.v14.common.PlacementInfo placement = 7 [(.google.api.field_behavior) = IMMUTABLE];</code>
   */
  @java.lang.Override
  public com.google.ads.googleads.v14.common.PlacementInfoOrBuilder getPlacementOrBuilder() {
    if (criterionCase_ == 7) {
       return (com.google.ads.googleads.v14.common.PlacementInfo) criterion_;
    }
    return com.google.ads.googleads.v14.common.PlacementInfo.getDefaultInstance();
  }

  public static final int YOUTUBE_VIDEO_FIELD_NUMBER = 8;
  /**
   * <pre>
   * Immutable. YouTube Video.
   * </pre>
   *
   * <code>.google.ads.googleads.v14.common.YouTubeVideoInfo youtube_video = 8 [(.google.api.field_behavior) = IMMUTABLE];</code>
   * @return Whether the youtubeVideo field is set.
   */
  @java.lang.Override
  public boolean hasYoutubeVideo() {
    return criterionCase_ == 8;
  }
  /**
   * <pre>
   * Immutable. YouTube Video.
   * </pre>
   *
   * <code>.google.ads.googleads.v14.common.YouTubeVideoInfo youtube_video = 8 [(.google.api.field_behavior) = IMMUTABLE];</code>
   * @return The youtubeVideo.
   */
  @java.lang.Override
  public com.google.ads.googleads.v14.common.YouTubeVideoInfo getYoutubeVideo() {
    if (criterionCase_ == 8) {
       return (com.google.ads.googleads.v14.common.YouTubeVideoInfo) criterion_;
    }
    return com.google.ads.googleads.v14.common.YouTubeVideoInfo.getDefaultInstance();
  }
  /**
   * <pre>
   * Immutable. YouTube Video.
   * </pre>
   *
   * <code>.google.ads.googleads.v14.common.YouTubeVideoInfo youtube_video = 8 [(.google.api.field_behavior) = IMMUTABLE];</code>
   */
  @java.lang.Override
  public com.google.ads.googleads.v14.common.YouTubeVideoInfoOrBuilder getYoutubeVideoOrBuilder() {
    if (criterionCase_ == 8) {
       return (com.google.ads.googleads.v14.common.YouTubeVideoInfo) criterion_;
    }
    return com.google.ads.googleads.v14.common.YouTubeVideoInfo.getDefaultInstance();
  }

  public static final int YOUTUBE_CHANNEL_FIELD_NUMBER = 9;
  /**
   * <pre>
   * Immutable. YouTube Channel.
   * </pre>
   *
   * <code>.google.ads.googleads.v14.common.YouTubeChannelInfo youtube_channel = 9 [(.google.api.field_behavior) = IMMUTABLE];</code>
   * @return Whether the youtubeChannel field is set.
   */
  @java.lang.Override
  public boolean hasYoutubeChannel() {
    return criterionCase_ == 9;
  }
  /**
   * <pre>
   * Immutable. YouTube Channel.
   * </pre>
   *
   * <code>.google.ads.googleads.v14.common.YouTubeChannelInfo youtube_channel = 9 [(.google.api.field_behavior) = IMMUTABLE];</code>
   * @return The youtubeChannel.
   */
  @java.lang.Override
  public com.google.ads.googleads.v14.common.YouTubeChannelInfo getYoutubeChannel() {
    if (criterionCase_ == 9) {
       return (com.google.ads.googleads.v14.common.YouTubeChannelInfo) criterion_;
    }
    return com.google.ads.googleads.v14.common.YouTubeChannelInfo.getDefaultInstance();
  }
  /**
   * <pre>
   * Immutable. YouTube Channel.
   * </pre>
   *
   * <code>.google.ads.googleads.v14.common.YouTubeChannelInfo youtube_channel = 9 [(.google.api.field_behavior) = IMMUTABLE];</code>
   */
  @java.lang.Override
  public com.google.ads.googleads.v14.common.YouTubeChannelInfoOrBuilder getYoutubeChannelOrBuilder() {
    if (criterionCase_ == 9) {
       return (com.google.ads.googleads.v14.common.YouTubeChannelInfo) criterion_;
    }
    return com.google.ads.googleads.v14.common.YouTubeChannelInfo.getDefaultInstance();
  }

  public static final int NEGATIVE_KEYWORD_LIST_FIELD_NUMBER = 11;
  /**
   * <pre>
   * Immutable. NegativeKeywordList.
   * </pre>
   *
   * <code>.google.ads.googleads.v14.common.NegativeKeywordListInfo negative_keyword_list = 11 [(.google.api.field_behavior) = IMMUTABLE];</code>
   * @return Whether the negativeKeywordList field is set.
   */
  @java.lang.Override
  public boolean hasNegativeKeywordList() {
    return criterionCase_ == 11;
  }
  /**
   * <pre>
   * Immutable. NegativeKeywordList.
   * </pre>
   *
   * <code>.google.ads.googleads.v14.common.NegativeKeywordListInfo negative_keyword_list = 11 [(.google.api.field_behavior) = IMMUTABLE];</code>
   * @return The negativeKeywordList.
   */
  @java.lang.Override
  public com.google.ads.googleads.v14.common.NegativeKeywordListInfo getNegativeKeywordList() {
    if (criterionCase_ == 11) {
       return (com.google.ads.googleads.v14.common.NegativeKeywordListInfo) criterion_;
    }
    return com.google.ads.googleads.v14.common.NegativeKeywordListInfo.getDefaultInstance();
  }
  /**
   * <pre>
   * Immutable. NegativeKeywordList.
   * </pre>
   *
   * <code>.google.ads.googleads.v14.common.NegativeKeywordListInfo negative_keyword_list = 11 [(.google.api.field_behavior) = IMMUTABLE];</code>
   */
  @java.lang.Override
  public com.google.ads.googleads.v14.common.NegativeKeywordListInfoOrBuilder getNegativeKeywordListOrBuilder() {
    if (criterionCase_ == 11) {
       return (com.google.ads.googleads.v14.common.NegativeKeywordListInfo) criterion_;
    }
    return com.google.ads.googleads.v14.common.NegativeKeywordListInfo.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 (type_ != com.google.ads.googleads.v14.enums.CriterionTypeEnum.CriterionType.UNSPECIFIED.getNumber()) {
      output.writeEnum(3, type_);
    }
    if (criterionCase_ == 4) {
      output.writeMessage(4, (com.google.ads.googleads.v14.common.ContentLabelInfo) criterion_);
    }
    if (criterionCase_ == 5) {
      output.writeMessage(5, (com.google.ads.googleads.v14.common.MobileApplicationInfo) criterion_);
    }
    if (criterionCase_ == 6) {
      output.writeMessage(6, (com.google.ads.googleads.v14.common.MobileAppCategoryInfo) criterion_);
    }
    if (criterionCase_ == 7) {
      output.writeMessage(7, (com.google.ads.googleads.v14.common.PlacementInfo) criterion_);
    }
    if (criterionCase_ == 8) {
      output.writeMessage(8, (com.google.ads.googleads.v14.common.YouTubeVideoInfo) criterion_);
    }
    if (criterionCase_ == 9) {
      output.writeMessage(9, (com.google.ads.googleads.v14.common.YouTubeChannelInfo) criterion_);
    }
    if (((bitField0_ & 0x00000001) != 0)) {
      output.writeInt64(10, id_);
    }
    if (criterionCase_ == 11) {
      output.writeMessage(11, (com.google.ads.googleads.v14.common.NegativeKeywordListInfo) criterion_);
    }
    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 (type_ != com.google.ads.googleads.v14.enums.CriterionTypeEnum.CriterionType.UNSPECIFIED.getNumber()) {
      size += com.google.protobuf.CodedOutputStream
        .computeEnumSize(3, type_);
    }
    if (criterionCase_ == 4) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(4, (com.google.ads.googleads.v14.common.ContentLabelInfo) criterion_);
    }
    if (criterionCase_ == 5) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(5, (com.google.ads.googleads.v14.common.MobileApplicationInfo) criterion_);
    }
    if (criterionCase_ == 6) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(6, (com.google.ads.googleads.v14.common.MobileAppCategoryInfo) criterion_);
    }
    if (criterionCase_ == 7) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(7, (com.google.ads.googleads.v14.common.PlacementInfo) criterion_);
    }
    if (criterionCase_ == 8) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(8, (com.google.ads.googleads.v14.common.YouTubeVideoInfo) criterion_);
    }
    if (criterionCase_ == 9) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(9, (com.google.ads.googleads.v14.common.YouTubeChannelInfo) criterion_);
    }
    if (((bitField0_ & 0x00000001) != 0)) {
      size += com.google.protobuf.CodedOutputStream
        .computeInt64Size(10, id_);
    }
    if (criterionCase_ == 11) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(11, (com.google.ads.googleads.v14.common.NegativeKeywordListInfo) criterion_);
    }
    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.resources.CustomerNegativeCriterion)) {
      return super.equals(obj);
    }
    com.google.ads.googleads.v14.resources.CustomerNegativeCriterion other = (com.google.ads.googleads.v14.resources.CustomerNegativeCriterion) obj;

    if (!getResourceName()
        .equals(other.getResourceName())) return false;
    if (hasId() != other.hasId()) return false;
    if (hasId()) {
      if (getId()
          != other.getId()) return false;
    }
    if (type_ != other.type_) return false;
    if (!getCriterionCase().equals(other.getCriterionCase())) return false;
    switch (criterionCase_) {
      case 4:
        if (!getContentLabel()
            .equals(other.getContentLabel())) return false;
        break;
      case 5:
        if (!getMobileApplication()
            .equals(other.getMobileApplication())) return false;
        break;
      case 6:
        if (!getMobileAppCategory()
            .equals(other.getMobileAppCategory())) return false;
        break;
      case 7:
        if (!getPlacement()
            .equals(other.getPlacement())) return false;
        break;
      case 8:
        if (!getYoutubeVideo()
            .equals(other.getYoutubeVideo())) return false;
        break;
      case 9:
        if (!getYoutubeChannel()
            .equals(other.getYoutubeChannel())) return false;
        break;
      case 11:
        if (!getNegativeKeywordList()
            .equals(other.getNegativeKeywordList())) 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();
    if (hasId()) {
      hash = (37 * hash) + ID_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getId());
    }
    hash = (37 * hash) + TYPE_FIELD_NUMBER;
    hash = (53 * hash) + type_;
    switch (criterionCase_) {
      case 4:
        hash = (37 * hash) + CONTENT_LABEL_FIELD_NUMBER;
        hash = (53 * hash) + getContentLabel().hashCode();
        break;
      case 5:
        hash = (37 * hash) + MOBILE_APPLICATION_FIELD_NUMBER;
        hash = (53 * hash) + getMobileApplication().hashCode();
        break;
      case 6:
        hash = (37 * hash) + MOBILE_APP_CATEGORY_FIELD_NUMBER;
        hash = (53 * hash) + getMobileAppCategory().hashCode();
        break;
      case 7:
        hash = (37 * hash) + PLACEMENT_FIELD_NUMBER;
        hash = (53 * hash) + getPlacement().hashCode();
        break;
      case 8:
        hash = (37 * hash) + YOUTUBE_VIDEO_FIELD_NUMBER;
        hash = (53 * hash) + getYoutubeVideo().hashCode();
        break;
      case 9:
        hash = (37 * hash) + YOUTUBE_CHANNEL_FIELD_NUMBER;
        hash = (53 * hash) + getYoutubeChannel().hashCode();
        break;
      case 11:
        hash = (37 * hash) + NEGATIVE_KEYWORD_LIST_FIELD_NUMBER;
        hash = (53 * hash) + getNegativeKeywordList().hashCode();
        break;
      case 0:
      default:
    }
    hash = (29 * hash) + getUnknownFields().hashCode();
    memoizedHashCode = hash;
    return hash;
  }

  public static com.google.ads.googleads.v14.resources.CustomerNegativeCriterion parseFrom(
      java.nio.ByteBuffer data)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data);
  }
  public static com.google.ads.googleads.v14.resources.CustomerNegativeCriterion 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.resources.CustomerNegativeCriterion parseFrom(
      com.google.protobuf.ByteString data)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data);
  }
  public static com.google.ads.googleads.v14.resources.CustomerNegativeCriterion 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.resources.CustomerNegativeCriterion parseFrom(byte[] data)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data);
  }
  public static com.google.ads.googleads.v14.resources.CustomerNegativeCriterion 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.resources.CustomerNegativeCriterion parseFrom(java.io.InputStream input)
      throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3
        .parseWithIOException(PARSER, input);
  }
  public static com.google.ads.googleads.v14.resources.CustomerNegativeCriterion 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.resources.CustomerNegativeCriterion parseDelimitedFrom(java.io.InputStream input)
      throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3
        .parseDelimitedWithIOException(PARSER, input);
  }

  public static com.google.ads.googleads.v14.resources.CustomerNegativeCriterion 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.resources.CustomerNegativeCriterion 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.resources.CustomerNegativeCriterion 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.resources.CustomerNegativeCriterion 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>
   * A negative criterion for exclusions at the customer level.
   * </pre>
   *
   * Protobuf type {@code google.ads.googleads.v14.resources.CustomerNegativeCriterion}
   */
  public static final class Builder extends
      com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
      // @@protoc_insertion_point(builder_implements:google.ads.googleads.v14.resources.CustomerNegativeCriterion)
      com.google.ads.googleads.v14.resources.CustomerNegativeCriterionOrBuilder {
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.google.ads.googleads.v14.resources.CustomerNegativeCriterionProto.internal_static_google_ads_googleads_v14_resources_CustomerNegativeCriterion_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.google.ads.googleads.v14.resources.CustomerNegativeCriterionProto.internal_static_google_ads_googleads_v14_resources_CustomerNegativeCriterion_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.google.ads.googleads.v14.resources.CustomerNegativeCriterion.class, com.google.ads.googleads.v14.resources.CustomerNegativeCriterion.Builder.class);
    }

    // Construct using com.google.ads.googleads.v14.resources.CustomerNegativeCriterion.newBuilder()
    private Builder() {

    }

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

    }
    @java.lang.Override
    public Builder clear() {
      super.clear();
      bitField0_ = 0;
      resourceName_ = "";
      id_ = 0L;
      type_ = 0;
      if (contentLabelBuilder_ != null) {
        contentLabelBuilder_.clear();
      }
      if (mobileApplicationBuilder_ != null) {
        mobileApplicationBuilder_.clear();
      }
      if (mobileAppCategoryBuilder_ != null) {
        mobileAppCategoryBuilder_.clear();
      }
      if (placementBuilder_ != null) {
        placementBuilder_.clear();
      }
      if (youtubeVideoBuilder_ != null) {
        youtubeVideoBuilder_.clear();
      }
      if (youtubeChannelBuilder_ != null) {
        youtubeChannelBuilder_.clear();
      }
      if (negativeKeywordListBuilder_ != null) {
        negativeKeywordListBuilder_.clear();
      }
      criterionCase_ = 0;
      criterion_ = null;
      return this;
    }

    @java.lang.Override
    public com.google.protobuf.Descriptors.Descriptor
        getDescriptorForType() {
      return com.google.ads.googleads.v14.resources.CustomerNegativeCriterionProto.internal_static_google_ads_googleads_v14_resources_CustomerNegativeCriterion_descriptor;
    }

    @java.lang.Override
    public com.google.ads.googleads.v14.resources.CustomerNegativeCriterion getDefaultInstanceForType() {
      return com.google.ads.googleads.v14.resources.CustomerNegativeCriterion.getDefaultInstance();
    }

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

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

    private void buildPartial0(com.google.ads.googleads.v14.resources.CustomerNegativeCriterion result) {
      int from_bitField0_ = bitField0_;
      if (((from_bitField0_ & 0x00000001) != 0)) {
        result.resourceName_ = resourceName_;
      }
      int to_bitField0_ = 0;
      if (((from_bitField0_ & 0x00000002) != 0)) {
        result.id_ = id_;
        to_bitField0_ |= 0x00000001;
      }
      if (((from_bitField0_ & 0x00000004) != 0)) {
        result.type_ = type_;
      }
      result.bitField0_ |= to_bitField0_;
    }

    private void buildPartialOneofs(com.google.ads.googleads.v14.resources.CustomerNegativeCriterion result) {
      result.criterionCase_ = criterionCase_;
      result.criterion_ = this.criterion_;
      if (criterionCase_ == 4 &&
          contentLabelBuilder_ != null) {
        result.criterion_ = contentLabelBuilder_.build();
      }
      if (criterionCase_ == 5 &&
          mobileApplicationBuilder_ != null) {
        result.criterion_ = mobileApplicationBuilder_.build();
      }
      if (criterionCase_ == 6 &&
          mobileAppCategoryBuilder_ != null) {
        result.criterion_ = mobileAppCategoryBuilder_.build();
      }
      if (criterionCase_ == 7 &&
          placementBuilder_ != null) {
        result.criterion_ = placementBuilder_.build();
      }
      if (criterionCase_ == 8 &&
          youtubeVideoBuilder_ != null) {
        result.criterion_ = youtubeVideoBuilder_.build();
      }
      if (criterionCase_ == 9 &&
          youtubeChannelBuilder_ != null) {
        result.criterion_ = youtubeChannelBuilder_.build();
      }
      if (criterionCase_ == 11 &&
          negativeKeywordListBuilder_ != null) {
        result.criterion_ = negativeKeywordListBuilder_.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.resources.CustomerNegativeCriterion) {
        return mergeFrom((com.google.ads.googleads.v14.resources.CustomerNegativeCriterion)other);
      } else {
        super.mergeFrom(other);
        return this;
      }
    }

    public Builder mergeFrom(com.google.ads.googleads.v14.resources.CustomerNegativeCriterion other) {
      if (other == com.google.ads.googleads.v14.resources.CustomerNegativeCriterion.getDefaultInstance()) return this;
      if (!other.getResourceName().isEmpty()) {
        resourceName_ = other.resourceName_;
        bitField0_ |= 0x00000001;
        onChanged();
      }
      if (other.hasId()) {
        setId(other.getId());
      }
      if (other.type_ != 0) {
        setTypeValue(other.getTypeValue());
      }
      switch (other.getCriterionCase()) {
        case CONTENT_LABEL: {
          mergeContentLabel(other.getContentLabel());
          break;
        }
        case MOBILE_APPLICATION: {
          mergeMobileApplication(other.getMobileApplication());
          break;
        }
        case MOBILE_APP_CATEGORY: {
          mergeMobileAppCategory(other.getMobileAppCategory());
          break;
        }
        case PLACEMENT: {
          mergePlacement(other.getPlacement());
          break;
        }
        case YOUTUBE_VIDEO: {
          mergeYoutubeVideo(other.getYoutubeVideo());
          break;
        }
        case YOUTUBE_CHANNEL: {
          mergeYoutubeChannel(other.getYoutubeChannel());
          break;
        }
        case NEGATIVE_KEYWORD_LIST: {
          mergeNegativeKeywordList(other.getNegativeKeywordList());
          break;
        }
        case CRITERION_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 24: {
              type_ = input.readEnum();
              bitField0_ |= 0x00000004;
              break;
            } // case 24
            case 34: {
              input.readMessage(
                  getContentLabelFieldBuilder().getBuilder(),
                  extensionRegistry);
              criterionCase_ = 4;
              break;
            } // case 34
            case 42: {
              input.readMessage(
                  getMobileApplicationFieldBuilder().getBuilder(),
                  extensionRegistry);
              criterionCase_ = 5;
              break;
            } // case 42
            case 50: {
              input.readMessage(
                  getMobileAppCategoryFieldBuilder().getBuilder(),
                  extensionRegistry);
              criterionCase_ = 6;
              break;
            } // case 50
            case 58: {
              input.readMessage(
                  getPlacementFieldBuilder().getBuilder(),
                  extensionRegistry);
              criterionCase_ = 7;
              break;
            } // case 58
            case 66: {
              input.readMessage(
                  getYoutubeVideoFieldBuilder().getBuilder(),
                  extensionRegistry);
              criterionCase_ = 8;
              break;
            } // case 66
            case 74: {
              input.readMessage(
                  getYoutubeChannelFieldBuilder().getBuilder(),
                  extensionRegistry);
              criterionCase_ = 9;
              break;
            } // case 74
            case 80: {
              id_ = input.readInt64();
              bitField0_ |= 0x00000002;
              break;
            } // case 80
            case 90: {
              input.readMessage(
                  getNegativeKeywordListFieldBuilder().getBuilder(),
                  extensionRegistry);
              criterionCase_ = 11;
              break;
            } // case 90
            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 criterionCase_ = 0;
    private java.lang.Object criterion_;
    public CriterionCase
        getCriterionCase() {
      return CriterionCase.forNumber(
          criterionCase_);
    }

    public Builder clearCriterion() {
      criterionCase_ = 0;
      criterion_ = null;
      onChanged();
      return this;
    }

    private int bitField0_;

    private java.lang.Object resourceName_ = "";
    /**
     * <pre>
     * Immutable. The resource name of the customer negative criterion.
     * Customer negative criterion resource names have the form:
     *
     * `customers/{customer_id}/customerNegativeCriteria/{criterion_id}`
     * </pre>
     *
     * <code>string resource_name = 1 [(.google.api.field_behavior) = IMMUTABLE, (.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>
     * Immutable. The resource name of the customer negative criterion.
     * Customer negative criterion resource names have the form:
     *
     * `customers/{customer_id}/customerNegativeCriteria/{criterion_id}`
     * </pre>
     *
     * <code>string resource_name = 1 [(.google.api.field_behavior) = IMMUTABLE, (.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>
     * Immutable. The resource name of the customer negative criterion.
     * Customer negative criterion resource names have the form:
     *
     * `customers/{customer_id}/customerNegativeCriteria/{criterion_id}`
     * </pre>
     *
     * <code>string resource_name = 1 [(.google.api.field_behavior) = IMMUTABLE, (.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>
     * Immutable. The resource name of the customer negative criterion.
     * Customer negative criterion resource names have the form:
     *
     * `customers/{customer_id}/customerNegativeCriteria/{criterion_id}`
     * </pre>
     *
     * <code>string resource_name = 1 [(.google.api.field_behavior) = IMMUTABLE, (.google.api.resource_reference) = { ... }</code>
     * @return This builder for chaining.
     */
    public Builder clearResourceName() {
      resourceName_ = getDefaultInstance().getResourceName();
      bitField0_ = (bitField0_ & ~0x00000001);
      onChanged();
      return this;
    }
    /**
     * <pre>
     * Immutable. The resource name of the customer negative criterion.
     * Customer negative criterion resource names have the form:
     *
     * `customers/{customer_id}/customerNegativeCriteria/{criterion_id}`
     * </pre>
     *
     * <code>string resource_name = 1 [(.google.api.field_behavior) = IMMUTABLE, (.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 long id_ ;
    /**
     * <pre>
     * Output only. The ID of the criterion.
     * </pre>
     *
     * <code>optional int64 id = 10 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
     * @return Whether the id field is set.
     */
    @java.lang.Override
    public boolean hasId() {
      return ((bitField0_ & 0x00000002) != 0);
    }
    /**
     * <pre>
     * Output only. The ID of the criterion.
     * </pre>
     *
     * <code>optional int64 id = 10 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
     * @return The id.
     */
    @java.lang.Override
    public long getId() {
      return id_;
    }
    /**
     * <pre>
     * Output only. The ID of the criterion.
     * </pre>
     *
     * <code>optional int64 id = 10 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
     * @param value The id to set.
     * @return This builder for chaining.
     */
    public Builder setId(long value) {

      id_ = value;
      bitField0_ |= 0x00000002;
      onChanged();
      return this;
    }
    /**
     * <pre>
     * Output only. The ID of the criterion.
     * </pre>
     *
     * <code>optional int64 id = 10 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
     * @return This builder for chaining.
     */
    public Builder clearId() {
      bitField0_ = (bitField0_ & ~0x00000002);
      id_ = 0L;
      onChanged();
      return this;
    }

    private int type_ = 0;
    /**
     * <pre>
     * Output only. The type of the criterion.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.enums.CriterionTypeEnum.CriterionType type = 3 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
     * @return The enum numeric value on the wire for type.
     */
    @java.lang.Override public int getTypeValue() {
      return type_;
    }
    /**
     * <pre>
     * Output only. The type of the criterion.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.enums.CriterionTypeEnum.CriterionType type = 3 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
     * @param value The enum numeric value on the wire for type to set.
     * @return This builder for chaining.
     */
    public Builder setTypeValue(int value) {
      type_ = value;
      bitField0_ |= 0x00000004;
      onChanged();
      return this;
    }
    /**
     * <pre>
     * Output only. The type of the criterion.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.enums.CriterionTypeEnum.CriterionType type = 3 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
     * @return The type.
     */
    @java.lang.Override
    public com.google.ads.googleads.v14.enums.CriterionTypeEnum.CriterionType getType() {
      com.google.ads.googleads.v14.enums.CriterionTypeEnum.CriterionType result = com.google.ads.googleads.v14.enums.CriterionTypeEnum.CriterionType.forNumber(type_);
      return result == null ? com.google.ads.googleads.v14.enums.CriterionTypeEnum.CriterionType.UNRECOGNIZED : result;
    }
    /**
     * <pre>
     * Output only. The type of the criterion.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.enums.CriterionTypeEnum.CriterionType type = 3 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
     * @param value The type to set.
     * @return This builder for chaining.
     */
    public Builder setType(com.google.ads.googleads.v14.enums.CriterionTypeEnum.CriterionType value) {
      if (value == null) {
        throw new NullPointerException();
      }
      bitField0_ |= 0x00000004;
      type_ = value.getNumber();
      onChanged();
      return this;
    }
    /**
     * <pre>
     * Output only. The type of the criterion.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.enums.CriterionTypeEnum.CriterionType type = 3 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
     * @return This builder for chaining.
     */
    public Builder clearType() {
      bitField0_ = (bitField0_ & ~0x00000004);
      type_ = 0;
      onChanged();
      return this;
    }

    private com.google.protobuf.SingleFieldBuilderV3<
        com.google.ads.googleads.v14.common.ContentLabelInfo, com.google.ads.googleads.v14.common.ContentLabelInfo.Builder, com.google.ads.googleads.v14.common.ContentLabelInfoOrBuilder> contentLabelBuilder_;
    /**
     * <pre>
     * Immutable. ContentLabel.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.common.ContentLabelInfo content_label = 4 [(.google.api.field_behavior) = IMMUTABLE];</code>
     * @return Whether the contentLabel field is set.
     */
    @java.lang.Override
    public boolean hasContentLabel() {
      return criterionCase_ == 4;
    }
    /**
     * <pre>
     * Immutable. ContentLabel.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.common.ContentLabelInfo content_label = 4 [(.google.api.field_behavior) = IMMUTABLE];</code>
     * @return The contentLabel.
     */
    @java.lang.Override
    public com.google.ads.googleads.v14.common.ContentLabelInfo getContentLabel() {
      if (contentLabelBuilder_ == null) {
        if (criterionCase_ == 4) {
          return (com.google.ads.googleads.v14.common.ContentLabelInfo) criterion_;
        }
        return com.google.ads.googleads.v14.common.ContentLabelInfo.getDefaultInstance();
      } else {
        if (criterionCase_ == 4) {
          return contentLabelBuilder_.getMessage();
        }
        return com.google.ads.googleads.v14.common.ContentLabelInfo.getDefaultInstance();
      }
    }
    /**
     * <pre>
     * Immutable. ContentLabel.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.common.ContentLabelInfo content_label = 4 [(.google.api.field_behavior) = IMMUTABLE];</code>
     */
    public Builder setContentLabel(com.google.ads.googleads.v14.common.ContentLabelInfo value) {
      if (contentLabelBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        criterion_ = value;
        onChanged();
      } else {
        contentLabelBuilder_.setMessage(value);
      }
      criterionCase_ = 4;
      return this;
    }
    /**
     * <pre>
     * Immutable. ContentLabel.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.common.ContentLabelInfo content_label = 4 [(.google.api.field_behavior) = IMMUTABLE];</code>
     */
    public Builder setContentLabel(
        com.google.ads.googleads.v14.common.ContentLabelInfo.Builder builderForValue) {
      if (contentLabelBuilder_ == null) {
        criterion_ = builderForValue.build();
        onChanged();
      } else {
        contentLabelBuilder_.setMessage(builderForValue.build());
      }
      criterionCase_ = 4;
      return this;
    }
    /**
     * <pre>
     * Immutable. ContentLabel.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.common.ContentLabelInfo content_label = 4 [(.google.api.field_behavior) = IMMUTABLE];</code>
     */
    public Builder mergeContentLabel(com.google.ads.googleads.v14.common.ContentLabelInfo value) {
      if (contentLabelBuilder_ == null) {
        if (criterionCase_ == 4 &&
            criterion_ != com.google.ads.googleads.v14.common.ContentLabelInfo.getDefaultInstance()) {
          criterion_ = com.google.ads.googleads.v14.common.ContentLabelInfo.newBuilder((com.google.ads.googleads.v14.common.ContentLabelInfo) criterion_)
              .mergeFrom(value).buildPartial();
        } else {
          criterion_ = value;
        }
        onChanged();
      } else {
        if (criterionCase_ == 4) {
          contentLabelBuilder_.mergeFrom(value);
        } else {
          contentLabelBuilder_.setMessage(value);
        }
      }
      criterionCase_ = 4;
      return this;
    }
    /**
     * <pre>
     * Immutable. ContentLabel.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.common.ContentLabelInfo content_label = 4 [(.google.api.field_behavior) = IMMUTABLE];</code>
     */
    public Builder clearContentLabel() {
      if (contentLabelBuilder_ == null) {
        if (criterionCase_ == 4) {
          criterionCase_ = 0;
          criterion_ = null;
          onChanged();
        }
      } else {
        if (criterionCase_ == 4) {
          criterionCase_ = 0;
          criterion_ = null;
        }
        contentLabelBuilder_.clear();
      }
      return this;
    }
    /**
     * <pre>
     * Immutable. ContentLabel.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.common.ContentLabelInfo content_label = 4 [(.google.api.field_behavior) = IMMUTABLE];</code>
     */
    public com.google.ads.googleads.v14.common.ContentLabelInfo.Builder getContentLabelBuilder() {
      return getContentLabelFieldBuilder().getBuilder();
    }
    /**
     * <pre>
     * Immutable. ContentLabel.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.common.ContentLabelInfo content_label = 4 [(.google.api.field_behavior) = IMMUTABLE];</code>
     */
    @java.lang.Override
    public com.google.ads.googleads.v14.common.ContentLabelInfoOrBuilder getContentLabelOrBuilder() {
      if ((criterionCase_ == 4) && (contentLabelBuilder_ != null)) {
        return contentLabelBuilder_.getMessageOrBuilder();
      } else {
        if (criterionCase_ == 4) {
          return (com.google.ads.googleads.v14.common.ContentLabelInfo) criterion_;
        }
        return com.google.ads.googleads.v14.common.ContentLabelInfo.getDefaultInstance();
      }
    }
    /**
     * <pre>
     * Immutable. ContentLabel.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.common.ContentLabelInfo content_label = 4 [(.google.api.field_behavior) = IMMUTABLE];</code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
        com.google.ads.googleads.v14.common.ContentLabelInfo, com.google.ads.googleads.v14.common.ContentLabelInfo.Builder, com.google.ads.googleads.v14.common.ContentLabelInfoOrBuilder> 
        getContentLabelFieldBuilder() {
      if (contentLabelBuilder_ == null) {
        if (!(criterionCase_ == 4)) {
          criterion_ = com.google.ads.googleads.v14.common.ContentLabelInfo.getDefaultInstance();
        }
        contentLabelBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
            com.google.ads.googleads.v14.common.ContentLabelInfo, com.google.ads.googleads.v14.common.ContentLabelInfo.Builder, com.google.ads.googleads.v14.common.ContentLabelInfoOrBuilder>(
                (com.google.ads.googleads.v14.common.ContentLabelInfo) criterion_,
                getParentForChildren(),
                isClean());
        criterion_ = null;
      }
      criterionCase_ = 4;
      onChanged();
      return contentLabelBuilder_;
    }

    private com.google.protobuf.SingleFieldBuilderV3<
        com.google.ads.googleads.v14.common.MobileApplicationInfo, com.google.ads.googleads.v14.common.MobileApplicationInfo.Builder, com.google.ads.googleads.v14.common.MobileApplicationInfoOrBuilder> mobileApplicationBuilder_;
    /**
     * <pre>
     * Immutable. MobileApplication.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.common.MobileApplicationInfo mobile_application = 5 [(.google.api.field_behavior) = IMMUTABLE];</code>
     * @return Whether the mobileApplication field is set.
     */
    @java.lang.Override
    public boolean hasMobileApplication() {
      return criterionCase_ == 5;
    }
    /**
     * <pre>
     * Immutable. MobileApplication.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.common.MobileApplicationInfo mobile_application = 5 [(.google.api.field_behavior) = IMMUTABLE];</code>
     * @return The mobileApplication.
     */
    @java.lang.Override
    public com.google.ads.googleads.v14.common.MobileApplicationInfo getMobileApplication() {
      if (mobileApplicationBuilder_ == null) {
        if (criterionCase_ == 5) {
          return (com.google.ads.googleads.v14.common.MobileApplicationInfo) criterion_;
        }
        return com.google.ads.googleads.v14.common.MobileApplicationInfo.getDefaultInstance();
      } else {
        if (criterionCase_ == 5) {
          return mobileApplicationBuilder_.getMessage();
        }
        return com.google.ads.googleads.v14.common.MobileApplicationInfo.getDefaultInstance();
      }
    }
    /**
     * <pre>
     * Immutable. MobileApplication.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.common.MobileApplicationInfo mobile_application = 5 [(.google.api.field_behavior) = IMMUTABLE];</code>
     */
    public Builder setMobileApplication(com.google.ads.googleads.v14.common.MobileApplicationInfo value) {
      if (mobileApplicationBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        criterion_ = value;
        onChanged();
      } else {
        mobileApplicationBuilder_.setMessage(value);
      }
      criterionCase_ = 5;
      return this;
    }
    /**
     * <pre>
     * Immutable. MobileApplication.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.common.MobileApplicationInfo mobile_application = 5 [(.google.api.field_behavior) = IMMUTABLE];</code>
     */
    public Builder setMobileApplication(
        com.google.ads.googleads.v14.common.MobileApplicationInfo.Builder builderForValue) {
      if (mobileApplicationBuilder_ == null) {
        criterion_ = builderForValue.build();
        onChanged();
      } else {
        mobileApplicationBuilder_.setMessage(builderForValue.build());
      }
      criterionCase_ = 5;
      return this;
    }
    /**
     * <pre>
     * Immutable. MobileApplication.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.common.MobileApplicationInfo mobile_application = 5 [(.google.api.field_behavior) = IMMUTABLE];</code>
     */
    public Builder mergeMobileApplication(com.google.ads.googleads.v14.common.MobileApplicationInfo value) {
      if (mobileApplicationBuilder_ == null) {
        if (criterionCase_ == 5 &&
            criterion_ != com.google.ads.googleads.v14.common.MobileApplicationInfo.getDefaultInstance()) {
          criterion_ = com.google.ads.googleads.v14.common.MobileApplicationInfo.newBuilder((com.google.ads.googleads.v14.common.MobileApplicationInfo) criterion_)
              .mergeFrom(value).buildPartial();
        } else {
          criterion_ = value;
        }
        onChanged();
      } else {
        if (criterionCase_ == 5) {
          mobileApplicationBuilder_.mergeFrom(value);
        } else {
          mobileApplicationBuilder_.setMessage(value);
        }
      }
      criterionCase_ = 5;
      return this;
    }
    /**
     * <pre>
     * Immutable. MobileApplication.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.common.MobileApplicationInfo mobile_application = 5 [(.google.api.field_behavior) = IMMUTABLE];</code>
     */
    public Builder clearMobileApplication() {
      if (mobileApplicationBuilder_ == null) {
        if (criterionCase_ == 5) {
          criterionCase_ = 0;
          criterion_ = null;
          onChanged();
        }
      } else {
        if (criterionCase_ == 5) {
          criterionCase_ = 0;
          criterion_ = null;
        }
        mobileApplicationBuilder_.clear();
      }
      return this;
    }
    /**
     * <pre>
     * Immutable. MobileApplication.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.common.MobileApplicationInfo mobile_application = 5 [(.google.api.field_behavior) = IMMUTABLE];</code>
     */
    public com.google.ads.googleads.v14.common.MobileApplicationInfo.Builder getMobileApplicationBuilder() {
      return getMobileApplicationFieldBuilder().getBuilder();
    }
    /**
     * <pre>
     * Immutable. MobileApplication.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.common.MobileApplicationInfo mobile_application = 5 [(.google.api.field_behavior) = IMMUTABLE];</code>
     */
    @java.lang.Override
    public com.google.ads.googleads.v14.common.MobileApplicationInfoOrBuilder getMobileApplicationOrBuilder() {
      if ((criterionCase_ == 5) && (mobileApplicationBuilder_ != null)) {
        return mobileApplicationBuilder_.getMessageOrBuilder();
      } else {
        if (criterionCase_ == 5) {
          return (com.google.ads.googleads.v14.common.MobileApplicationInfo) criterion_;
        }
        return com.google.ads.googleads.v14.common.MobileApplicationInfo.getDefaultInstance();
      }
    }
    /**
     * <pre>
     * Immutable. MobileApplication.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.common.MobileApplicationInfo mobile_application = 5 [(.google.api.field_behavior) = IMMUTABLE];</code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
        com.google.ads.googleads.v14.common.MobileApplicationInfo, com.google.ads.googleads.v14.common.MobileApplicationInfo.Builder, com.google.ads.googleads.v14.common.MobileApplicationInfoOrBuilder> 
        getMobileApplicationFieldBuilder() {
      if (mobileApplicationBuilder_ == null) {
        if (!(criterionCase_ == 5)) {
          criterion_ = com.google.ads.googleads.v14.common.MobileApplicationInfo.getDefaultInstance();
        }
        mobileApplicationBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
            com.google.ads.googleads.v14.common.MobileApplicationInfo, com.google.ads.googleads.v14.common.MobileApplicationInfo.Builder, com.google.ads.googleads.v14.common.MobileApplicationInfoOrBuilder>(
                (com.google.ads.googleads.v14.common.MobileApplicationInfo) criterion_,
                getParentForChildren(),
                isClean());
        criterion_ = null;
      }
      criterionCase_ = 5;
      onChanged();
      return mobileApplicationBuilder_;
    }

    private com.google.protobuf.SingleFieldBuilderV3<
        com.google.ads.googleads.v14.common.MobileAppCategoryInfo, com.google.ads.googleads.v14.common.MobileAppCategoryInfo.Builder, com.google.ads.googleads.v14.common.MobileAppCategoryInfoOrBuilder> mobileAppCategoryBuilder_;
    /**
     * <pre>
     * Immutable. MobileAppCategory.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.common.MobileAppCategoryInfo mobile_app_category = 6 [(.google.api.field_behavior) = IMMUTABLE];</code>
     * @return Whether the mobileAppCategory field is set.
     */
    @java.lang.Override
    public boolean hasMobileAppCategory() {
      return criterionCase_ == 6;
    }
    /**
     * <pre>
     * Immutable. MobileAppCategory.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.common.MobileAppCategoryInfo mobile_app_category = 6 [(.google.api.field_behavior) = IMMUTABLE];</code>
     * @return The mobileAppCategory.
     */
    @java.lang.Override
    public com.google.ads.googleads.v14.common.MobileAppCategoryInfo getMobileAppCategory() {
      if (mobileAppCategoryBuilder_ == null) {
        if (criterionCase_ == 6) {
          return (com.google.ads.googleads.v14.common.MobileAppCategoryInfo) criterion_;
        }
        return com.google.ads.googleads.v14.common.MobileAppCategoryInfo.getDefaultInstance();
      } else {
        if (criterionCase_ == 6) {
          return mobileAppCategoryBuilder_.getMessage();
        }
        return com.google.ads.googleads.v14.common.MobileAppCategoryInfo.getDefaultInstance();
      }
    }
    /**
     * <pre>
     * Immutable. MobileAppCategory.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.common.MobileAppCategoryInfo mobile_app_category = 6 [(.google.api.field_behavior) = IMMUTABLE];</code>
     */
    public Builder setMobileAppCategory(com.google.ads.googleads.v14.common.MobileAppCategoryInfo value) {
      if (mobileAppCategoryBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        criterion_ = value;
        onChanged();
      } else {
        mobileAppCategoryBuilder_.setMessage(value);
      }
      criterionCase_ = 6;
      return this;
    }
    /**
     * <pre>
     * Immutable. MobileAppCategory.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.common.MobileAppCategoryInfo mobile_app_category = 6 [(.google.api.field_behavior) = IMMUTABLE];</code>
     */
    public Builder setMobileAppCategory(
        com.google.ads.googleads.v14.common.MobileAppCategoryInfo.Builder builderForValue) {
      if (mobileAppCategoryBuilder_ == null) {
        criterion_ = builderForValue.build();
        onChanged();
      } else {
        mobileAppCategoryBuilder_.setMessage(builderForValue.build());
      }
      criterionCase_ = 6;
      return this;
    }
    /**
     * <pre>
     * Immutable. MobileAppCategory.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.common.MobileAppCategoryInfo mobile_app_category = 6 [(.google.api.field_behavior) = IMMUTABLE];</code>
     */
    public Builder mergeMobileAppCategory(com.google.ads.googleads.v14.common.MobileAppCategoryInfo value) {
      if (mobileAppCategoryBuilder_ == null) {
        if (criterionCase_ == 6 &&
            criterion_ != com.google.ads.googleads.v14.common.MobileAppCategoryInfo.getDefaultInstance()) {
          criterion_ = com.google.ads.googleads.v14.common.MobileAppCategoryInfo.newBuilder((com.google.ads.googleads.v14.common.MobileAppCategoryInfo) criterion_)
              .mergeFrom(value).buildPartial();
        } else {
          criterion_ = value;
        }
        onChanged();
      } else {
        if (criterionCase_ == 6) {
          mobileAppCategoryBuilder_.mergeFrom(value);
        } else {
          mobileAppCategoryBuilder_.setMessage(value);
        }
      }
      criterionCase_ = 6;
      return this;
    }
    /**
     * <pre>
     * Immutable. MobileAppCategory.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.common.MobileAppCategoryInfo mobile_app_category = 6 [(.google.api.field_behavior) = IMMUTABLE];</code>
     */
    public Builder clearMobileAppCategory() {
      if (mobileAppCategoryBuilder_ == null) {
        if (criterionCase_ == 6) {
          criterionCase_ = 0;
          criterion_ = null;
          onChanged();
        }
      } else {
        if (criterionCase_ == 6) {
          criterionCase_ = 0;
          criterion_ = null;
        }
        mobileAppCategoryBuilder_.clear();
      }
      return this;
    }
    /**
     * <pre>
     * Immutable. MobileAppCategory.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.common.MobileAppCategoryInfo mobile_app_category = 6 [(.google.api.field_behavior) = IMMUTABLE];</code>
     */
    public com.google.ads.googleads.v14.common.MobileAppCategoryInfo.Builder getMobileAppCategoryBuilder() {
      return getMobileAppCategoryFieldBuilder().getBuilder();
    }
    /**
     * <pre>
     * Immutable. MobileAppCategory.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.common.MobileAppCategoryInfo mobile_app_category = 6 [(.google.api.field_behavior) = IMMUTABLE];</code>
     */
    @java.lang.Override
    public com.google.ads.googleads.v14.common.MobileAppCategoryInfoOrBuilder getMobileAppCategoryOrBuilder() {
      if ((criterionCase_ == 6) && (mobileAppCategoryBuilder_ != null)) {
        return mobileAppCategoryBuilder_.getMessageOrBuilder();
      } else {
        if (criterionCase_ == 6) {
          return (com.google.ads.googleads.v14.common.MobileAppCategoryInfo) criterion_;
        }
        return com.google.ads.googleads.v14.common.MobileAppCategoryInfo.getDefaultInstance();
      }
    }
    /**
     * <pre>
     * Immutable. MobileAppCategory.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.common.MobileAppCategoryInfo mobile_app_category = 6 [(.google.api.field_behavior) = IMMUTABLE];</code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
        com.google.ads.googleads.v14.common.MobileAppCategoryInfo, com.google.ads.googleads.v14.common.MobileAppCategoryInfo.Builder, com.google.ads.googleads.v14.common.MobileAppCategoryInfoOrBuilder> 
        getMobileAppCategoryFieldBuilder() {
      if (mobileAppCategoryBuilder_ == null) {
        if (!(criterionCase_ == 6)) {
          criterion_ = com.google.ads.googleads.v14.common.MobileAppCategoryInfo.getDefaultInstance();
        }
        mobileAppCategoryBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
            com.google.ads.googleads.v14.common.MobileAppCategoryInfo, com.google.ads.googleads.v14.common.MobileAppCategoryInfo.Builder, com.google.ads.googleads.v14.common.MobileAppCategoryInfoOrBuilder>(
                (com.google.ads.googleads.v14.common.MobileAppCategoryInfo) criterion_,
                getParentForChildren(),
                isClean());
        criterion_ = null;
      }
      criterionCase_ = 6;
      onChanged();
      return mobileAppCategoryBuilder_;
    }

    private com.google.protobuf.SingleFieldBuilderV3<
        com.google.ads.googleads.v14.common.PlacementInfo, com.google.ads.googleads.v14.common.PlacementInfo.Builder, com.google.ads.googleads.v14.common.PlacementInfoOrBuilder> placementBuilder_;
    /**
     * <pre>
     * Immutable. Placement.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.common.PlacementInfo placement = 7 [(.google.api.field_behavior) = IMMUTABLE];</code>
     * @return Whether the placement field is set.
     */
    @java.lang.Override
    public boolean hasPlacement() {
      return criterionCase_ == 7;
    }
    /**
     * <pre>
     * Immutable. Placement.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.common.PlacementInfo placement = 7 [(.google.api.field_behavior) = IMMUTABLE];</code>
     * @return The placement.
     */
    @java.lang.Override
    public com.google.ads.googleads.v14.common.PlacementInfo getPlacement() {
      if (placementBuilder_ == null) {
        if (criterionCase_ == 7) {
          return (com.google.ads.googleads.v14.common.PlacementInfo) criterion_;
        }
        return com.google.ads.googleads.v14.common.PlacementInfo.getDefaultInstance();
      } else {
        if (criterionCase_ == 7) {
          return placementBuilder_.getMessage();
        }
        return com.google.ads.googleads.v14.common.PlacementInfo.getDefaultInstance();
      }
    }
    /**
     * <pre>
     * Immutable. Placement.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.common.PlacementInfo placement = 7 [(.google.api.field_behavior) = IMMUTABLE];</code>
     */
    public Builder setPlacement(com.google.ads.googleads.v14.common.PlacementInfo value) {
      if (placementBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        criterion_ = value;
        onChanged();
      } else {
        placementBuilder_.setMessage(value);
      }
      criterionCase_ = 7;
      return this;
    }
    /**
     * <pre>
     * Immutable. Placement.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.common.PlacementInfo placement = 7 [(.google.api.field_behavior) = IMMUTABLE];</code>
     */
    public Builder setPlacement(
        com.google.ads.googleads.v14.common.PlacementInfo.Builder builderForValue) {
      if (placementBuilder_ == null) {
        criterion_ = builderForValue.build();
        onChanged();
      } else {
        placementBuilder_.setMessage(builderForValue.build());
      }
      criterionCase_ = 7;
      return this;
    }
    /**
     * <pre>
     * Immutable. Placement.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.common.PlacementInfo placement = 7 [(.google.api.field_behavior) = IMMUTABLE];</code>
     */
    public Builder mergePlacement(com.google.ads.googleads.v14.common.PlacementInfo value) {
      if (placementBuilder_ == null) {
        if (criterionCase_ == 7 &&
            criterion_ != com.google.ads.googleads.v14.common.PlacementInfo.getDefaultInstance()) {
          criterion_ = com.google.ads.googleads.v14.common.PlacementInfo.newBuilder((com.google.ads.googleads.v14.common.PlacementInfo) criterion_)
              .mergeFrom(value).buildPartial();
        } else {
          criterion_ = value;
        }
        onChanged();
      } else {
        if (criterionCase_ == 7) {
          placementBuilder_.mergeFrom(value);
        } else {
          placementBuilder_.setMessage(value);
        }
      }
      criterionCase_ = 7;
      return this;
    }
    /**
     * <pre>
     * Immutable. Placement.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.common.PlacementInfo placement = 7 [(.google.api.field_behavior) = IMMUTABLE];</code>
     */
    public Builder clearPlacement() {
      if (placementBuilder_ == null) {
        if (criterionCase_ == 7) {
          criterionCase_ = 0;
          criterion_ = null;
          onChanged();
        }
      } else {
        if (criterionCase_ == 7) {
          criterionCase_ = 0;
          criterion_ = null;
        }
        placementBuilder_.clear();
      }
      return this;
    }
    /**
     * <pre>
     * Immutable. Placement.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.common.PlacementInfo placement = 7 [(.google.api.field_behavior) = IMMUTABLE];</code>
     */
    public com.google.ads.googleads.v14.common.PlacementInfo.Builder getPlacementBuilder() {
      return getPlacementFieldBuilder().getBuilder();
    }
    /**
     * <pre>
     * Immutable. Placement.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.common.PlacementInfo placement = 7 [(.google.api.field_behavior) = IMMUTABLE];</code>
     */
    @java.lang.Override
    public com.google.ads.googleads.v14.common.PlacementInfoOrBuilder getPlacementOrBuilder() {
      if ((criterionCase_ == 7) && (placementBuilder_ != null)) {
        return placementBuilder_.getMessageOrBuilder();
      } else {
        if (criterionCase_ == 7) {
          return (com.google.ads.googleads.v14.common.PlacementInfo) criterion_;
        }
        return com.google.ads.googleads.v14.common.PlacementInfo.getDefaultInstance();
      }
    }
    /**
     * <pre>
     * Immutable. Placement.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.common.PlacementInfo placement = 7 [(.google.api.field_behavior) = IMMUTABLE];</code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
        com.google.ads.googleads.v14.common.PlacementInfo, com.google.ads.googleads.v14.common.PlacementInfo.Builder, com.google.ads.googleads.v14.common.PlacementInfoOrBuilder> 
        getPlacementFieldBuilder() {
      if (placementBuilder_ == null) {
        if (!(criterionCase_ == 7)) {
          criterion_ = com.google.ads.googleads.v14.common.PlacementInfo.getDefaultInstance();
        }
        placementBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
            com.google.ads.googleads.v14.common.PlacementInfo, com.google.ads.googleads.v14.common.PlacementInfo.Builder, com.google.ads.googleads.v14.common.PlacementInfoOrBuilder>(
                (com.google.ads.googleads.v14.common.PlacementInfo) criterion_,
                getParentForChildren(),
                isClean());
        criterion_ = null;
      }
      criterionCase_ = 7;
      onChanged();
      return placementBuilder_;
    }

    private com.google.protobuf.SingleFieldBuilderV3<
        com.google.ads.googleads.v14.common.YouTubeVideoInfo, com.google.ads.googleads.v14.common.YouTubeVideoInfo.Builder, com.google.ads.googleads.v14.common.YouTubeVideoInfoOrBuilder> youtubeVideoBuilder_;
    /**
     * <pre>
     * Immutable. YouTube Video.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.common.YouTubeVideoInfo youtube_video = 8 [(.google.api.field_behavior) = IMMUTABLE];</code>
     * @return Whether the youtubeVideo field is set.
     */
    @java.lang.Override
    public boolean hasYoutubeVideo() {
      return criterionCase_ == 8;
    }
    /**
     * <pre>
     * Immutable. YouTube Video.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.common.YouTubeVideoInfo youtube_video = 8 [(.google.api.field_behavior) = IMMUTABLE];</code>
     * @return The youtubeVideo.
     */
    @java.lang.Override
    public com.google.ads.googleads.v14.common.YouTubeVideoInfo getYoutubeVideo() {
      if (youtubeVideoBuilder_ == null) {
        if (criterionCase_ == 8) {
          return (com.google.ads.googleads.v14.common.YouTubeVideoInfo) criterion_;
        }
        return com.google.ads.googleads.v14.common.YouTubeVideoInfo.getDefaultInstance();
      } else {
        if (criterionCase_ == 8) {
          return youtubeVideoBuilder_.getMessage();
        }
        return com.google.ads.googleads.v14.common.YouTubeVideoInfo.getDefaultInstance();
      }
    }
    /**
     * <pre>
     * Immutable. YouTube Video.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.common.YouTubeVideoInfo youtube_video = 8 [(.google.api.field_behavior) = IMMUTABLE];</code>
     */
    public Builder setYoutubeVideo(com.google.ads.googleads.v14.common.YouTubeVideoInfo value) {
      if (youtubeVideoBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        criterion_ = value;
        onChanged();
      } else {
        youtubeVideoBuilder_.setMessage(value);
      }
      criterionCase_ = 8;
      return this;
    }
    /**
     * <pre>
     * Immutable. YouTube Video.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.common.YouTubeVideoInfo youtube_video = 8 [(.google.api.field_behavior) = IMMUTABLE];</code>
     */
    public Builder setYoutubeVideo(
        com.google.ads.googleads.v14.common.YouTubeVideoInfo.Builder builderForValue) {
      if (youtubeVideoBuilder_ == null) {
        criterion_ = builderForValue.build();
        onChanged();
      } else {
        youtubeVideoBuilder_.setMessage(builderForValue.build());
      }
      criterionCase_ = 8;
      return this;
    }
    /**
     * <pre>
     * Immutable. YouTube Video.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.common.YouTubeVideoInfo youtube_video = 8 [(.google.api.field_behavior) = IMMUTABLE];</code>
     */
    public Builder mergeYoutubeVideo(com.google.ads.googleads.v14.common.YouTubeVideoInfo value) {
      if (youtubeVideoBuilder_ == null) {
        if (criterionCase_ == 8 &&
            criterion_ != com.google.ads.googleads.v14.common.YouTubeVideoInfo.getDefaultInstance()) {
          criterion_ = com.google.ads.googleads.v14.common.YouTubeVideoInfo.newBuilder((com.google.ads.googleads.v14.common.YouTubeVideoInfo) criterion_)
              .mergeFrom(value).buildPartial();
        } else {
          criterion_ = value;
        }
        onChanged();
      } else {
        if (criterionCase_ == 8) {
          youtubeVideoBuilder_.mergeFrom(value);
        } else {
          youtubeVideoBuilder_.setMessage(value);
        }
      }
      criterionCase_ = 8;
      return this;
    }
    /**
     * <pre>
     * Immutable. YouTube Video.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.common.YouTubeVideoInfo youtube_video = 8 [(.google.api.field_behavior) = IMMUTABLE];</code>
     */
    public Builder clearYoutubeVideo() {
      if (youtubeVideoBuilder_ == null) {
        if (criterionCase_ == 8) {
          criterionCase_ = 0;
          criterion_ = null;
          onChanged();
        }
      } else {
        if (criterionCase_ == 8) {
          criterionCase_ = 0;
          criterion_ = null;
        }
        youtubeVideoBuilder_.clear();
      }
      return this;
    }
    /**
     * <pre>
     * Immutable. YouTube Video.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.common.YouTubeVideoInfo youtube_video = 8 [(.google.api.field_behavior) = IMMUTABLE];</code>
     */
    public com.google.ads.googleads.v14.common.YouTubeVideoInfo.Builder getYoutubeVideoBuilder() {
      return getYoutubeVideoFieldBuilder().getBuilder();
    }
    /**
     * <pre>
     * Immutable. YouTube Video.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.common.YouTubeVideoInfo youtube_video = 8 [(.google.api.field_behavior) = IMMUTABLE];</code>
     */
    @java.lang.Override
    public com.google.ads.googleads.v14.common.YouTubeVideoInfoOrBuilder getYoutubeVideoOrBuilder() {
      if ((criterionCase_ == 8) && (youtubeVideoBuilder_ != null)) {
        return youtubeVideoBuilder_.getMessageOrBuilder();
      } else {
        if (criterionCase_ == 8) {
          return (com.google.ads.googleads.v14.common.YouTubeVideoInfo) criterion_;
        }
        return com.google.ads.googleads.v14.common.YouTubeVideoInfo.getDefaultInstance();
      }
    }
    /**
     * <pre>
     * Immutable. YouTube Video.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.common.YouTubeVideoInfo youtube_video = 8 [(.google.api.field_behavior) = IMMUTABLE];</code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
        com.google.ads.googleads.v14.common.YouTubeVideoInfo, com.google.ads.googleads.v14.common.YouTubeVideoInfo.Builder, com.google.ads.googleads.v14.common.YouTubeVideoInfoOrBuilder> 
        getYoutubeVideoFieldBuilder() {
      if (youtubeVideoBuilder_ == null) {
        if (!(criterionCase_ == 8)) {
          criterion_ = com.google.ads.googleads.v14.common.YouTubeVideoInfo.getDefaultInstance();
        }
        youtubeVideoBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
            com.google.ads.googleads.v14.common.YouTubeVideoInfo, com.google.ads.googleads.v14.common.YouTubeVideoInfo.Builder, com.google.ads.googleads.v14.common.YouTubeVideoInfoOrBuilder>(
                (com.google.ads.googleads.v14.common.YouTubeVideoInfo) criterion_,
                getParentForChildren(),
                isClean());
        criterion_ = null;
      }
      criterionCase_ = 8;
      onChanged();
      return youtubeVideoBuilder_;
    }

    private com.google.protobuf.SingleFieldBuilderV3<
        com.google.ads.googleads.v14.common.YouTubeChannelInfo, com.google.ads.googleads.v14.common.YouTubeChannelInfo.Builder, com.google.ads.googleads.v14.common.YouTubeChannelInfoOrBuilder> youtubeChannelBuilder_;
    /**
     * <pre>
     * Immutable. YouTube Channel.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.common.YouTubeChannelInfo youtube_channel = 9 [(.google.api.field_behavior) = IMMUTABLE];</code>
     * @return Whether the youtubeChannel field is set.
     */
    @java.lang.Override
    public boolean hasYoutubeChannel() {
      return criterionCase_ == 9;
    }
    /**
     * <pre>
     * Immutable. YouTube Channel.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.common.YouTubeChannelInfo youtube_channel = 9 [(.google.api.field_behavior) = IMMUTABLE];</code>
     * @return The youtubeChannel.
     */
    @java.lang.Override
    public com.google.ads.googleads.v14.common.YouTubeChannelInfo getYoutubeChannel() {
      if (youtubeChannelBuilder_ == null) {
        if (criterionCase_ == 9) {
          return (com.google.ads.googleads.v14.common.YouTubeChannelInfo) criterion_;
        }
        return com.google.ads.googleads.v14.common.YouTubeChannelInfo.getDefaultInstance();
      } else {
        if (criterionCase_ == 9) {
          return youtubeChannelBuilder_.getMessage();
        }
        return com.google.ads.googleads.v14.common.YouTubeChannelInfo.getDefaultInstance();
      }
    }
    /**
     * <pre>
     * Immutable. YouTube Channel.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.common.YouTubeChannelInfo youtube_channel = 9 [(.google.api.field_behavior) = IMMUTABLE];</code>
     */
    public Builder setYoutubeChannel(com.google.ads.googleads.v14.common.YouTubeChannelInfo value) {
      if (youtubeChannelBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        criterion_ = value;
        onChanged();
      } else {
        youtubeChannelBuilder_.setMessage(value);
      }
      criterionCase_ = 9;
      return this;
    }
    /**
     * <pre>
     * Immutable. YouTube Channel.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.common.YouTubeChannelInfo youtube_channel = 9 [(.google.api.field_behavior) = IMMUTABLE];</code>
     */
    public Builder setYoutubeChannel(
        com.google.ads.googleads.v14.common.YouTubeChannelInfo.Builder builderForValue) {
      if (youtubeChannelBuilder_ == null) {
        criterion_ = builderForValue.build();
        onChanged();
      } else {
        youtubeChannelBuilder_.setMessage(builderForValue.build());
      }
      criterionCase_ = 9;
      return this;
    }
    /**
     * <pre>
     * Immutable. YouTube Channel.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.common.YouTubeChannelInfo youtube_channel = 9 [(.google.api.field_behavior) = IMMUTABLE];</code>
     */
    public Builder mergeYoutubeChannel(com.google.ads.googleads.v14.common.YouTubeChannelInfo value) {
      if (youtubeChannelBuilder_ == null) {
        if (criterionCase_ == 9 &&
            criterion_ != com.google.ads.googleads.v14.common.YouTubeChannelInfo.getDefaultInstance()) {
          criterion_ = com.google.ads.googleads.v14.common.YouTubeChannelInfo.newBuilder((com.google.ads.googleads.v14.common.YouTubeChannelInfo) criterion_)
              .mergeFrom(value).buildPartial();
        } else {
          criterion_ = value;
        }
        onChanged();
      } else {
        if (criterionCase_ == 9) {
          youtubeChannelBuilder_.mergeFrom(value);
        } else {
          youtubeChannelBuilder_.setMessage(value);
        }
      }
      criterionCase_ = 9;
      return this;
    }
    /**
     * <pre>
     * Immutable. YouTube Channel.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.common.YouTubeChannelInfo youtube_channel = 9 [(.google.api.field_behavior) = IMMUTABLE];</code>
     */
    public Builder clearYoutubeChannel() {
      if (youtubeChannelBuilder_ == null) {
        if (criterionCase_ == 9) {
          criterionCase_ = 0;
          criterion_ = null;
          onChanged();
        }
      } else {
        if (criterionCase_ == 9) {
          criterionCase_ = 0;
          criterion_ = null;
        }
        youtubeChannelBuilder_.clear();
      }
      return this;
    }
    /**
     * <pre>
     * Immutable. YouTube Channel.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.common.YouTubeChannelInfo youtube_channel = 9 [(.google.api.field_behavior) = IMMUTABLE];</code>
     */
    public com.google.ads.googleads.v14.common.YouTubeChannelInfo.Builder getYoutubeChannelBuilder() {
      return getYoutubeChannelFieldBuilder().getBuilder();
    }
    /**
     * <pre>
     * Immutable. YouTube Channel.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.common.YouTubeChannelInfo youtube_channel = 9 [(.google.api.field_behavior) = IMMUTABLE];</code>
     */
    @java.lang.Override
    public com.google.ads.googleads.v14.common.YouTubeChannelInfoOrBuilder getYoutubeChannelOrBuilder() {
      if ((criterionCase_ == 9) && (youtubeChannelBuilder_ != null)) {
        return youtubeChannelBuilder_.getMessageOrBuilder();
      } else {
        if (criterionCase_ == 9) {
          return (com.google.ads.googleads.v14.common.YouTubeChannelInfo) criterion_;
        }
        return com.google.ads.googleads.v14.common.YouTubeChannelInfo.getDefaultInstance();
      }
    }
    /**
     * <pre>
     * Immutable. YouTube Channel.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.common.YouTubeChannelInfo youtube_channel = 9 [(.google.api.field_behavior) = IMMUTABLE];</code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
        com.google.ads.googleads.v14.common.YouTubeChannelInfo, com.google.ads.googleads.v14.common.YouTubeChannelInfo.Builder, com.google.ads.googleads.v14.common.YouTubeChannelInfoOrBuilder> 
        getYoutubeChannelFieldBuilder() {
      if (youtubeChannelBuilder_ == null) {
        if (!(criterionCase_ == 9)) {
          criterion_ = com.google.ads.googleads.v14.common.YouTubeChannelInfo.getDefaultInstance();
        }
        youtubeChannelBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
            com.google.ads.googleads.v14.common.YouTubeChannelInfo, com.google.ads.googleads.v14.common.YouTubeChannelInfo.Builder, com.google.ads.googleads.v14.common.YouTubeChannelInfoOrBuilder>(
                (com.google.ads.googleads.v14.common.YouTubeChannelInfo) criterion_,
                getParentForChildren(),
                isClean());
        criterion_ = null;
      }
      criterionCase_ = 9;
      onChanged();
      return youtubeChannelBuilder_;
    }

    private com.google.protobuf.SingleFieldBuilderV3<
        com.google.ads.googleads.v14.common.NegativeKeywordListInfo, com.google.ads.googleads.v14.common.NegativeKeywordListInfo.Builder, com.google.ads.googleads.v14.common.NegativeKeywordListInfoOrBuilder> negativeKeywordListBuilder_;
    /**
     * <pre>
     * Immutable. NegativeKeywordList.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.common.NegativeKeywordListInfo negative_keyword_list = 11 [(.google.api.field_behavior) = IMMUTABLE];</code>
     * @return Whether the negativeKeywordList field is set.
     */
    @java.lang.Override
    public boolean hasNegativeKeywordList() {
      return criterionCase_ == 11;
    }
    /**
     * <pre>
     * Immutable. NegativeKeywordList.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.common.NegativeKeywordListInfo negative_keyword_list = 11 [(.google.api.field_behavior) = IMMUTABLE];</code>
     * @return The negativeKeywordList.
     */
    @java.lang.Override
    public com.google.ads.googleads.v14.common.NegativeKeywordListInfo getNegativeKeywordList() {
      if (negativeKeywordListBuilder_ == null) {
        if (criterionCase_ == 11) {
          return (com.google.ads.googleads.v14.common.NegativeKeywordListInfo) criterion_;
        }
        return com.google.ads.googleads.v14.common.NegativeKeywordListInfo.getDefaultInstance();
      } else {
        if (criterionCase_ == 11) {
          return negativeKeywordListBuilder_.getMessage();
        }
        return com.google.ads.googleads.v14.common.NegativeKeywordListInfo.getDefaultInstance();
      }
    }
    /**
     * <pre>
     * Immutable. NegativeKeywordList.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.common.NegativeKeywordListInfo negative_keyword_list = 11 [(.google.api.field_behavior) = IMMUTABLE];</code>
     */
    public Builder setNegativeKeywordList(com.google.ads.googleads.v14.common.NegativeKeywordListInfo value) {
      if (negativeKeywordListBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        criterion_ = value;
        onChanged();
      } else {
        negativeKeywordListBuilder_.setMessage(value);
      }
      criterionCase_ = 11;
      return this;
    }
    /**
     * <pre>
     * Immutable. NegativeKeywordList.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.common.NegativeKeywordListInfo negative_keyword_list = 11 [(.google.api.field_behavior) = IMMUTABLE];</code>
     */
    public Builder setNegativeKeywordList(
        com.google.ads.googleads.v14.common.NegativeKeywordListInfo.Builder builderForValue) {
      if (negativeKeywordListBuilder_ == null) {
        criterion_ = builderForValue.build();
        onChanged();
      } else {
        negativeKeywordListBuilder_.setMessage(builderForValue.build());
      }
      criterionCase_ = 11;
      return this;
    }
    /**
     * <pre>
     * Immutable. NegativeKeywordList.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.common.NegativeKeywordListInfo negative_keyword_list = 11 [(.google.api.field_behavior) = IMMUTABLE];</code>
     */
    public Builder mergeNegativeKeywordList(com.google.ads.googleads.v14.common.NegativeKeywordListInfo value) {
      if (negativeKeywordListBuilder_ == null) {
        if (criterionCase_ == 11 &&
            criterion_ != com.google.ads.googleads.v14.common.NegativeKeywordListInfo.getDefaultInstance()) {
          criterion_ = com.google.ads.googleads.v14.common.NegativeKeywordListInfo.newBuilder((com.google.ads.googleads.v14.common.NegativeKeywordListInfo) criterion_)
              .mergeFrom(value).buildPartial();
        } else {
          criterion_ = value;
        }
        onChanged();
      } else {
        if (criterionCase_ == 11) {
          negativeKeywordListBuilder_.mergeFrom(value);
        } else {
          negativeKeywordListBuilder_.setMessage(value);
        }
      }
      criterionCase_ = 11;
      return this;
    }
    /**
     * <pre>
     * Immutable. NegativeKeywordList.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.common.NegativeKeywordListInfo negative_keyword_list = 11 [(.google.api.field_behavior) = IMMUTABLE];</code>
     */
    public Builder clearNegativeKeywordList() {
      if (negativeKeywordListBuilder_ == null) {
        if (criterionCase_ == 11) {
          criterionCase_ = 0;
          criterion_ = null;
          onChanged();
        }
      } else {
        if (criterionCase_ == 11) {
          criterionCase_ = 0;
          criterion_ = null;
        }
        negativeKeywordListBuilder_.clear();
      }
      return this;
    }
    /**
     * <pre>
     * Immutable. NegativeKeywordList.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.common.NegativeKeywordListInfo negative_keyword_list = 11 [(.google.api.field_behavior) = IMMUTABLE];</code>
     */
    public com.google.ads.googleads.v14.common.NegativeKeywordListInfo.Builder getNegativeKeywordListBuilder() {
      return getNegativeKeywordListFieldBuilder().getBuilder();
    }
    /**
     * <pre>
     * Immutable. NegativeKeywordList.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.common.NegativeKeywordListInfo negative_keyword_list = 11 [(.google.api.field_behavior) = IMMUTABLE];</code>
     */
    @java.lang.Override
    public com.google.ads.googleads.v14.common.NegativeKeywordListInfoOrBuilder getNegativeKeywordListOrBuilder() {
      if ((criterionCase_ == 11) && (negativeKeywordListBuilder_ != null)) {
        return negativeKeywordListBuilder_.getMessageOrBuilder();
      } else {
        if (criterionCase_ == 11) {
          return (com.google.ads.googleads.v14.common.NegativeKeywordListInfo) criterion_;
        }
        return com.google.ads.googleads.v14.common.NegativeKeywordListInfo.getDefaultInstance();
      }
    }
    /**
     * <pre>
     * Immutable. NegativeKeywordList.
     * </pre>
     *
     * <code>.google.ads.googleads.v14.common.NegativeKeywordListInfo negative_keyword_list = 11 [(.google.api.field_behavior) = IMMUTABLE];</code>
     */
    private com.google.protobuf.SingleFieldBuilderV3<
        com.google.ads.googleads.v14.common.NegativeKeywordListInfo, com.google.ads.googleads.v14.common.NegativeKeywordListInfo.Builder, com.google.ads.googleads.v14.common.NegativeKeywordListInfoOrBuilder> 
        getNegativeKeywordListFieldBuilder() {
      if (negativeKeywordListBuilder_ == null) {
        if (!(criterionCase_ == 11)) {
          criterion_ = com.google.ads.googleads.v14.common.NegativeKeywordListInfo.getDefaultInstance();
        }
        negativeKeywordListBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
            com.google.ads.googleads.v14.common.NegativeKeywordListInfo, com.google.ads.googleads.v14.common.NegativeKeywordListInfo.Builder, com.google.ads.googleads.v14.common.NegativeKeywordListInfoOrBuilder>(
                (com.google.ads.googleads.v14.common.NegativeKeywordListInfo) criterion_,
                getParentForChildren(),
                isClean());
        criterion_ = null;
      }
      criterionCase_ = 11;
      onChanged();
      return negativeKeywordListBuilder_;
    }
    @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.resources.CustomerNegativeCriterion)
  }

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

  public static com.google.ads.googleads.v14.resources.CustomerNegativeCriterion getDefaultInstance() {
    return DEFAULT_INSTANCE;
  }

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

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

  @java.lang.Override
  public com.google.ads.googleads.v14.resources.CustomerNegativeCriterion getDefaultInstanceForType() {
    return DEFAULT_INSTANCE;
  }

}

