private AddressSet getInstructionSet(AddressSet byteAddressSet, Listing listing) {
		// Get the Instruction address set.
		AddressSet instructionSet = new AddressSet();
		AddressRangeIterator rangeIter = byteAddressSet.getAddressRanges();
		while (rangeIter.hasNext()) {
			AddressRange range = rangeIter.next();
			Address min = range.getMinAddress();
			Address max = range.getMaxAddress();
			Instruction instr = listing.getInstructionContaining(min);
			if (instr != null) {
				instructionSet
						.add(new AddressRangeImpl(instr.getMinAddress(), instr.getMaxAddress()));
			}
			InstructionIterator instIter = listing.getInstructions(new AddressSet(min, max), true);
			while (instIter.hasNext()) {
				instr = instIter.next();
				instructionSet
						.add(new AddressRangeImpl(instr.getMinAddress(), instr.getMaxAddress()));
			}
		}
		return instructionSet;
	}
Get the address set for all instructions that overlap the indicated byte address set.
@param byteAddressSet the byte address set
The addresses in this set should be derived from the same program for the listing passed as
parameter 2.
@param listing the listing to check for instructions
@return the instruction address set. The addresses in this set will have an address
factory matching that of the byteAddressSet.
Ghidra/Features/Base/src/main/java/ghidra/program/util/ProgramMerge.java