type lfstack … func (head *lfstack) push(node *lfnode) { … } func (head *lfstack) pop() unsafe.Pointer { … } func (head *lfstack) empty() bool { … } // lfnodeValidate panics if node is not a valid address for use with // lfstack.push. This only needs to be called when node is allocated. func lfnodeValidate(node *lfnode) { … } func lfstackPack(node *lfnode, cnt uintptr) uint64 { … } func lfstackUnpack(val uint64) *lfnode { … }