code: func (d *dir) find(q string) node {
  	q = strings.Trim(q, "/")
  	i := strings.Index(q, "/")
  
  	if q == "" {
  		return d
  	}
  
  	if i == 0 {
  		panic("shouldn't happen, no root paths")
  	}
  
  	var component string
  	if i < 0 {
  		// No more path components
  		component = q
  	} else {
  		component = q[:i]
  	}
  
  	child, ok := d.children[component]
  	if !ok {
  		// Node was not found. Return p and the current node.
  		return d
  	}
  
  	if child.isdir() {
  		// traverse down!
  		q = q[i+1:]
  		return child.(*dir).find(q)
  	}
  
  	return child
  }
docs: // find searches for the node, given path q in dir. If the node is found, it
  // will be returned. If the node is not found, the closet existing parent. If
  // the node is found, the returned (node).path() will match q.