private Address createClassHierarchyDescriptor(Address address, Namespace classNamespace)
			throws CancelledException, MemoryAccessException, InvalidInputException, Exception {

		//TODO: extendedFlatAPI.getReferencedAddress(address, getIboIf64bit);
		Address classHierarchyDescriptorAddress = getReferencedAddress(address);

		Data classHierarchyStructure = extendedFlatAPI.getDataAt(classHierarchyDescriptorAddress);

		if (classHierarchyStructure != null && classHierarchyStructure.getDataType()
				.getName()
				.equals(RTTI_CLASS_HIERARCHY_DESCRIPTOR_DATA_NAME)) {
			return classHierarchyDescriptorAddress;

		}

		Symbol classHierarchySymbol;

		classHierarchySymbol = symbolTable.createLabel(classHierarchyDescriptorAddress,
			RTTI_CLASS_HIERARCHY_DESCRIPTOR_LABEL, classNamespace, SourceType.ANALYSIS);

		classHierarchyStructure = createClassHierarchyStructure(classHierarchyDescriptorAddress);

		if (classHierarchyStructure == null) {
			symbolTable.removeSymbolSpecial(classHierarchySymbol);
			return null;
		}
		return classHierarchyDescriptorAddress;
	}
@param address the address where the ClassHierarchyDescriptor is to be created
@param classNamespace the namespace of the class
@return the given class's ClassHierarchyDescriptor address
@throws CancelledException if cancelled
@throws MemoryAccessException if memory cannot be read
@throws InvalidInputException if issue setting return type
@throws Exception if issue creating label
Ghidra/Features/Decompiler/ghidra_scripts/classrecovery/RTTIWindowsClassRecoverer.java