private void createProgramDataTypes(Program program, ClassFileJava classFile,
			TaskMonitor monitor, MessageLog messageLog) {
		monitor.setMessage("JVM: processing class definitions");
		//iterate through the constant pool and add all referenced classes and interfaces
		AbstractConstantPoolInfoJava[] constantPool = classFile.getConstantPool();
		DataTypeManager dtm = program.getDataTypeManager();
		for (int i = 0, length = constantPool.length; i < length; ++i) {
			if (constantPool[i] instanceof ConstantPoolClassInfo) {
				addTypeForClassInfoElement(constantPool, i, dtm);
				continue;
			}
			if (constantPool[i] instanceof ConstantPoolNameAndTypeInfo) {
				addTypesForNameAndTypeInfo(constantPool, i, dtm);
				continue;
			}
		}
		return;
	}
Create datatypes for all classes mentioned in the constant pool
@param program program file
@param classFile ClassFileJava associated with {@code program} 
@param monitor for canceling analysis
@param messageLog for logging messages
Ghidra/Processors/JVM/src/main/java/ghidra/javaclass/analyzers/JavaAnalyzer.java