findPrefix (search) {
    if (this.cs === false) {
      search = search.toLowerCase()
    }

    function recurse (node, search, stringAgg, lastWord) {
      // Check if this is a word
      if (node.$) {
        lastWord = stringAgg
      }

      // Check if we have no more to search
      if (search.length === 0) {
        return [lastWord, search]
      }

      // Continue searching
      const next = node.dictionary[search[0]]
      if (!next) {
        return [lastWord, search]
      }
      return recurse(next, search.substring(1), stringAgg + search[0], lastWord)
    };

    return recurse(this, search, '', null)
  }
Returns the longest match and the remaining part that could not be matched.
inspired by [NLTK containers.trie.find_prefix](http://nltk.googlecode.com/svn-/trunk/doc/api/nltk.containers.Trie-class.html).