docs: def _fill_role_cache(self, principal, overwrite=False):
          """Fill role cache for `principal` (User or Group), in order to avoid
          too many queries when checking role access with 'has_role'.
  
          Return role_cache of `principal`
          """
          if not self.app_state.use_cache:
              return None
  
          if not self._has_role_cache(principal) or overwrite:
              self._set_role_cache(principal, self._all_roles(principal))
          return self._role_cache(principal)