code: func CreateAdmissionReview(attr *generic.VersionedAttributes) admissionv1beta1.AdmissionReview {
  	gvk := attr.GetKind()
  	gvr := attr.GetResource()
  	aUserInfo := attr.GetUserInfo()
  	userInfo := authenticationv1.UserInfo{
  		Extra:    make(map[string]authenticationv1.ExtraValue),
  		Groups:   aUserInfo.GetGroups(),
  		UID:      aUserInfo.GetUID(),
  		Username: aUserInfo.GetName(),
  	}
  	dryRun := attr.IsDryRun()
  
  	// Convert the extra information in the user object
  	for key, val := range aUserInfo.GetExtra() {
  		userInfo.Extra[key] = authenticationv1.ExtraValue(val)
  	}
  
  	return admissionv1beta1.AdmissionReview{
  		Request: &admissionv1beta1.AdmissionRequest{
  			UID: uuid.NewUUID(),
  			Kind: metav1.GroupVersionKind{
  				Group:   gvk.Group,
  				Kind:    gvk.Kind,
  				Version: gvk.Version,
  			},
  			Resource: metav1.GroupVersionResource{
  				Group:    gvr.Group,
  				Resource: gvr.Resource,
  				Version:  gvr.Version,
  			},
  			SubResource: attr.GetSubresource(),
  			Name:        attr.GetName(),
  			Namespace:   attr.GetNamespace(),
  			Operation:   admissionv1beta1.Operation(attr.GetOperation()),
  			UserInfo:    userInfo,
  			Object: runtime.RawExtension{
  				Object: attr.VersionedObject,
  			},
  			OldObject: runtime.RawExtension{
  				Object: attr.VersionedOldObject,
  			},
  			DryRun: &dryRun,
  		},
  	}
  }
docs: // CreateAdmissionReview creates an AdmissionReview for the provided admission.Attributes