private void addInvokeDynamicComments(Program program,
			AbstractConstantPoolInfoJava[] constantPool, Map<Integer, Integer> indexMap,
			BootstrapMethods[] bootstrapMethods, Instruction instruction) {
		StringBuffer sb = new StringBuffer("Bootstrap Method: \n");

		Address addr = instruction.getAddress();
		int index = (int) (instruction.getScalar(0).getValue() & 0xFFFFFFFF);
		ConstantPoolInvokeDynamicInfo dynamicInfo =
			(ConstantPoolInvokeDynamicInfo) constantPool[index];
		int bootstrapIndex = dynamicInfo.getBootstrapMethodAttrIndex();
		appendMethodHandleInfo(sb, constantPool,
			bootstrapMethods[bootstrapIndex].getBootstrapMethodsReference());

		sb.append("\n");

		int argNum = 0;
		for (int i = 0; i < bootstrapMethods[bootstrapIndex].getNumberOfBootstrapArguments(); i++) {
			sb.append("  static arg " + argNum++ + ": ");
			appendLoadableInfo(sb, constantPool,
				bootstrapMethods[bootstrapIndex].getBootstrapArgumentsEntry(i));
			if (argNum < bootstrapMethods[bootstrapIndex].getNumberOfBootstrapArguments()) {
				sb.append("\n");
			}
		}
		program.getListing().setComment(addr, CommentType.PLATE, sb.toString());
	}
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