code: func (isp *inquireableSignaturePolicy) SatisfiedBy() []policies.PrincipalSet {
  	rootId := fmt.Sprintf("%d", 0)
  	root := graph.NewTreeVertex(rootId, isp.sigPol.Rule)
  	computePolicyTree(root)
  	var res []policies.PrincipalSet
  	for _, perm := range root.ToTree().Permute() {
  		principalSet := principalsOfTree(perm, isp.sigPol.Identities)
  		if len(principalSet) == 0 {
  			return nil
  		}
  		res = append(res, principalSet)
  	}
  	return res
  }
docs: // SatisfiedBy returns a slice of PrincipalSets that each of them
  // satisfies the policy.