code: func (c *Compressor) SetDictionary(dict *Dictionary) {
  	c.dict.Dict = dict.Dict
  
  	// If the dictionary of hashes has not been computed then it must
  	// be computed now
  	if dict.H == nil {
  		c.dict.H = make(map[uint32]uint32)
  
  		f := uint32(0)
  		for ii := range c.dict.Dict {
  			i := uint32(ii)
  
  			if i < block {
  				f = (f*radix + uint32(c.dict.Dict[i])) & clip
  			} else {
  				if i%block == 0 {
  					_, exists := c.dict.H[f]
  					if !exists {
  						c.dict.H[f] = uint32(i - block)
  					}
  				}
  
  				f = (radix*(f-c.save[c.dict.Dict[i-block]]) +
  					uint32(c.dict.Dict[i])) & clip
  			}
  		}
  	} else {
  		c.dict.H = dict.H
  	}
  }
docs: // SetDictionary sets a dictionary. When a dictionary has been loaded
  // references are made to the dictionary (rather than internally in
  // the compressed data itself)