@Nonnull
	public <T> CompletableFuture<Void> schedule(@Nonnull ExecutorService supplierService, @Nullable T fallback,
	                                            @Nonnull Supplier<T> supplier, @Nonnull Consumer<T> consumer) {
		if (supplierService.isShutdown())
			return CompletableFuture.completedFuture(null);
		return CompletableFuture.supplyAsync(ThreadUtil.wrap(supplier, fallback), supplierService)
				.thenAcceptAsync(ThreadUtil.wrap(consumer), FxThreadUtil.executor());
	}
@param supplierService
		Executor service to run the supplier on.
@param fallback
		Fallback value when the supplier action encounters an exception.
@param supplier
		Value supplier.
@param consumer
		Value consumer, run on the JavaFX UI thread.
@param <T>
		Value type.

@return Future of consumer completion.
recaf-ui/src/main/java/software/coley/recaf/ui/control/richtext/Editor.java