code: def _uniquely_named_callbacks(self):
          
          grouped_cbs, names_set_by_user = self._callbacks_grouped_by_name()
          for name, cbs in grouped_cbs.items():
              if len(cbs) > 1 and name in names_set_by_user:
                  raise ValueError("Found duplicate user-set callback name "
                                   "'{}'. Use unique names to correct this."
                                   .format(name))
  
              for i, cb in enumerate(cbs):
                  if len(cbs) > 1:
                      unique_name = '{}_{}'.format(name, i+1)
                      if unique_name in grouped_cbs:
                          raise ValueError("Assigning new callback name failed "
                                           "since new name '{}' exists already."
                                           .format(unique_name))
                  else:
                      unique_name = name
                  yield unique_name, cb
docs: Make sure that the returned dict of named callbacks is unique
          w.r.t. to the callback name. User-defined names will not be
          renamed on conflict, instead an exception will be raised. The
          same goes for the event where renaming leads to a conflict.