code: func (t *Immutable) ForEach(fn func(k, v []byte) bool) {
  	// Add the root node and all children to the left of it to the list of
  	// nodes to traverse and loop until they, and all of their child nodes,
  	// have been traversed.
  	var parents parentStack
  	for node := t.root; node != nil; node = node.left {
  		parents.Push(node)
  	}
  	for parents.Len() > 0 {
  		node := parents.Pop()
  		if !fn(node.key, node.value) {
  			return
  		}
  
  		// Extend the nodes to traverse by all children to the left of
  		// the current node's right child.
  		for node := node.right; node != nil; node = node.left {
  			parents.Push(node)
  		}
  	}
  }
docs: // ForEach invokes the passed function with every key/value pair in the treap
  // in ascending order.