@Override
	public boolean added(Program program, AddressSetView set, TaskMonitor monitor, MessageLog log)
			throws CancelledException {

		AddressSet unanalyzedSet = new AddressSet(set);

		removeUninitializedBlocks(program, unanalyzedSet);

		try {
			// first split out all the function locations, make those the starts
			// remove those from the bodies from the given set of addresses
			Set<Address> locations = new HashSet<Address>();
			findLocationsRemoveFunctionBodies(program, unanalyzedSet, locations, monitor);

			int locationCount = locations.size();
			monitor.initialize(locationCount);
			if (locationCount != 0) {
				monitor.setMessage(getName());
				AddressSetView resultSet = runParallelAddressAnalysis(program, locations, null, maxThreadCount, monitor);
				// get rid of any reached addresses
				unanalyzedSet.delete(resultSet);
			}

			// now slog through the rest single threaded
			if (!unanalyzedSet.isEmpty()) {
				analyzeSet(program, unanalyzedSet, monitor);
			}
		}
		catch (CancelledException ce) {
			throw ce;
		}
		catch (Exception e) {
			Msg.error(this, "caught exception", e);
			e.printStackTrace();
		}

		return true;
	}
Called to register a more specific analyzer.

@param processorName
Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/analysis/ConstantPropagationAnalyzer.java