public int setAdditional(ProgramSelection selection) {
		if (selection == null) {
			return 0;
		}
		int numConflicts = 0;
		int instructionAlignment = program.getLanguage().getInstructionAlignment();
		for (Address addr : selection.getAddresses(true)) {
			if (addr.getOffset() % instructionAlignment != 0) {
				continue;
			}
			if (params.isRestrictedByContext()) {
				if (!params.isContextCompatible(addr)) {
					numConflicts += 1;
					continue;
				}
			}
			if (program.getFunctionManager().getFunctionAt(addr) == null) {
				additionalNonStarts.add(addr);
			}
			else {
				additionalStarts.add(addr);
			}
		}
		return numConflicts;
	}
Adds a {@ProgramSelection} to the training set. Function starts within the selection are
added as positive examples and everything else is added as a negative example.

<p>
Addresses which are not aligned or which do not agree with the context register values
in the {@code params} variable of the constructor are ignored.
@param selection selection to add
@return number of aligned addresses conflicting with the context register data specified in
{@code params}
Ghidra/Extensions/MachineLearning/src/main/java/ghidra/machinelearning/functionfinding/RandomForestTrainingTask.java