/// <summary>
        /// Possible actions:
        /// <ul>
        /// <li> Create a new label - create a new {@link Label} and call mutate with ADD operator
        /// <li> Edit the label name - set the appropriate fields in your {@linkplain Label} and call
        /// mutate with the SET operator. Null fields will be interpreted to mean "no change"
        /// <li> Delete the label - call mutate with REMOVE operator
        /// </ul>
        ///
        /// @param operations list of unique operations to be executed in a single transaction, in the
        /// order specified.
        /// @return the mutated labels, in the same order that they were in as the parameter
        /// @throws ApiException if problems occurs while modifying label information
        /// </summary>
        public async Task <AccountLabelReturnValue> MutateAsync(IEnumerable <AccountLabelOperation> operations)
        {
            var binding = new AccountLabelServiceSoapBinding("https://adwords.google.com/api/adwords/mcm/v201609/AccountLabelService", _config.AccessToken, _config.Timeout, _config.EnableGzipCompression, _netUtil, _logger);
            var inData  = new SoapData <AccountLabelServiceRequestHeader, AccountLabelServiceMutate>();

            inData.Header = new AccountLabelServiceRequestHeader();
            AssignHeaderValues(inData.Header);
            inData.Body            = new AccountLabelServiceMutate();
            inData.Body.Operations = new List <AccountLabelOperation>(operations);
            var outData = await binding.MutateAsync(inData).ConfigureAwait(false);

            return(outData.Body.Rval);
        }
        /// <summary>
        /// Returns a list of labels specified by the selector for the authenticated user.
        ///
        /// @param selector filters the list of labels to return
        /// @return response containing lists of labels that meet all the criteria of the selector
        /// @throws ApiException if a problem occurs fetching the information requested
        /// </summary>
        public async Task <AccountLabelPage> GetAsync(Selector selector)
        {
            var binding = new AccountLabelServiceSoapBinding("https://adwords.google.com/api/adwords/mcm/v201609/AccountLabelService", _config.AccessToken, _config.Timeout, _config.EnableGzipCompression, _netUtil, _logger);
            var inData  = new SoapData <AccountLabelServiceRequestHeader, AccountLabelServiceGet>();

            inData.Header = new AccountLabelServiceRequestHeader();
            AssignHeaderValues(inData.Header);
            inData.Body          = new AccountLabelServiceGet();
            inData.Body.Selector = selector;
            var outData = await binding.GetAsync(inData).ConfigureAwait(false);

            return(outData.Body.Rval);
        }