/// <summary>
        /// Calls the PredictLocation service method
        /// </summary>
        /// <param name="hawaiiAppId">login to use</param>
        /// <param name="request">request parameter to the method</param>
        /// <param name="onComplete">on complete callback</param>
        /// <param name="stateObject">Optional correlation user state object</param>
        public static void PredictLocationAsync(
            string hawaiiAppId,
            PredictLocationRequest request,
            ServiceAgent<PredictLocationResult>.OnCompleteDelegate onComplete,
            object stateObject)
        {
            if (string.IsNullOrEmpty(hawaiiAppId))
            {
                throw new ArgumentNullException("hawaiiAppId");
            }

            PredictLocationAsync(
                new GuidAuthClientIdentity(hawaiiAppId),
                request,
                onComplete,
                stateObject);
        }
        /// <summary>
        /// Calls the PredictLocation service method
        /// </summary>
        /// <param name="clientIdentity">The hawaii client identity.</param>
        /// <param name="request">request parameter to the method</param>
        /// <param name="onComplete">on complete callback</param>
        /// <param name="stateObject">Optional correlation user state object</param>
        private static void PredictLocationAsync(
            ClientIdentity clientIdentity,
            PredictLocationRequest request,
            ServiceAgent<PredictLocationResult>.OnCompleteDelegate onComplete,
            object stateObject)
        {
            PredictLocationAgent agent = new PredictLocationAgent(
                PathPredictionService.ServicePath,
                clientIdentity,
                request,
                stateObject);

            agent.ProcessRequest(onComplete);
        }
        /// <summary>
        /// Calls the PredictLocation service method
        /// </summary>
        /// <param name="clientId">The adm client Id.</param>
        /// <param name="clientSecret">The adm client secret.</param>
        /// <param name="request">request parameter to the method</param>
        /// <param name="onComplete">on complete callback</param>
        /// <param name="stateObject">Optional correlation user state object</param>
        public static void PredictLocationAsync(
            string clientId,
            string clientSecret,
            PredictLocationRequest request,
            ServiceAgent<PredictLocationResult>.OnCompleteDelegate onComplete,
            object stateObject)
        {
            if (string.IsNullOrEmpty(clientId))
            {
                throw new ArgumentNullException("clientId");
            }

            if (string.IsNullOrEmpty(clientSecret))
            {
                throw new ArgumentNullException("clientSecret");
            }

            PredictLocationAsync(
                new AdmAuthClientIdentity(clientId, clientSecret, PathPredictionService.ServiceScope),
                request,
                onComplete,
                stateObject);
        }