/// <summary>
        /// Creates NdRestApiFacade instance.
        /// </summary>
        /// <param name="userInfo"><see cref="UserInfo"/> instance.</param>
        /// <returns>NdRestApiFacade instance.</returns>
        public NdRestApiFacade CreateApiClient(UserInfo userInfo)
        {
            var containerWrapper             = new FormattersContainerWrapper();
            var contentFormattersFactory     = new ContentFormattersFactory(containerWrapper);
            var authenticationStorageAdapter = new InMemoryAuthenticationStorageAdapter();
            var clientData            = new ClientData(ndHostSettings, authenticationStorageAdapter);
            var requestBuilderFactory = new RequestBuilderFactory(contentFormattersFactory, clientData);

            var oauthLocker             = new OAuthLocker();
            var ndThreadUrlFormatHelper = new NdThreadUrlFormatHelper();
            var oauthClientProvider     = new OAuthClientProvider(clientData);

            var oAuth = new OAuth(requestBuilderFactory,
                                  oauthClientProvider,
                                  contentFormattersFactory);

            var oAuthFacade = new OAuthFacade(oAuth, clientData, userInfo);

            oAuthFacade.RefreshTokens();

            var clientProvider = new ClientProvider(oAuth, clientData, ndThreadUrlFormatHelper, oauthLocker);

            // Note: it seems that we are running our tests on a single host.
            return(restClients.GetOrAdd(userInfo.UserName,
                                        new Lazy <NdRestApiFacade>(
                                            () => new NdRestApiFacade(RestClientV1Initializer(requestBuilderFactory,
                                                                                              clientProvider,
                                                                                              contentFormattersFactory),
                                                                      RestClientV2Initializer(requestBuilderFactory,
                                                                                              clientProvider,
                                                                                              contentFormattersFactory),
                                                                      new CustomRestClient(requestBuilderFactory, clientProvider),
                                                                      oAuthFacade)))
                   .Value);
        }
        /// <summary>
        /// Creates NdRestApiFacade instance.
        /// </summary>
        /// <param name="userInfo"><see cref="UserInfo"/> instance.</param>
        /// <returns>NdRestApiFacade instance.</returns>
        public NdRestApiFacade CreateApiClient(UserInfo userInfo)
        {
            var oAuthFacade = new OAuthFacade(context.Resolve <IOAuth>(),
                                              context.Resolve <IClientData>(),
                                              userInfo);

            oAuthFacade.RefreshTokens();

            // Note: it seems that we are running our tests on a single host.
            return(restClients.GetOrAdd(userInfo.UserName,
                                        new Lazy <NdRestApiFacade>(
                                            () => new NdRestApiFacade(context.Resolve <IV1Facade>(),
                                                                      context.Resolve <IV2Facade>(),
                                                                      context.Resolve <CustomRestClient>(),
                                                                      oAuthFacade)))
                   .Value);
        }