protected void toString(StringBuilder sb) {
		sb.append("schema ");
		sb.append(name);
		if (isCanonicalContainer) {
			sb.append("*");
		}
		sb.append(" {\n" + INDENT);
		sb.append("ifaces = [");
		for (Class<? extends TraceObjectInterface> iface : interfaces) {
			sb.append(TraceObjectInterfaceUtils.getSchemaName(iface));
			sb.append(" ");
		}
		sb.append("]\n" + INDENT);
		sb.append("elements = ");
		sb.append(elementSchemas);
		sb.append(" default " + defaultElementSchema);
		sb.append("\n" + INDENT);
		sb.append("attributes = ");
		sb.append(attributeSchemas);
		sb.append(" default " + defaultAttributeSchema);
		sb.append(" aliases " + attributeAliases);
		sb.append("\n}");
	}
{@inheritDoc}

<p>
Generally speaking, object identity is sufficient for checking equality in production;
however, this method is provided for testing equality between an actual and expected
attribute schema.
Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/model/target/schema/DefaultTraceObjectSchema.java