public RazorLanguageServerClient(
            RazorLanguageServerCustomMessageTarget customTarget,
            RazorLanguageClientMiddleLayer middleLayer,
            LSPRequestInvoker requestInvoker,
            ProjectConfigurationFilePathStore projectConfigurationFilePathStore,
            FeedbackFileLoggerProviderFactory feedbackFileLoggerProviderFactory,
            VSLanguageServerFeatureOptions vsLanguageServerFeatureOptions)
        {
            if (customTarget is null)
            {
                throw new ArgumentNullException(nameof(customTarget));
            }

            if (middleLayer is null)
            {
                throw new ArgumentNullException(nameof(middleLayer));
            }

            if (requestInvoker is null)
            {
                throw new ArgumentNullException(nameof(requestInvoker));
            }

            if (projectConfigurationFilePathStore is null)
            {
                throw new ArgumentNullException(nameof(projectConfigurationFilePathStore));
            }

            if (feedbackFileLoggerProviderFactory is null)
            {
                throw new ArgumentNullException(nameof(feedbackFileLoggerProviderFactory));
            }

            if (vsLanguageServerFeatureOptions is null)
            {
                throw new ArgumentNullException(nameof(vsLanguageServerFeatureOptions));
            }

            _customMessageTarget = customTarget;
            _middleLayer         = middleLayer;
            _requestInvoker      = requestInvoker;
            _projectConfigurationFilePathStore = projectConfigurationFilePathStore;
            _feedbackFileLoggerProviderFactory = feedbackFileLoggerProviderFactory;
            _vsLanguageServerFeatureOptions    = vsLanguageServerFeatureOptions;

            _shutdownLock = new object();
        }