public void Test()
        {
            try
            {
                List <Address> rowList = new List <Address>();

                user_field userfield = new user_field {
                    name = "email", value = "*****@*****.**"
                };
                List <user_field> user_fields = new List <user_field>();
                user_fields.Add(userfield);

                rowList.Add(new Address(user_fields, addressline1: "101 cherry st"));

                List <user_field> user_fieldsample = new List <user_field>();
                rowList.Add(new Address(null, addressline1: "12 yonge st", country: "ca", stateorprovince: "on"));
                options op = new options();

                input input = new input();
                input.AddressList = rowList;

                ValidateMailingAddressPremiumAPIRequest  request  = new ValidateMailingAddressPremiumAPIRequest(input, op);
                ValidateMailingAddressPremiumAPIResponse response = identifyAddressService.ValidateMailingAddressPremium(request);

                Assert.IsInstanceOfType(response, typeof(ValidateMailingAddressPremiumAPIResponse));
                string output = Utility.ObjectToJson <ValidateMailingAddressPremiumAPIResponse>(response);
                Debug.WriteLine(output);
            }
            catch (Exception e)
            {
                Assert.Fail("Unexpected Exception");
            }
        }
        /// <summary>
        /// Validates the input address request in asynchronous mode.
        /// Response can be retrieved by subscribing to event ValidateAddressProFinishedEvent.
        /// Accepts the address request as input and returns validated addresses
        /// </summary>
        /// <param name="request">Required - ValidateMailingAddressPremiumAPIRequest request (object filled with input and option) </param>
        public void ValidateMailingAddressPremiumAsync(ValidateMailingAddressPremiumAPIRequest request)
        {
            UrlMaker      urlMaker   = UrlMaker.getInstance();
            StringBuilder urlBuilder = new StringBuilder(urlMaker.getAbsoluteUrl(identifyAddressUrl));
            string        url        = urlBuilder.ToString() + validateMailingAddressPremiumUrl;

            String requestString = Utility.ObjectToJson <ValidateMailingAddressPremiumAPIRequest>(request);
            processAPIRequestDelegate <ValidateMailingAddressPremiumAPIResponse> delegateApiRequest = new processAPIRequestDelegate <ValidateMailingAddressPremiumAPIResponse>(Utility.processAPIRequest <ValidateMailingAddressPremiumAPIResponse>);

            delegateApiRequest.BeginInvoke(url, requestString, new AsyncCallback(WorkflowCompletedCallbackValidateAddressPremium), null);
        }
        public void TestAsync()
        {
            try
            {
                Boolean failFlag = false;
                this.TriggerTest = new AutoResetEvent(false);
                identifyAddressService.ValidateAddressPremiumFinishedEvent += (object sender, WebResponseEventArgs <ValidateMailingAddressPremiumAPIResponse> eventArgs) =>
                {
                    try
                    {
                        Assert.IsTrue(eventArgs.ResponseObject != null);
                        this.TriggerTest.Set();
                    }
                    catch (Exception)
                    {
                        failFlag = true;
                        this.TriggerTest.Set();
                    }
                };

                List <Address> rowList = new List <Address>();

                List <user_field> user_fieldsample = new List <user_field>();

                rowList.Add(new Address(user_fieldsample, addressline1: "101 cherry st"));
                rowList.Add(new Address(user_fieldsample, addressline1: "12 yonge st", country: "ca", stateorprovince: "on"));
                options op = new options();

                input input = new input();
                input.AddressList = rowList;

                ValidateMailingAddressPremiumAPIRequest request = new ValidateMailingAddressPremiumAPIRequest(input, op);
                identifyAddressService.ValidateMailingAddressPremiumAsync(request);
                this.TriggerTest.WaitOne(10000);
                if (failFlag)
                {
                    Assert.Fail("Test Case Failed");
                }
            }
            catch (Exception e)
            {
                Assert.Fail("Unexpected Exception");
            }
        }
        /// <summary>
        /// Validates the input address request.
        /// Accepts the address request as input and returns validated addresses
        /// </summary>
        /// <param name="request">Required - ValidateMailingAddressPremiumAPIRequest request (object filled with input and option) </param>
        /// <returns>ValidateMailingAddressPremiumAPIResponse</returns>
        public ValidateMailingAddressPremiumAPIResponse ValidateMailingAddressPremium(ValidateMailingAddressPremiumAPIRequest request)
        {
            UrlMaker      urlMaker   = UrlMaker.getInstance();
            StringBuilder urlBuilder = new StringBuilder(urlMaker.getAbsoluteUrl(identifyAddressUrl));
            string        url        = urlBuilder.ToString() + validateMailingAddressPremiumUrl;

            String requestString = Utility.ObjectToJson <ValidateMailingAddressPremiumAPIRequest>(request);

            return(Utility.processAPIRequest <ValidateMailingAddressPremiumAPIResponse>(url, requestString));
        }