code: func isSimpleResourceRule(rule *rbacv1.PolicyRule) (simpleResource, bool) {
  	resource := simpleResource{}
  
  	// If we have "complex" rule attributes, return early without allocations or expensive comparisons
  	if len(rule.ResourceNames) > 1 || len(rule.NonResourceURLs) > 0 {
  		return resource, false
  	}
  	// If we have multiple api groups or resources, return early
  	if len(rule.APIGroups) != 1 || len(rule.Resources) != 1 {
  		return resource, false
  	}
  
  	// Test if this rule only contains APIGroups/Resources/Verbs/ResourceNames
  	simpleRule := &rbacv1.PolicyRule{APIGroups: rule.APIGroups, Resources: rule.Resources, Verbs: rule.Verbs, ResourceNames: rule.ResourceNames}
  	if !reflect.DeepEqual(simpleRule, rule) {
  		return resource, false
  	}
  
  	if len(rule.ResourceNames) == 0 {
  		resource = simpleResource{Group: rule.APIGroups[0], Resource: rule.Resources[0], ResourceNameExist: false}
  	} else {
  		resource = simpleResource{Group: rule.APIGroups[0], Resource: rule.Resources[0], ResourceNameExist: true, ResourceName: rule.ResourceNames[0]}
  	}
  
  	return resource, true
  }
docs: // isSimpleResourceRule returns true if the given rule contains verbs, a single resource, a single API group, at most one Resource Name, and no other values