default PathFilter filterForSuitable(Class<? extends TraceObjectInterface> type, KeyPath path) {
		Set<PathPattern> patterns = new HashSet<>();
		Set<TraceObjectSchema> visited = new HashSet<>();
		List<TraceObjectSchema> schemas = getSuccessorSchemas(path);
		for (; path != null; path = path.parent()) {
			TraceObjectSchema schema = schemas.get(path.size());
			Private.searchFor(schema, patterns, path, false, type, true, false, visited);
		}
		return PathMatcher.any(patterns.stream());
	}
Search for all suitable objects with this schema at the given path

<p>
This behaves like {@link #searchForSuitable(Class, KeyPath)}, except that it returns a
matcher for all possibilities. Conventionally, when the client uses the matcher to find
suitable objects and must choose from among the results, those having the longer paths should
be preferred. More specifically, it should prefer those sharing the longer path prefixes with
the given path. The client should <em>not</em> just take the first objects, since these will
likely have the shortest paths. If exactly one object is required, consider using
{@link #searchForSuitable(Class, KeyPath)} instead.

@param type
@param path
@return the filter for finding objects
Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/model/target/schema/TraceObjectSchema.java