code: func (e *Entity) SetPath(path ...string) (*Entity, error) {
  	var cur = e
  	for i, prop := range path {
  		val, ok := cur.Objects[Property(prop)]
  		if !ok {
  			cur.Objects[Property(prop)] = NewEntity()
  			cur = cur.Objects[Property(prop)].(*Entity)
  			continue
  		}
  		cur, ok = val.(*Entity)
  		if !ok {
  			return nil, errors.Wrapf(ErrPathNotFound, "depth %d property %v, not an entity %#v", i, prop, val)
  		}
  	}
  	return cur, nil
  }
docs: // SetPath ensures that a path exists, creating Entities along the way if
  // necessary. If it encounters a non-Entity, it will return an error.