public boolean put(String key, V value) {
		count++;
		// 自分のノードにつける
		if (putOnMyOwn(key, value)) {
			return true;
		}
		String subKey = this.getSubKey(key);
		// 子供で部分一致するものがあるか
		for (int i = 0; i < children.size(); i++) {
			PatriciaTree<V> child = children.get(i);
			// 一致した/それで始まっているならそのノード
			if (child.isResponsible(subKey)) {
				child.put(subKey, value);
				return true;
			}
		}
		// 新規ノードを作ってその下に。
		PatriciaTree<V> tree = new PatriciaTree<>(subKey);
		tree.put(subKey, value);
		for (int i = 0; i < children.size(); i++) {
			PatriciaTree<V> child = children.get(i);
			if (child.prefix.compareTo(subKey) > 0) {
				children.add(i, tree);
				return true;
			}
		}
		children.add(tree);
		return true;
	}