code: func BreakdownRule(rule rbacv1.PolicyRule) []rbacv1.PolicyRule {
  	subrules := []rbacv1.PolicyRule{}
  	for _, group := range rule.APIGroups {
  		for _, resource := range rule.Resources {
  			for _, verb := range rule.Verbs {
  				if len(rule.ResourceNames) > 0 {
  					for _, resourceName := range rule.ResourceNames {
  						subrules = append(subrules, rbacv1.PolicyRule{APIGroups: []string{group}, Resources: []string{resource}, Verbs: []string{verb}, ResourceNames: []string{resourceName}})
  					}
  
  				} else {
  					subrules = append(subrules, rbacv1.PolicyRule{APIGroups: []string{group}, Resources: []string{resource}, Verbs: []string{verb}})
  				}
  
  			}
  		}
  	}
  
  	// Non-resource URLs are unique because they only combine with verbs.
  	for _, nonResourceURL := range rule.NonResourceURLs {
  		for _, verb := range rule.Verbs {
  			subrules = append(subrules, rbacv1.PolicyRule{NonResourceURLs: []string{nonResourceURL}, Verbs: []string{verb}})
  		}
  	}
  
  	return subrules
  }
docs: // BreadownRule takes a rule and builds an equivalent list of rules that each have at most one verb, one
  // resource, and one resource name