@Nonnull
	@Override
	protected DecompileResult decompileInternal(@Nonnull Workspace workspace, @Nonnull JvmClassInfo classInfo) {
		String name = classInfo.getName();
		byte[] bytecode = classInfo.getBytecode();
		ITypeLoader loader = new CompositeTypeLoader(
				new TargetedTypeLoader(name, bytecode),
				new WorkspaceTypeLoader(workspace)
		);
		DecompilerSettings settings = config.toSettings();
		settings.setTypeLoader(loader);
		MetadataSystem system = new MetadataSystem(loader);
		TypeReference ref = system.lookupType(name);
		DecompilationOptions decompilationOptions = new DecompilationOptions();
		decompilationOptions.setSettings(settings);
		StringWriter writer = new StringWriter();
		settings.getLanguage().decompileType(ref.resolve(), new PlainTextOutput(writer), decompilationOptions);
		String decompile = writer.toString();
		int configHash = getConfig().getHash();
		if (decompile == null)
			return new DecompileResult(new IllegalStateException("Missing decompilation output"), configHash);
		return new DecompileResult(decompile, configHash);
	}
New Procyon decompiler instance.

@param gsonProvider
		Gson provider to register deserialization with.
@param config
		Config instance.
recaf-core/src/main/java/software/coley/recaf/services/decompile/procyon/ProcyonDecompiler.java