void insert(String key, T value) {
		if (key.isEmpty()) {
			this.value = value;
			return;
		}
		char c = key.charAt(0);
		String substr = key.substring(1);

		if (c < character) {
			if (left == 0) {
				left = createNode(buffer, c, substr.isEmpty() ? value : null);
			}
			buffer.get(left).insert(key, value);

		} else if (c > character) {
			if (right == 0) {
				right = createNode(buffer, c, substr.isEmpty() ? value : null);
			}
			buffer.get(right).insert(key, value);
		} else {
			if (substr.isEmpty()) {
				this.value = value;
			} else {
				if (center == 0) {
					center = createNode(buffer, substr.charAt(0), null);
				}
				buffer.get(center).insert(substr, value);
			}
		}
	}