code: public Map<String, Integer> suggest(String string, int maxCost, int substitutionCost) {
        if (StringUtils.isNullOrBlank(string)) {
           return Collections.emptyMap();
        } else if (containsKey(string)) {
           return Maps.map(string, 0);
        }
        Map<String, Integer> results = new HashMap<>();
        int[] current = new int[string.length() + 1];
        for (int i = 0; i < current.length; i++) {
           current[i] = i;
        }
        for (TrieNode<V> child : root.children) {
           if (child != null) {
              search(child, child.nodeChar, string, current, results, maxCost, substitutionCost);
           }
        }
        return results;
     }
docs: Suggest map.
  
  @param string           the string
  @param maxCost          the max cost
  @param substitutionCost the substitution cost
  @return the map