private Instruction getAdjustedInstruction(Instruction currentInstr,
			AddressSet flowAddressSet) {
		Address currentAddress = currentInstr.getMinAddress();

		// Return if code unit already encountered
		if (flowAddressSet.contains(currentAddress)) {
			return null;
		}

		// If code unit is a delay-slot instruction, backup to delayed instruction     	
		Instruction instr = currentInstr;
		while (instr.isInDelaySlot()) {
			Address fallFrom = instr.getFallFrom();
			if (fallFrom == null) {
				// assumes delay slot instructions have no flow
				flowAddressSet.addRange(instr.getMinAddress(), currentInstr.getMaxAddress());
				break;
			}
			instr = program.getListing().getInstructionContaining(fallFrom);
		}

		currentInstr = instr;

		// handle instruction - include associated delay slot instructions
		Address end = instr.getMaxAddress();
		for (int i = instr.getDelaySlotDepth(); i > 0; i--) {
			instr = instr.getNext();
			if (instr == null)
				break;
			end = instr.getMaxAddress();
		}
		flowAddressSet.addRange(currentInstr.getMinAddress(), end);

		return currentInstr;
	}
Gets the instruction to be processed, which has been adjusted to the first instruction when 
the one passed in is part of a delay slot. If this isn't part of a delay slot then the 
original instruction is returned.<BR>
For a delay slot, all the instructions for the delay slot will be added to the flowAddressSet. 
Otherwise the original instruction is added to the flowAddressSet.
@param currentInstr the instruction to possibly adjust
@param flowAddressSet the address set to hold the entire flow.
@return the original instruction or the first instruction that is part of a delay slot.
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/block/FollowFlow.java