It is optional, right? When registering a class with hook impls, the methods can omit the ‘self’ argument and not be @staticmethod , and things will work; in fact, decorating with @staticmethod might cause problems. Correct? Would help to clarify the docs.