code: public DepTreeNode createOrGet(String path, URI uri) {
  		if (path.startsWith("/")) { //$NON-NLS-1$
  			throw new IllegalArgumentException(path);
  		}
  		if (path.length() == 0)
  			return this;
  
  		String[] pathComps = path.split("/"); //$NON-NLS-1$
  		DepTreeNode node = this;
  		int i = 0;
  		for (String comp : pathComps) {
  			DepTreeNode childNode = node.getChild(comp);
  			if (childNode == null) {
  				childNode = new DepTreeNode(comp, i == pathComps.length-1 ? uri : null);
  				node.add(childNode);
  			}
  			node = childNode;
  			i++;
  		}
  		return node;
  	}
docs: Returns the node at the specified path location within the tree, or
  creates it if it is not already in the tree. Will create any required
  parent nodes.
  
  @param path
  The path name, relative to this node, of the node to return.
  @param uri
  the source URI
  @return The node at the specified path.