code: func (r *Rule) score() int {
  	score := 0
  	// wilcard rules are less specific
  	if utils.SliceContainsStr(r.Resources, Wildcard) {
  		score -= 4
  	} else if len(r.Resources) == 1 {
  		// rules that match specific resource are more specific than
  		// fields that match several resources
  		score += 2
  	}
  	// rules that have wilcard verbs are less specific
  	if utils.SliceContainsStr(r.Verbs, Wildcard) {
  		score -= 2
  	}
  	// rules that supply 'where' or 'actions' are more specific
  	// having 'where' or 'actions' is more important than
  	// whether the rules are wildcard or not, so here we have +8 vs
  	// -4 and -2 score penalty for wildcards in resources and verbs
  	if len(r.Where) > 0 {
  		score += 8
  	}
  	// rules featuring actions are more specific
  	if len(r.Actions) > 0 {
  		score += 8
  	}
  	return score
  }
docs: // score is a sorting score of the rule, the more the score, the more
  // specific the rule is