@Nonnull
	@Override
	public IconProvider getFileInfoIconProvider(@Nonnull Workspace workspace,
												@Nonnull WorkspaceResource resource,
												@Nonnull FileBundle bundle,
												@Nonnull FileInfo info) {
		// Built-in info match
		if (info.isTextFile()) {
			String name = info.getName();
			String ext = name.substring(name.lastIndexOf('.') + 1).toLowerCase();
			return (CODE_EXTENSIONS.contains(ext)) ? TEXT_CODE : TEXT;
		} else if (info.isZipFile()) {
			String name = info.getName();
			String ext = name.substring(name.lastIndexOf('.') + 1).toLowerCase();
			if (ext.equals("jar") || ext.equals("jmod") || ext.equals("war"))
				return JAR;
			if (ext.equals("apk"))
				return ANDROID;
			return ZIP;
		}

		// Content match
		byte[] content = info.getRawContent();
		if (ByteHeaderUtil.matchAny(content, ByteHeaderUtil.IMAGE_HEADERS))
			return IMAGE;
		if (ByteHeaderUtil.match(content, ByteHeaderUtil.CLASS))
			return JAR;
		if (ByteHeaderUtil.matchAny(content, ByteHeaderUtil.PROGRAM_HEADERS))
			return EXECUTABLE;
		if (ByteHeaderUtil.matchAny(content, ByteHeaderUtil.AUDIO_HEADERS))
			return AUDIO;
		if (ByteHeaderUtil.matchAny(content, ByteHeaderUtil.VIDEO_HEADERS))
			return VIDEO;
		if (ByteHeaderUtil.match(content, ByteHeaderUtil.DEX))
			return ANDROID;

		// No obvious association
		return UNKNOWN;
	}
Basic implementation for {@link FileIconProviderFactory}.

@author Matt Coley
recaf-ui/src/main/java/software/coley/recaf/services/cell/icon/BasicFileIconProviderFactory.java