docs: def _batch_call_watchers(self_):
          """
          Batch call a set of watchers based on the parameter value
          settings in kwargs using the queued Event and watcher objects.
          """
          while self_.self_or_cls.param._events:
              event_dict = OrderedDict([((event.name, event.what), event)
                                        for event in self_.self_or_cls.param._events])
              watchers = self_.self_or_cls.param._watchers[:]
              self_.self_or_cls.param._events = []
              self_.self_or_cls.param._watchers = []
  
              for watcher in watchers:
                  events = [self_._update_event_type(watcher, event_dict[(name, watcher.what)],
                                                     self_.self_or_cls.param._TRIGGER)
                            for name in watcher.parameter_names
                            if (name, watcher.what) in event_dict]
                  with batch_watch(self_.self_or_cls, run=False):
                      if watcher.mode == 'args':
                          watcher.fn(*events)
                      else:
                          watcher.fn(**{c.name:c.new for c in events})