default void validateRequiredAttributes(TraceObject object, boolean strict, long snap) {
		Set<String> present = object.getAttributes(Lifespan.at(snap))
				.stream()
				.map(a -> a.getEntryKey())
				.collect(Collectors.toUnmodifiableSet());
		Set<String> absent = getAttributeSchemas().values()
				.stream()
				.filter(AttributeSchema::isRequired)
				.map(AttributeSchema::getName)
				.filter(a -> !present.contains(a))
				.collect(Collectors.toSet());
		if (!absent.isEmpty()) {
			String msg = "Object " + object + " is missing required attributes " + absent +
				" of schema " + this;
			Msg.error(this, msg);
			if (strict) {
				throw new AssertionError(msg);
			}
		}
	}
Verify that all required attributes are present

<p>
NOTE: This may become part of a schema and/or connector tester/validator later.

@param object the object whose schema is this one
@param strict to throw exceptions upon violations
@param snap the relevant snapshot
Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/model/target/schema/TraceObjectSchema.java