internal void StartSpelling(int index)
        {
            var context = new List <int> {
                0
            };

            if (_wordVocabularySource.Count != index)
            {
                var afterWordSuffixed = _wordVocabularySource.GetIndexWord(index);
                var afterWord         = RemoveAnySuffix(afterWordSuffixed);

                if (afterWord != string.Empty)
                {
                    string beforeWord;
                    var    beforeIndex = index - 1;
                    do
                    {
                        if (0 <= beforeIndex)
                        {
                            var beforeWordSuffixed = _wordVocabularySource.GetIndexWord(beforeIndex);
                            beforeWord = RemoveAnySuffix(beforeWordSuffixed);
                            beforeIndex--;
                        }
                        else
                        {
                            beforeWord = string.Empty;
                        }
                    }while (beforeWord == afterWord);

                    var maxLength = Math.Min(beforeWord.Length, afterWord.Length);
                    for (var i = 0; i < maxLength && beforeWord[i] == afterWord[i]; i++)
                    {
                        context.Add(beforeWord[i]);
                    }
                }
            }

            SetContext(context);
            SetSuggestionsView();
        }