@Override
	public final LoadResults<? extends DomainObject> load(ByteProvider provider, String loadedName,
			Project project, String projectFolderPath, LoadSpec loadSpec, List<Option> options,
			MessageLog messageLog, Object consumer, TaskMonitor monitor) throws IOException,
			CancelledException, VersionException, LoadException {

		if (!loadSpec.isComplete()) {
			throw new LoadException("Load spec is incomplete");
		}

		List<Loaded<Program>> loadedPrograms = loadProgram(provider, loadedName, project,
			projectFolderPath, loadSpec, options, messageLog, consumer, monitor);

		boolean success = false;
		try {
			for (Loaded<Program> loadedProgram : loadedPrograms) {
				monitor.checkCancelled();
				Program program = loadedProgram.getDomainObject();
				applyProcessorLabels(options, program);
				program.setEventsEnabled(true);
			}

			// Subclasses can perform custom post-load fix-ups
			postLoadProgramFixups(loadedPrograms, project, loadSpec, options, messageLog, monitor);

			// Discard unneeded programs
			Iterator<Loaded<Program>> iter = loadedPrograms.iterator();
			while (iter.hasNext()) {
				Loaded<Program> loaded = iter.next();
				if (loaded.shouldDiscard()) {
					iter.remove();
					loaded.release(consumer);
				}
			}

			success = true;
			return new LoadResults<Program>(loadedPrograms);
		}
		finally {
			if (!success) {
				release(loadedPrograms, consumer);
			}
			postLoadCleanup(success);
		}
	}
Loads program bytes into the specified {@link Program}.  This method will not create any new
{@link Program}s.  It is only for adding to an existing {@link Program}.
<p>
NOTE: The loading that occurs in this method will automatically be done in a transaction.

@param provider The bytes to load into the {@link Program}.
@param loadSpec The {@link LoadSpec} to use during load.
@param options The load options.
@param messageLog The message log.
@param program The {@link Program} to load into.
@param monitor A cancelable task monitor.
@throws LoadException if the load failed in an expected way.
@throws IOException if there was an IO-related problem loading.
@throws CancelledException if the user cancelled the load.
Ghidra/Features/Base/src/main/java/ghidra/app/util/opinion/AbstractProgramLoader.java