code: static AdGroupCriterion createCriterionForAdd(ProductPartitionNode node, long adGroupId,
        BiddingStrategyConfiguration biddingConfig) {
      Preconditions.checkNotNull(node, "Null node");
      Preconditions.checkNotNull(biddingConfig, "Null bidding configuration");
  
      AdGroupCriterion adGroupCriterion;
      if (node.isExcludedUnit()) {
        adGroupCriterion = new NegativeAdGroupCriterion();
      } else if (node.isBiddableUnit()){
        BiddableAdGroupCriterion biddableCriterion = new BiddableAdGroupCriterion();
        if (node.getBid() != null) {
          Money bidMoney = new Money();
          bidMoney.setMicroAmount(node.getBid());
          CpcBid cpcBid = new CpcBid();
          cpcBid.setBid(bidMoney);
          cpcBid.setCpcBidSource(BidSource.CRITERION);
          biddingConfig.setBids(new Bids[] {cpcBid});
          biddableCriterion.setBiddingStrategyConfiguration(
              biddingConfig);
        }
        if (node.getTrackingUrlTemplate() != null) {
          biddableCriterion.setTrackingUrlTemplate(
              node.getTrackingUrlTemplate());
        }
        biddableCriterion.setUrlCustomParameters(createCustomParameters(node));
        adGroupCriterion = biddableCriterion;
      } else {
        adGroupCriterion = new BiddableAdGroupCriterion();
      }
      adGroupCriterion.setAdGroupId(adGroupId);
  
      ProductPartition partition = new ProductPartition();
      partition.setId(node.getProductPartitionId());
      if (node.getParent() != null) {
        partition.setParentCriterionId(node.getParent().getProductPartitionId());
      }
      partition.setCaseValue(node.getDimension());
      partition.setPartitionType(
          node.isUnit() ? ProductPartitionType.UNIT : ProductPartitionType.SUBDIVISION);
      adGroupCriterion.setCriterion(partition);
      return adGroupCriterion;
    }
docs: Returns a new AdGroupCriterion configured for an ADD operation.
  
  @param node the node whose criterion should be added
  @param adGroupId the ad group ID of the criterion
  @param biddingConfig the bidding strategy configuration of the criterion