public IEnumerable<string> Find(string chars)
 {
     var result = new List<string>();
     var wordChars = new WordCharacters(chars);
     foreach (var child in Children.Values)
     {
         child.Visit(wordChars.Clone(), result);
     }
     return result;
 }
 internal void Visit(WordCharacters chars, List<string> results)
 {
     if (chars.Take(Current))
     {
         if (IsWord)
             results.Add(chars.Word);
         foreach (var child in Children.Values)
         {
             child.Visit(chars.Clone(), results);
         }
     }
 }