@Nonnull
	@Override
	protected DecompileResult decompileInternal(@Nonnull Workspace workspace, @Nonnull JvmClassInfo classInfo) {
		String name = classInfo.getName();
		byte[] bytecode = classInfo.getBytecode();
		ClassSource source = new ClassSource(workspace, name, bytecode);
		SinkFactoryImpl sink = new SinkFactoryImpl();
		CfrDriver driver = new CfrDriver.Builder()
				.withClassFileSource(source)
				.withOutputSink(sink)
				.withOptions(config.toMap())
				.build();
		driver.analyse(Collections.singletonList(name));
		String decompile = sink.getDecompilation();
		int configHash = getConfig().getHash();
		if (decompile == null) {
			Throwable exception = Objects.requireNonNullElseGet(sink.getException(), () -> {
				Throwable err = new IllegalStateException("CFR did not provide any output:\n- No decompilation output\n- No error message / trace");
				err.setStackTrace(new StackTraceElement[0]);
				return err;
			});
			return new DecompileResult(exception, configHash);
		}
		return new DecompileResult(filter(decompile), configHash);
	}
New CFR decompiler instance.

@param config
		Config instance.
recaf-core/src/main/java/software/coley/recaf/services/decompile/cfr/CfrDecompiler.java