public void setBytes(String stringAddress, byte[] bytes, boolean disassemble) throws Exception {
		Address address = addr(stringAddress);
		tx(() -> {
			MemoryBlock block = program.getMemory().getBlock(address);
			if (block == null) {
				createMemory("Block_" + stringAddress.toString().replace(':', '_'), stringAddress,
					bytes.length);
			}

			Memory memory = program.getMemory();
			memory.setBytes(address, bytes);
		});

		if (disassemble) {
			disassemble(stringAddress, bytes.length);
		}
	}
Sets the bytes starting at {@code stringAddress} to the byte values in {@code bytes}
and then optionally disassembling.

@param stringAddress String containing numeric value, preferably hex encoded: "0x1004000"
@param bytes array of bytes to copy into the memory buffer at the addresss.
@param disassemble boolean flag.  See {@link #disassemble(String, int)}
@throws Exception if there is an exception applying the bytes
Ghidra/Features/Base/src/main/java/ghidra/program/database/ProgramBuilder.java