private Address getNextSymbolAddress(Address curAddr, Address curNext) {
		if (curAddr == null) {
			return null;
		}
		// once there is no next function, don't return one.
		if (curNext == Address.NO_ADDRESS) {
			return curNext;
		}

		if (curNext == null || curNext.compareTo(curAddr) < 0) {
			// find the next function symbol from curAddr to end of current space
			SymbolTable symbolTable = program.getSymbolTable();
			Memory memory = program.getMemory();
			SymbolIterator symbols = symbolTable.getSymbolIterator(curAddr, true);
			if (symbols.hasNext()) {
				Symbol symbol = symbols.next();
				Address addr = symbol.getAddress();
				if (addr.getAddressSpace().equals(curAddr.getAddressSpace()) &&
					memory.contains(addr)) {
					return addr;
				}
			}
			return Address.NO_ADDRESS;
		}
		return curNext;
	}
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