Inheritance: BaseCriterion
        /// <summary>
        /// Runs the code example.
        /// </summary>
        /// <param name="user">The AdWords user.</param>
        /// <param name="campaignId">The campaign ID.</param>
        /// <param name="targetingGroupId">The targeting group ID.</param>
        public void Run(AdWordsUser user, long campaignId, long targetingGroupId)
        {
            // Get the VideoTargetingGroupCriterionService.
              VideoTargetingGroupCriterionService videoTargetingGroupCriterionService =
              (VideoTargetingGroupCriterionService) user.GetService(
              AdWordsService.v201309.VideoTargetingGroupCriterionService);

              // Create age criteria.
              TargetingGroupCriterion ageCriterion = new TargetingGroupCriterion();
              ageCriterion.campaignId = campaignId;
              ageCriterion.targetingGroupId = targetingGroupId;
              AudienceAge age = new AudienceAge();
              age.ageRange = AudienceAgeAgeRange.AGE_RANGE_18_24;
              ageCriterion.criterion = age;

              TargetingGroupCriterionOperation addAgeCriterionOperation =
              new TargetingGroupCriterionOperation();
              addAgeCriterionOperation.operand = ageCriterion;
              addAgeCriterionOperation.@operator = Operator.ADD;

              // Create negative age criteria.
              NegativeTargetingGroupCriterion negativeAgeCriterion = new NegativeTargetingGroupCriterion();
              negativeAgeCriterion.campaignId = campaignId;
              negativeAgeCriterion.targetingGroupId = targetingGroupId;
              AudienceAge negativeAge = new AudienceAge();
              negativeAge.ageRange = AudienceAgeAgeRange.AGE_RANGE_65_UP;
              negativeAgeCriterion.criterion = negativeAge;

              TargetingGroupCriterionOperation addNegativeAgeCriterionOperation =
              new TargetingGroupCriterionOperation();
              addNegativeAgeCriterionOperation.operand = negativeAgeCriterion;
              addNegativeAgeCriterionOperation.@operator = Operator.ADD;

              // Create gender criteria.
              TargetingGroupCriterion genderCriterion = new TargetingGroupCriterion();
              AudienceGender gender = new AudienceGender();
              gender.genderType = AudienceGenderGenderType.GENDER_MALE;
              genderCriterion.campaignId = campaignId;
              genderCriterion.targetingGroupId = targetingGroupId;
              genderCriterion.criterion = gender;

              TargetingGroupCriterionOperation addGenderCriterionOperation =
              new TargetingGroupCriterionOperation();
              addGenderCriterionOperation.operand = genderCriterion;
              addGenderCriterionOperation.@operator = Operator.ADD;

              // Create topic criteria.
              // See https://developers.google.com/adwords/api/docs/appendix/verticals
              // for valid ids.
              TargetingGroupCriterion topicCriterion = new TargetingGroupCriterion();
              Topic topic = new Topic();
              // Autos & Vehicles > Vehicle Brands > Buick
              topic.verticalId = 1060L;

              topicCriterion.campaignId = campaignId;
              topicCriterion.targetingGroupId = targetingGroupId;
              topicCriterion.criterion = topic;

              TargetingGroupCriterionOperation addTopicCriterionOperation =
              new TargetingGroupCriterionOperation();
              addTopicCriterionOperation.operand = topicCriterion;
              addTopicCriterionOperation.@operator = Operator.ADD;

              // Add audience interest criteria.
              // See https://developers.google.com/adwords/api/docs/appendix/verticals
              // for valid ids.
              TargetingGroupCriterion interestCriterion = new TargetingGroupCriterion();
              AudienceInterest interest = new AudienceInterest();
              // Computers & Electronics > Computer Hardware > Laptops & Notebooks > Tablet PCs
              interest.interestId = 1277L;

              interestCriterion.campaignId = campaignId;
              interestCriterion.targetingGroupId = targetingGroupId;
              interestCriterion.criterion = topic;

              TargetingGroupCriterionOperation addUserInterestCriteriaOperation =
              new TargetingGroupCriterionOperation();
              addUserInterestCriteriaOperation.operand = interestCriterion;
              addUserInterestCriteriaOperation.@operator = Operator.ADD;

              try {
            TargetingGroupCriterionReturnValue retval = videoTargetingGroupCriterionService.mutate(
            new TargetingGroupCriterionOperation[] {
                addAgeCriterionOperation,
                addGenderCriterionOperation,
                addNegativeAgeCriterionOperation,
                addTopicCriterionOperation,
                addUserInterestCriteriaOperation
            });
            if (retval != null && retval.value != null) {
              foreach (TargetingGroupCriterion newCriterion in retval.value) {
            Console.WriteLine("Added targeting group criteria with id = {0} and type = {1} " +
              "to campaign id {2}.",
              newCriterion.criterion.id, newCriterion.criterion.BaseCriterionType,
              newCriterion.campaignId);
              }
            } else {
              Console.WriteLine("No new targeting group criteria were added.");
            }
              } catch (Exception ex) {
            throw new System.ApplicationException("Failed to add targeting group criteria.", ex);
              }
        }