private void appendMethodHandleInfo(StringBuffer sb,
			AbstractConstantPoolInfoJava[] constantPool, int argIndex) {
		ConstantPoolMethodHandleInfo methodHandle =
			(ConstantPoolMethodHandleInfo) constantPool[argIndex];
		AbstractConstantPoolInfoJava handleRef = constantPool[methodHandle.getReferenceIndex()];

		if (handleRef instanceof ConstantPoolFieldReferenceInfo) {
			ConstantPoolFieldReferenceInfo fieldRef = (ConstantPoolFieldReferenceInfo) handleRef;
			ConstantPoolClassInfo classInfo =
				(ConstantPoolClassInfo) constantPool[fieldRef.getClassIndex()];
			ConstantPoolUtf8Info utf8 =
				(ConstantPoolUtf8Info) constantPool[classInfo.getNameIndex()];
			sb.append(utf8.getString());
			sb.append(".");
			ConstantPoolNameAndTypeInfo ntInfo =
				(ConstantPoolNameAndTypeInfo) constantPool[fieldRef.getNameAndTypeIndex()];
			utf8 = (ConstantPoolUtf8Info) constantPool[ntInfo.getNameIndex()];
			sb.append(utf8.getString());
		}
		if (handleRef instanceof ConstantPoolMethodReferenceInfo) {
			ConstantPoolMethodReferenceInfo methodRef = (ConstantPoolMethodReferenceInfo) handleRef;
			ConstantPoolClassInfo classRef =
				(ConstantPoolClassInfo) constantPool[methodRef.getClassIndex()];
			ConstantPoolUtf8Info utf8 =
				(ConstantPoolUtf8Info) constantPool[classRef.getNameIndex()];
			sb.append(utf8.getString() + ".");
			ConstantPoolNameAndTypeInfo nameAndType =
				(ConstantPoolNameAndTypeInfo) constantPool[methodRef.getNameAndTypeIndex()];
			utf8 = (ConstantPoolUtf8Info) constantPool[nameAndType.getNameIndex()];
			sb.append(utf8.getString());
		}
		if (handleRef instanceof ConstantPoolInterfaceMethodReferenceInfo) {
			ConstantPoolInterfaceMethodReferenceInfo mrInfo =
				(ConstantPoolInterfaceMethodReferenceInfo) handleRef;
			ConstantPoolClassInfo classRef =
				(ConstantPoolClassInfo) constantPool[mrInfo.getClassIndex()];
			ConstantPoolUtf8Info utf8 =
				(ConstantPoolUtf8Info) constantPool[classRef.getNameIndex()];
			sb.append(utf8.getString() + ".");
			ConstantPoolNameAndTypeInfo nameAndType =
				(ConstantPoolNameAndTypeInfo) constantPool[mrInfo.getNameAndTypeIndex()];
			utf8 = (ConstantPoolUtf8Info) constantPool[nameAndType.getNameIndex()];
			sb.append(utf8.getString());
		}
	}
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