private AddressIterator[] getSearchIterators() {
		//
		// This code used to get specific iterators for labels, comments, etc, depending
		// on what options were selected (which is the fastest way to search).  However,
		// this approach missed auto comments and structure comments.
		//
		// The idea now is to get iterators that will return addresses for every defined
		// code unit, which works because all on-screen, non-database items are associated
		// with a defined code unit.   See the history for the original code.  See the
		// header for more info.
		//
		List<AddressIterator> iterators = new ArrayList<>();

		Listing listing = program.getListing();

		InstructionIterator instructions =
			listing.getInstructions(searchAddresses, options.isForward());
		iterators.add(new InstructionSearchAddressIterator(instructions));

		DataIterator data = listing.getDefinedData(searchAddresses, options.isForward());
		iterators.add(new DataSearchAddressIterator(data, options.isForward()));

		boolean all = options.searchAllFields();

		if (options.searchComments() || all) {
			iterators.add(listing.getCommentAddressIterator(searchAddresses, options.isForward()));
		}
		if (options.searchLabels() || all) {
			SymbolIterator labels = program.getSymbolTable()
					.getPrimarySymbolIterator(searchAddresses, options.isForward());
			iterators.add(new LabelSearchAddressIterator(labels));
		}
		return iterators.toArray(new AddressIterator[iterators.size()]);
	}
Constructor
@param tool the tool
@param program current program
@param startLocation location from where to begin searching
@param set address set; may be null
@param options search options
@param monitor progress monitor
Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/searchtext/ListingDisplaySearcher.java