The reason to use the `@decorator` decorator is so that introspection works. We have a lot of code dedicated to giving useful error messages and things like that, I think that it's worthwhile maintaining a similar standard for decorators.

I've redone the implementation to not store things on other people's objects, and to use the key that you suggested.