default PathFilter searchFor(Class<? extends TraceObjectInterface> type, KeyPath prefix,
			boolean requireCanonical) {
		if (type == TraceObjectInterface.class) {
			throw new IllegalArgumentException("Must provide a specific interface");
		}
		Set<PathPattern> patterns = new HashSet<>();
		Private.searchFor(this, patterns, prefix, true, type, false, requireCanonical,
			new HashSet<>());
		return PathMatcher.any(patterns.stream());
	}
Find (sub) path patterns that match objects implementing a given interface

<p>
Each returned path pattern accepts relative paths from an object having this schema to a
successor implementing the interface.

@param type the sub-type of {@link TraceObjectInterface} to search for
@param prefix the prefix for each relative path pattern
@param requireCanonical only return patterns matching a canonical location for the type
@return a set of patterns where such objects could be found
Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/model/target/schema/TraceObjectSchema.java