public static List<Example<Label>> getVectorsFromAddresses(Program program,
			AddressSetView source, Label label, int numPreBytes, int numInitialBytes,
			boolean includeBitFeatures, TaskMonitor monitor) throws CancelledException {
		List<Example<Label>> examples = new ArrayList<>();
		monitor.initialize(source.getNumAddresses());
		Iterator<Address> addressIter = source.getAddresses(true);
		while (addressIter.hasNext()) {
			monitor.checkCancelled();
			Address addr = addressIter.next();
			monitor.incrementProgress(1L);
			List<Feature> trainingVector =
				getFeatureVector(program, addr, numPreBytes, numInitialBytes, includeBitFeatures);
			if (trainingVector.isEmpty()) {
				continue;
			}
			ArrayExample<Label> vec = new ArrayExample<>(label, trainingVector);
			examples.add(vec);
		}
		return examples;
	}
Generates a feature vector for every address in {@code source} and applies the {@Label}
{@code label}

@param program program
@param source input addresses
@param label label to apply
@param numPreBytes bytes before address to include
@param numInitialBytes bytes after and including addresses
@param includeBitFeatures whether to include bit-level features
@param monitor monitor 
@return list of vectors
@throws CancelledException if monitor is canceled
Ghidra/Extensions/MachineLearning/src/main/java/ghidra/machinelearning/functionfinding/ModelTrainingUtils.java