@Override
					public AddressSetView process(Address loc, TaskMonitor taskMonitor) {
						synchronized (analyzedSet) {
							if (analyzedSet.contains(loc)) {
								taskMonitor.incrementProgress(1);
								return EMPTY_ADDRESS_SET;
							}
						}
			
						try {
							AddressSetView result = analyzeLocation(program, loc, restrictedSet, taskMonitor);
							synchronized (analyzedSet) {
								analyzedSet.add(result);
							}
			
							taskMonitor.incrementProgress(1);
							return result;
						}
						catch (CancelledException e) {
							return null; // monitor was cancelled
						}
					}
Run constant an analysis at each location in parallel

@param program program
@param locations points to analyze
@param restrictedSet set to restrict analysis to, null if none
@param maxThreads maximum number of threads to use
@param monitor to cancel
@return set of addresses covered during analysis

@throws CancelledException if cancelled
@throws InterruptedException if interrupted
@throws Exception any exception
Ghidra/Features/Base/src/main/java/ghidra/app/services/AbstractAnalyzer.java