def security_converge(self, dry: bool = False) -> Dict[str, Any]:
        """
        This method is useful when you use:

        - `class_permission_name`
        - `previous_class_permission_name`
        - `method_permission_name`
        - `previous_method_permission_name`

        migrates all permissions to the new names on all the Roles

        :param dry: If True will not change DB
        :return: Dict with all computed necessary operations
        """
        if self.menu is None:
            return {}
        return self.sm.security_converge(self.baseviews, self.menu.menu, dry)

        This method is useful when you use:

        - `class_permission_name`
        - `previous_class_permission_name`
        - `method_permission_name`
        - `previous_method_permission_name`

        migrates all permissions to the new names on all the Roles

        :param dry: If True will not change DB
        :return: Dict with all computed necessary operations
        
flask_appbuilder/base.py