For #27328 - Fix for subclassing hooks

- Previously, sub-classing hooks would only work if the name of the derived class was alphabetically after the name of the base class.
- Derived hook classes tend to be named the same as the base class which meant that the behaviour was indeterminate.
Should this named "exclusive" instead of "synchronize" ? The code would be clearer if we see things like :
```
@exclusive
def mess_up_with_things(self):
       pass
```