@Test
	public void testLdcInteger() throws IOException{
		ArrayList<Byte> classFile = new ArrayList<>();
		TestClassFileCreator.appendMagic(classFile);
		TestClassFileCreator.appendVersions(classFile);
		TestClassFileCreator.appendCount(classFile, (short) 2);
		TestClassFileCreator.appendInteger(classFile, 0x12345678);
		byte[] classFileBytes = TestClassFileCreator.getByteArray(classFile);
		AbstractConstantPoolInfoJava[] constantPool = TestClassFileCreator.getConstantPoolFromBytes(classFileBytes);
		PcodeOpEmitter pCode = new PcodeOpEmitter(language, opAddress, uniqueBase);
		LdcMethods.getPcodeForLdc(pCode, 1, constantPool);
		PcodeOpEmitter expectedPcode = new PcodeOpEmitter(language, opAddress, uniqueBase);
		expectedPcode.emitAssignVarnodeFromPcodeOpCall(LdcMethods.VALUE, 4,
			ConstantPoolJava.CPOOL_OP, "0", "1", ConstantPoolJava.CPOOL_LDC);
		expectedPcode.emitPushCat1Value(LdcMethods.VALUE);
		assertEquals(pCode, expectedPcode);

		//append an additional integer to the end of the constant pool and generate a reference to it
		classFile.set(COUNT_LOW_BYTE, (byte) 3);
		TestClassFileCreator.appendInteger(classFile, 0x11111111);
		classFileBytes = TestClassFileCreator.getByteArray(classFile);
		constantPool = TestClassFileCreator.getConstantPoolFromBytes(classFileBytes);
		pCode = new PcodeOpEmitter(language, opAddress, uniqueBase);
		LdcMethods.getPcodeForLdc(pCode, 2, constantPool);
		expectedPcode = new PcodeOpEmitter(language, opAddress, uniqueBase);
		expectedPcode.emitAssignVarnodeFromPcodeOpCall(LdcMethods.VALUE, 4,
			ConstantPoolJava.CPOOL_OP, "0", "2", ConstantPoolJava.CPOOL_LDC);
		expectedPcode.emitPushCat1Value(LdcMethods.VALUE);
		assertEquals(pCode, expectedPcode);
	}
size of constant pool structures in bytes:
Class: 3
MethodRef: 5
String: 3
Integer: 5
Float: 5
Long: 9
Double: 9
Utf8: 

Constant pool begins at offset 0xa of the class file
Ghidra/Processors/JVM/src/test/java/ghidra/app/util/pcodeInject/LdcMethodsTest.java