@Override
	public List<SearchResult<Integer, T>> search(byte[] text, TaskMonitor monitor)
			throws CancelledException {
		monitor.initialize(numberOfNodes() + text.length);
		fixupSuffixPointers(monitor);
		ArrayList<SearchResult<Integer, T>> results = new ArrayList<SearchResult<Integer, T>>();
		ByteTrieNode<T> ptr = root;
		int index = 0;
		while (index < text.length) {
			monitor.checkCancelled();
			monitor.incrementProgress(1);
			ByteTrieNode<T> trans = null;
			while (trans == null) {
				trans = getTransition(ptr, text[index]);
				if (ptr == root) {
					break;
				}
				if (trans == null) {
					ptr = ptr.suffix;
				}
			}
			if (trans != null) {
				ptr = trans;
			}
			ByteTrieNode<T> tmp = ptr;
			while (tmp != root) {
				if (tmp.isTerminal()) {
					results.add(new SearchResult<Integer, T>(tmp, index - tmp.length() + 1,
						tmp.getItem()));
				}
				tmp = tmp.suffix;
			}
			++index;
		}
		return results;
	}
Search an array of bytes using the Aho-Corasick multiple string
trie search algorithm.
@param text the bytes to search
@param monitor a task monitor
@return a list of search results
@throws CancelledException
Ghidra/Features/Base/src/main/java/ghidra/util/search/trie/ByteTrie.java