public List <string> ExpandWord(Word word)
        {
            List <string> suffixWords = new List <string>();
            List <string> words       = new List <string>();

            suffixWords.Add(word.Text);
            string prefixKeys = "";

            foreach (char key in word.AffixKeys)
            {
                if (_suffixRules.ContainsKey(key.ToString()))
                {
                    AffixRule rule     = _suffixRules[key.ToString()];
                    string    tempWord = AffixUtility.AddSuffix(word.Text, rule);
                    if (tempWord != word.Text)
                    {
                        if (rule.AllowCombine)
                        {
                            suffixWords.Add(tempWord);
                        }
                        else
                        {
                            words.Add(tempWord);
                        }
                    }
                }
                else if (_prefixRules.ContainsKey(key.ToString()))
                {
                    prefixKeys += key.ToString();
                }
            }

            foreach (char key in prefixKeys)
            {
                AffixRule rule = _prefixRules[key.ToString()];

                foreach (string suffixWord in suffixWords)
                {
                    string tempWord = AffixUtility.AddPrefix(suffixWord, rule);
                    if (tempWord != suffixWord)
                    {
                        words.Add(tempWord);
                    }
                }
            }

            words.AddRange(suffixWords);

            return(words);
        }