code: func (k *Kerl) Squeeze(length int) (Trits, error) {
  	if length%HashTrinarySize != 0 {
  		return nil, ErrInvalidSqueezeLength
  	}
  
  	out := make(Trits, length)
  	for i := 1; i <= length/HashTrinarySize; i++ {
  		h := k.s.Sum(nil)
  		ts, err := KerlBytesToTrits(h)
  		if err != nil {
  			return nil, err
  		}
  		//ts[HashSize-1] = 0
  		copy(out[HashTrinarySize*(i-1):HashTrinarySize*i], ts)
  		k.s.Reset()
  		for i, e := range h {
  			h[i] = ^e
  		}
  		if _, err := k.s.Write(h); err != nil {
  			return nil, err
  		}
  	}
  
  	return out, nil
  }
docs: // Squeeze out length trits. Length has to be a multiple of HashTrinarySize.