public void save(Project project, Object consumer, MessageLog messageLog, TaskMonitor monitor)
			throws CancelledException, IOException {
		boolean success = false;
		try {
			for (Loaded<T> loaded : loadedList) {
				loaded.save(project, messageLog, monitor);
			}
			success = true;
		}
		finally {
			if (!success) {
				for (Loaded<T> loaded : this) {
					try {
						loaded.release(consumer);
						loaded.deleteSavedDomainFile(consumer);
					}
					catch (IOException e1) {
						Msg.error(getClass(), "Failed to delete: " + loaded);
					}
				}
			}
		}
	}
{@link Loaded#save(Project, MessageLog, TaskMonitor) Saves} each {@link Loaded} 
{@link DomainObject} to the given {@link Project}.
<p>
NOTE: If any fail to save, none will be saved (already saved {@link DomainFile}s will be
cleaned up/deleted), and all {@link Loaded} {@link DomainObject}s will have been
{@link #release(Object) released}.

@param project The {@link Project} to save to
@param consumer the consumer
@param messageLog The log
@param monitor A cancelable task monitor
@throws CancelledException if the operation was cancelled
@throws IOException If there was a problem saving
@see Loaded#save(Project, MessageLog, TaskMonitor)
Ghidra/Features/Base/src/main/java/ghidra/app/util/opinion/LoadResults.java