public Task <Unit> Handle(DidChangeConfigurationParams configChangeParams, CancellationToken token)
        {
            var json = configChangeParams.Settings?.SelectToken("ostw") as JObject;

            if (json != null)
            {
                dynamic config = json;

                ReferencesCodeLens   = config.codelens.references;
                ImplementsCodeLens   = config.codelens.implements;
                ElementCountCodeLens = config.codelens.elementCount;
                OutputLanguage       = GetOutputLanguage(config.outputLanguage);
                LanguageInfo.LoadLanguage(OutputLanguage);
                OptimizeOutput = config.optimizeOutput;
            }

            return(Unit.Task);

            OutputLanguage GetOutputLanguage(string languageString)
            {
                switch (languageString)
                {
                case "English": return(OutputLanguage.enUS);

                case "German": return(OutputLanguage.deDE);

                case "Spanish (Castilian)": return(OutputLanguage.esES);

                case "Spanish (Mexico)": return(OutputLanguage.esMX);

                case "French": return(OutputLanguage.frFR);

                case "Italian": return(OutputLanguage.itIT);

                case "Japanese": return(OutputLanguage.jaJP);

                case "Korean": return(OutputLanguage.koKR);

                case "Polish": return(OutputLanguage.plPL);

                case "Portuguese": return(OutputLanguage.ptBR);

                case "Russian": return(OutputLanguage.ruRU);

                case "Chinese (S)": return(OutputLanguage.zhCN);

                case "Chinese (T)": return(OutputLanguage.zhTW);

                default: return(OutputLanguage.enUS);
                }
            }
        }