@Override
	public void onUpdateFile(@Nonnull WorkspaceResource resource, @Nonnull FileBundle bundle, @Nonnull FileInfo oldFile, @Nonnull FileInfo newFile) {
		FxThreadUtil.run(() -> {
			if (isTargetResource(resource)) {
				WorkspaceTreeNode node = getOrCreateNodeByPath(rootPath
						.child(resource)
						.child(bundle)
						.child(interceptDirectoryName(oldFile.getDirectoryName()))
						.child(oldFile));
				node.setValue(rootPath
						.child(resource)
						.child(bundle)
						.child(newFile.getDirectoryName())
						.child(newFile));
			} else {
				WorkspaceResource containingResource = resource.getContainingResource();
				if (containingResource != null && isTargetResource(containingResource)) {
					WorkspaceTreeNode node = getOrCreateNodeByPath(rootPath.child(containingResource)
							.embeddedChildContainer()
							.child(resource)
							.child(bundle)
							.child(interceptDirectoryName(oldFile.getDirectoryName()))
							.child(oldFile));
					node.setValue(rootPath.child(containingResource)
							.embeddedChildContainer()
							.child(resource)
							.child(bundle)
							.child(interceptDirectoryName(newFile.getDirectoryName()))
							.child(newFile));
				}
			}
		});
	}
@param resource
		Resource to check.

@return {@code true} when it belongs to the target workspace.
recaf-ui/src/main/java/software/coley/recaf/ui/control/tree/WorkspaceRootTreeNode.java