code: func (o *Object) ChildPathObjectOrFunc(path string, fn func() (*Object, error)) (*Object, error) {
  	attrName := "camliPath:" + path
  	if v := o.Attr(attrName); v != "" {
  		br, ok := blob.Parse(v)
  		if !ok {
  			return nil, fmt.Errorf("invalid blobref %q already stored at camliPath %q", br, path)
  		}
  		return o.h.ObjectFromRef(br)
  	}
  	newObj, err := fn()
  	if err != nil {
  		return nil, err
  	}
  	if err := o.SetAttr(attrName, newObj.PermanodeRef().String()); err != nil {
  		return nil, err
  	}
  	return newObj, nil
  }
docs: // ChildPathObjectOrFunc returns the child object from the permanode o,
  // given by the "camliPath:xxxx" attribute, where xxx is the provided
  // path. If the path doesn't exist, the provided func should return an
  // appropriate object. If the func fails, the return error is
  // returned directly without any attempt to make a permanode.