/// <summary>
        /// Gets the new instance of non interactive handler.
        /// </summary>
        /// <param name="context">The context.</param>
        /// <param name="resource">The resource.</param>
        /// <param name="clientId">The client identifier.</param>
        /// <param name="userCredential">The user credential.</param>
        private static object GetNewInstanceOfNonInteractiveHandler(AuthenticationContext context, string resource, string clientId, UserCredential userCredential)
        {
            var uriString = EndpointTemplateUri.BindByName(new Uri(context.Authority), TokenEndpointBindings).OriginalString;
            var cache = context.TokenCache;
            var callAsync = false;

            // Retrieve and configure authenticator
            var authenticator = context.Authenticator();
            authenticator.TokenUri(uriString);

            var typeOfObject = Type.GetType("Microsoft.IdentityModel.Clients.ActiveDirectory.AcquireTokenNonInteractiveHandler, Microsoft.IdentityModel.Clients.ActiveDirectory");
            var ctorArguments = new object[] { authenticator, cache, resource, clientId, userCredential, callAsync };
            var instanceOfHandler = Activator.CreateInstance(type: typeOfObject, args: ctorArguments);
            return instanceOfHandler;
        }