public virtual void ReadFrom(XElement xE)
 {
     Selector = null;
     foreach (var xItem in xE.Elements())
     {
         var localName = xItem.Name.LocalName;
         if (localName == "selector")
         {
             Selector = new CustomerSyncSelector();
             Selector.ReadFrom(xItem);
         }
     }
 }
        /// <summary>
        /// Returns information about changed entities inside a customer's account.
        ///
        /// @param selector Specifies the filter for selecting changehistory events for a customer.
        /// @return A Customer->Campaign->AdGroup hierarchy containing information about the objects
        /// changed at each level. All Campaigns that are requested in the selector will be returned,
        /// regardless of whether or not they have changed, but unchanged AdGroups will be ignored.
        /// </summary>
        public async Task <CustomerChangeData> GetAsync(CustomerSyncSelector selector)
        {
            var binding = new CustomerSyncServiceSoapBinding("https://adwords.google.com/api/adwords/ch/v201609/CustomerSyncService", _config.AccessToken, _config.Timeout, _config.EnableGzipCompression, _netUtil, _logger);
            var inData  = new SoapData <CustomerSyncServiceRequestHeader, CustomerSyncServiceGet>();

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

            return(outData.Body.Rval);
        }