public void generate() {
		// Linking items in reverse order from the list.
		NameGeneratorFilter filter = null;
		List<FilterWithConfigNode<?>> list = filters.getItems();
		for (int i = list.size() - 1; i >= 0; i--) {
			FilterWithConfigNode<?> configurableFilter = list.get(i);
			filter = configurableFilter.build(filter);
		}
		NameGeneratorFilter finalFilter = filter;

		// Generate the mappings
		previewGroup.setDisable(true);
		CompletableFuture.supplyAsync(() -> {
			// Get provider from current chosen option, or fallback if option is unavailable
			NameGeneratorProvider<?> provider = nameGeneratorProviders.getProviders()
					.getOrDefault(currentProvider.get(), fallbackProvider);
			NameGenerator generator = provider.createGenerator();

			// Pass along the workspace for name deconfliction
			if (generator instanceof DeconflictingNameGenerator deconflictingGenerator)
				deconflictingGenerator.setWorkspace(workspace);

			// Generate the mappings
			return mappingGenerator.generate(workspace, workspace.getPrimaryResource(), inheritanceGraph, generator, finalFilter);
		}).whenCompleteAsync((mappings, error) -> {
			previewGroup.setDisable(false);
			if (mappings != null) {
				mappingsToApply.set(mappings);
			} else if (error != null) {
				logger.error("Failed to generate mappings", error);
			}
		}, FxThreadUtil.executor());
	}
Generates the mappings for the current settings. The result is displayed in the {@link #previewGroup}.
recaf-ui/src/main/java/software/coley/recaf/ui/pane/MappingGeneratorPane.java