public function checkPermissionsHasAnyOf($requiredPermissions, User $user = null)
 {
     assert('is_int($requiredPermissions)');
     assert('in_array($requiredPermissions,
                          array(Permission::READ, Permission::WRITE, Permission::DELETE,
                                Permission::CHANGE_PERMISSIONS, Permission::CHANGE_OWNER))');
     if ($user == null) {
         $user = Yii::app()->user->userModel;
     }
     if (Permission::ALL == $this->resolveEffectivePermissionsForOwnerAndCreatedByUser($user)) {
         return;
     } elseif ($this->isDeleting) {
         //Avoid potential problems with accessing information already removed from munge.
         //Potentially there could be some gap with doing this, but it improves performance on complex
         //role/group setups.
         return;
     } else {
         if (SECURITY_OPTIMIZED) {
             $modelClassName = get_called_class();
             $moduleClassName = $modelClassName::getModuleClassName();
             if (static::hasReadPermissionsOptimization() && $moduleClassName != null && is_subclass_of($moduleClassName, 'SecurableModule') && AllPermissionsOptimizationUtil::checkPermissionsHasAnyOf($requiredPermissions, $this, $user)) {
                 return;
             }
         }
         parent::checkPermissionsHasAnyOf($requiredPermissions, $user);
     }
 }