code: func (r *Rollsum32) Sum(b []byte) []byte {
  	if b != nil && cap(b)-len(b) >= 4 {
  		p := len(b)
  		b = b[:len(b)+4]
  		r.Rollsum32Base.GetSum(b[p:])
  		return b
  	} else {
  		result := []byte{0, 0, 0, 0}
  		r.Rollsum32Base.GetSum(result)
  		return append(b, result...)
  	}
  }
docs: // Sum appends the current hash to b and returns the resulting slice.
  // It does not change the underlying hash state.
  // Note that this is to allow Sum() to reuse a preallocated buffer