private static Structure createPlaceholderClassStruct(GhidraClass classNamespace,
			DataTypeManager dataTypeManager) {

		Namespace classParentNamespace = classNamespace.getParentNamespace();
		CategoryPath prefRoot = null;
		if (dataTypeManager instanceof ProgramBasedDataTypeManager) {
			prefRoot = ((ProgramBasedDataTypeManager) dataTypeManager).getProgram()
					.getPreferredRootNamespaceCategoryPath();
		}
		if (prefRoot == null) {
			prefRoot = CategoryPath.ROOT;
		}
		CategoryPath category =
			DataTypeUtilities.getDataTypeCategoryPath(prefRoot, classParentNamespace);

		DataType existingDT = dataTypeManager.getDataType(category, classNamespace.getName());
		if (existingDT != null) {
			// If a data-type already exists in the parent, try to create in the child
			category = DataTypeUtilities.getDataTypeCategoryPath(prefRoot, classNamespace);
			existingDT = dataTypeManager.getDataType(category, classNamespace.getName());
			if (existingDT != null) {	// If this also already exists
				return null;			// Don't create a placeholder
			}
		}
		StructureDataType structDT =
			new StructureDataType(category, classNamespace.getName(), 0, dataTypeManager);
		structDT.setDescription("PlaceHolder Class Structure");
		return structDT;
	}
Create an empty placeholder class structure whose category is derived from
the function's class namespace.  NOTE: The structure will not be added to the data
type manager.
The structure is created in the program's preferred category, or in the root category
if a preferred category has not been set.  If a colliding data-type matching the class name
and category already exists, null is returned.
@param classNamespace class namespace
@param dataTypeManager data type manager's whose data organization should be applied.
@return new class structure (or null if there is a collision)
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/listing/VariableUtilities.java