class Trie implements Map.Entry<String, V>, Iterable<Map.Entry<String, V>>, Serializable {

    public V put(String key, V value) {
        Validate.notEmpty(key, "key must not be empty");
        Trie<V> node = getNode(key, true);
        V oldValue = node.value;
        node.value = value;
        return oldValue;
    }

    public  Trie();
    private  Trie(char character, Trie<V> parent);

}