private SpellCheckResult ResultFromFlags(string text, IList <SpellingFlaggedToken> flaggedTokens)
        {
            var result = new SpellCheckResult();

            foreach (var token in flaggedTokens)
            {
                result.suggestions.Add(new SpellCheckResultToken
                {
                    original     = token.Token,
                    suggestion   = token.Suggestions.FirstOrDefault().Suggestion,
                    wordLocation = token.Offset
                });
            }

            return(result);
        }
        public async Task <SpellCheckResult> CheckSpellingAsync(string text)
        {
            var result = new SpellCheckResult();

            result.sourceText  = text;
            result.suggestions = new List <SpellCheckResultToken>();

            var response = await _languageToolService.CheckTextAsync(text);

            foreach (var match in response.matches)
            {
                var token = new SpellCheckResultToken();
                token.original     = match.context.text;
                token.suggestion   = match.replacements.FirstOrDefault()?.value ?? "N/A";
                token.wordLocation = match.offset;
                token.message      = match.message;
                result.suggestions.Add(token);
            }
            return(result);
        }