code: func (roles ACLRoles) HashKey() string {
  	cacheKeyHash, err := blake2b.New256(nil)
  	if err != nil {
  		panic(err)
  	}
  	for _, role := range roles {
  		cacheKeyHash.Write([]byte(role.ID))
  		// including the modify index prevents a role set from being
  		// cached if one of the roles has changed
  		binary.Write(cacheKeyHash, binary.BigEndian, role.ModifyIndex)
  	}
  	return fmt.Sprintf("%x", cacheKeyHash.Sum(nil))
  }
docs: // HashKey returns a consistent hash for a set of roles.