public AddressSetView search(AddressSetView addressSet, FoundStringCallback callback,
			boolean searchLoadedMemoryBlocksOnly, TaskMonitor monitor) {

		addressSet = addressSet == null ? program.getMemory() : addressSet;

		AddressSetView updatedAddressSet =
			updateAddressesToSearch(addressSet, searchLoadedMemoryBlocksOnly);

		AddressRangeIterator addressRanges = updatedAddressSet.getAddressRanges();

		monitor.initialize(addressSet.getNumAddresses());
		while (addressRanges.hasNext()) {
			if (monitor.isCancelled()) {
				return updatedAddressSet;
			}

			AddressRange range = addressRanges.next();
			searchRange(range, callback, monitor);
		}

		return updatedAddressSet;
	}
Searches the given addressSet for strings. 
<p>
Note: The address set searched will be modified before searching in the following ways:
<ul>
<li> if the given set is null, it will be re-initialized to encompass all of program memory</li>
<li> the set will be further culled to only include loaded memory blocks, if specified</li>
</ul>

@param addressSet the address set to search over; if null, will initialized to all memory
@param callback the callback invoked when a string is found
@param searchLoadedMemoryBlocksOnly if true, will exclude unloaded memory blocks from the search
@param monitor the user monitor
@return the updated address set used for the search
Ghidra/Features/Base/src/main/java/ghidra/program/util/string/AbstractStringSearcher.java