@Nullable
	public MappingApplicationListener createBundledMappingApplicationListener() {
		final List<MappingApplicationListener> listeners = mappingApplicationListeners;

		// Simple edge cases.
		if (listeners.isEmpty())
			return null;
		else if (listeners.size() == 1)
			return listeners.getFirst();

		// Bundle multiple listeners.
		return new MappingApplicationListener() {
			@Override
			public void onPreApply(@Nonnull Workspace workspace, @Nonnull MappingResults mappingResults) {
				Unchecked.checkedForEach(listeners, listener -> listener.onPreApply(workspace, mappingResults),
						(listener, t) -> logger.error("Exception thrown before applying mappings", t));
			}

			@Override
			public void onPostApply(@Nonnull Workspace workspace, @Nonnull MappingResults mappingResults) {
				Unchecked.checkedForEach(listeners, listener -> listener.onPostApply(workspace, mappingResults),
						(listener, t) -> logger.error("Exception thrown after applying mappings", t));
			}
		};
	}
@return Application listener encompassing all the current items in {@link #mappingApplicationListeners},
or {@code null} if there are no listeners.
recaf-core/src/main/java/software/coley/recaf/services/mapping/MappingListeners.java