internal override ISuggestionItem GetIndexItem(int index)
        {
            Debug.Assert(((ITileFilter)this).IsIndexVisible(index));

            var token = GetIndexToken(index);

            ISuggestionItem item;

            switch (token)
            {
            case -1:
                item = new SuggestedSpellingBackspaceItem(Model.LastTile, this, Prefix);
                break;

            case -2:
                item = _wordVocabularySource.CreateSuggestedSpellingWordItem(Prefix);
                break;

            default:
                Debug.Assert(token != 0);
                item = new SuggestedSpellingItem(Model.LastTile, this, Prefix, char.ConvertFromUtf32(token));
                break;
            }

            return(item);
        }
        internal override ITile GetIndexItemForTrace(int index)
        {
            var token = GetIndexToken(index);

            ISuggestionItem item;

            switch (token)
            {
            case -1:
                item = new SuggestedSpellingBackspaceItem(Model.LastTile, this, Prefix);
                break;

            case -2:
                item = string.IsNullOrWhiteSpace(Prefix) ? null : _wordVocabularySource.CreateSuggestedSpellingWordItem(Prefix);
                break;

            default:
                item = token == 0 ? null : new SuggestedSpellingItem(Model.LastTile, this, Prefix, char.ConvertFromUtf32(token));
                break;
            }

            return(item);
        }