docs: def pre_change_receiver(self, instance: Model, action: Action):
          """
          Entry point for triggering the old_binding from save signals.
          """
          if action == Action.CREATE:
              group_names = set()
          else:
              group_names = set(self.group_names(instance))
  
          # use a thread local dict to be safe...
          if not hasattr(instance, '__instance_groups'):
              instance.__instance_groups = threading.local()
              instance.__instance_groups.observers = {}
          if not hasattr(instance.__instance_groups, 'observers'):
              instance.__instance_groups.observers = {}
  
          instance.__instance_groups.observers[self] = group_names