code: func (n *metadataNode) freeze(c context.Context) {
  	n.assertNonFrozen()
  
  	// md may be already non-nil for the root, this is fine.
  	if n.md == nil {
  		n.md = mergeIntoPrefixMetadata(c, n.prefix, n.acls)
  	}
  	n.acls = nil // mark as frozen, release unnecessary memory
  
  	for _, child := range n.children {
  		child.freeze(c)
  	}
  }
docs: // freeze marks the node and its subtree as fully constructed, calculating their
  // PrefixMetadata from attached ACLs.
  //
  // The context is used only for logging.