code: func (c *copyOnWriteContext) freeNode(n *node) freeType {
  	if n.cow == c {
  		// clear to allow GC
  		n.items.truncate(0)
  		n.children.truncate(0)
  		n.cow = nil
  		if c.freelist.freeNode(n) {
  			return ftStored
  		} else {
  			return ftFreelistFull
  		}
  	} else {
  		return ftNotOwned
  	}
  }
docs: // freeNode frees a node within a given COW context, if it's owned by that
  // context.  It returns what happened to the node (see freeType const
  // documentation).