private void writeCompositePreDeclaration(Composite composite, TaskMonitor monitor)
			throws IOException, CancelledException {

		String compositeType = composite instanceof Structure ? "struct" : "union";

		// output original name as a typedef
		writer.write("typedef " + compositeType + " " + composite.getDisplayName() + " " +
			composite.getDisplayName() + ", *P" + composite.getDisplayName() + ";");
		writer.write(EOL);
		writer.write(EOL);

		for (DataTypeComponent component : composite.getComponents()) {
			if (monitor.isCancelled()) {
				break;
			}
			// force resolution of field datatype
			DataType componentType = component.getDataType();
			deferWrite(componentType);

			// TODO the return value of this is not used--delete?
			getTypeDeclaration(null, componentType, component.getLength(), true, monitor);
		}
	}
Writes the data type as ANSI-C using the underlying writer.
@param dt the data type to write as ANSI-C
@param monitor the task monitor
@throws IOException if there is an exception writing the output
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/data/DataTypeWriter.java