Currently, BaseDescriptor is typed assuming the owning class is a Thing. This means we can't type things quite as precisely as I'd like, for example in ActionDescriptor.
It would be nice to investigate adding another parameter to BaseDescriptor so that it can use a more specific type for the owning object. This wouldn't change the public API, but might be slightly neater and get rid of a #type: ignore or two.