default KeyPath searchForSuitableContainer(Class<? extends TraceObjectInterface> type,
			KeyPath path) {
		List<TraceObjectSchema> schemas = getSuccessorSchemas(path);
		for (; path != null; path = path.parent()) {
			TraceObjectSchema schema = schemas.get(path.size());
			TraceObjectSchema deSchema =
				schema.getContext().getSchema(schema.getDefaultElementSchema());
			if (deSchema.getInterfaces().contains(type) && schema.isCanonicalContainer()) {
				return path;
			}
			KeyPath inAgg = Private.searchForSuitableContainerInAggregate(schema, type);
			if (inAgg != null) {
				return path.extend(inAgg);
			}
		}
		return null;
	}
Like {@link #searchForSuitable(Class, KeyPath)}, but searches for the canonical container
whose elements have the given type

@param type the type of object sought
@param path the path of a seed object
@return the expected path of the suitable container of those objects, or null
Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/model/target/schema/TraceObjectSchema.java