code: func (pool *stringPool) Append(s string) (TokenID, error) {
  	begin := pool.buffer.Len()
  	bstr := []byte(s)
  	bstr = smaz.Compress(bstr)
  	n, error := pool.buffer.Write(bstr)
  	if error != nil {
  		return 0, error
  	}
  	end := begin + n
  	pool.Lock()
  	ixitem := TokenID(len(pool.items))
  	pool.items = append(pool.items, region{begin: begin, end: end})
  	pool.Unlock()
  	return ixitem, nil
  }
docs: // Append adds new string to string pool. Function returns token ID and error.
  // Strings doesn't need to be unique