private Address createCallFrameInstructions(Address addr) throws MemoryAccessException {
		// Create initial instructions array with remaining bytes.
		int instructionLength = intLength - curSize;
		ArrayDataType adt = new ArrayDataType(ByteDataType.dataType, instructionLength, BYTE_LEN);
		try {
			program.getListing().createData(addr, adt, adt.getLength());
		}
		catch (CodeUnitInsertionException e) {
			CreateDataCmd dataCmd = new CreateDataCmd(addr, adt);
			dataCmd.applyTo(program);
		}

		SetCommentCmd.createComment(program, addr, "(FDE) Call Frame Instructions",
			CommentType.EOL);

		callFrameInstructions = new byte[instructionLength];
		program.getMemory().getBytes(addr, callFrameInstructions);

		// *** The following commented out code is for debugging purposes. ***
//		DwarfCallFrameOpcodeParser parser =
//			new DwarfCallFrameOpcodeParser(program, addr, instructionLength);
//		parser.parse();

		curSize += instructionLength;

		try {
			return addr.add(instructionLength);
		}
		catch (AddressOutOfBoundsException aoobe) {
			// if the instructions end *exactly* on the boundary, we'll end up
			// here..
			return addr.add(instructionLength - 1);
		}
	}
Creates the Call Frame Instructions at the specified Address.

@param addr Address at which the Call Frame Instructions should be created.
@return Address immediately following the Call Frame Instructions.
@throws MemoryAccessException if the required memory can't be read
Ghidra/Features/Base/src/main/java/ghidra/app/plugin/exceptionhandlers/gcc/structures/ehFrame/FrameDescriptionEntry.java