code: func (p *policy) Evaluate(signatureSet []*cb.SignedData) error {
  	if p == nil {
  		return fmt.Errorf("No such policy")
  	}
  	idAndS := make([]IdentityAndSignature, len(signatureSet))
  	for i, sd := range signatureSet {
  		idAndS[i] = &deserializeAndVerify{
  			signedData:   sd,
  			deserializer: p.deserializer,
  		}
  	}
  
  	ok := p.evaluator(deduplicate(idAndS), make([]bool, len(signatureSet)))
  	if !ok {
  		return errors.New("signature set did not satisfy policy")
  	}
  	return nil
  }
docs: // Evaluate takes a set of SignedData and evaluates whether this set of signatures satisfies the policy