code: func (b *Builder) Insert(key []byte, val uint64) error {
  	// ensure items are added in lexicographic order
  	if bytes.Compare(key, b.last) < 0 {
  		return ErrOutOfOrder
  	}
  	if len(key) == 0 {
  		b.len = 1
  		b.unfinished.setRootOutput(val)
  		return nil
  	}
  
  	prefixLen, out := b.unfinished.findCommonPrefixAndSetOutput(key, val)
  	b.len++
  	err := b.compileFrom(prefixLen)
  	if err != nil {
  		return err
  	}
  	b.copyLastKey(key)
  	b.unfinished.addSuffix(key[prefixLen:], out)
  
  	return nil
  }
docs: // Insert the provided value to the set being built.
  // NOTE: values must be inserted in lexicographical order.