Instead of a method exists; it is far preferable to provide an additional interface.  This is done in several areas of the framework to provide additional behavior.  This way when an element implements the behavior you can check to see if it is an instance of rather than doing an internal hash table lookup on the object itself.

IMO this makes it easier to extend the framework further as you can see even in the ModuleManager which provides interfaces for certain extension points.