@Nonnull
	@SuppressWarnings("unchecked")
	public static <B extends FileInfoBuilder<?>> B forFile(FileInfo info) {
		FileInfoBuilder<?> builder;
		if (info.isZipFile()) {
			// Handle different container types
			if (info instanceof JarFileInfo jarInfo) {
				builder = new JarFileInfoBuilder(jarInfo);
			} else if (info instanceof JModFileInfo modInfo) {
				builder = new JModFileInfoBuilder(modInfo);
			} else if (info instanceof WarFileInfo warInfo) {
				builder = new WarFileInfoBuilder(warInfo);
			} else {
				builder = new ZipFileInfoBuilder(info.asZipFile());
			}
		} else if (info instanceof DexFileInfo dexInfo) {
			builder = new DexFileInfoBuilder(dexInfo);
		} else if (info instanceof ModulesFileInfo modInfo) {
			builder = new ModulesFileInfoBuilder(modInfo);
		} else if (info instanceof TextFileInfo textInfo) {
			builder = new TextFileInfoBuilder(textInfo);
		} else if (info instanceof BinaryXmlFileInfo xmlInfo) {
			builder = new BinaryXmlFileInfoBuilder(xmlInfo);
		} else if (info instanceof ArscFileInfo arscInfo) {
			builder = new ArscFileInfoBuilder(arscInfo);
		} else {
			builder = new FileInfoBuilder<>(info);
		}
		return (B) builder;
	}
Common builder info for {@link FileInfo}.

@param <B>
		Self type. Exists so implementations don't get stunted in their chaining.

@author Matt Coley
recaf-core/src/main/java/software/coley/recaf/info/builder/FileInfoBuilder.java