@Nullable
	@SuppressWarnings("deprecation")
	public synchronized WorkspaceTreeNode getNodeByPath(@Nonnull PathNode<?> path) {
		PathNode<?> value = getValue();
		if (path.equals(value))
			return this;

		for (TreeItem<PathNode<?>> child : getChildren())
			if (path.isDescendantOf(child.getValue()) && child instanceof WorkspaceTreeNode childNode)
				return childNode.getNodeByPath(path);

		return null;
	}
@Test
	void getNodeByPath() {
		WorkspaceTreeNode root = new WorkspaceTreeNode(p5);
		root.getOrCreateNodeByPath(p1a);

		// Get each node, should exist.
		assertNotNull(root.getNodeByPath(p1a), "Could not get info");
		assertNotNull(root.getNodeByPath(p2), "Could not get package of info");
		assertNotNull(root.getNodeByPath(p2b), "Could not get parent package of info");
		assertNotNull(root.getNodeByPath(p3c), "Could not get bundle");
		assertNotNull(root.getNodeByPath(p4), "Could not get resource");
	}