@Override
	public boolean add(byte[] value, T item) {
		boolean absent;
		versionId = getVersionId();
		if (value == null) {
			absent = !root.isTerminal();
			root.setTerminal(null);
			if (absent) {
				++size;
			}
			return absent;
		}
		ByteTrieNode<T> node = root;
		int offset = 0;
		while (offset < value.length) {
			byte c = value[offset];
			ByteTrieNode<T> childNode = node.getChild(c);
			if (childNode == null) {
				childNode = generateNode(c, node, node.length() + 1);
				node.addChild(c, childNode);
				++numberOfNodes;
			}
			++offset;
			node = childNode;
		}
		absent = !node.isTerminal();
		node.setTerminal(item);
		if (absent) {
			++size;
		}
		return absent;
	}
Adds a byte sequence to the trie, with corresponding user item.  Returns
if the add took place, or if this add was essentially a replacement of
a previously present value (previous user item is lost forever).
@param value the byte sequence to insert into the trie
@param item a user item to store in that location
@return whether the add took place
Ghidra/Features/Base/src/main/java/ghidra/util/search/trie/ByteTrie.java