Extension classes are registered in the Qt MetaType system with the help of the BLUEBERRY_REGISTER_EXTENSION_CLASS macro. Internally, this macro uses the Qt MetaType system to register a helper function which knows how to create an instance of a certain type and returns a void*.
All BlueBerry extension classes must inherit from QObject and when constructing a registered class via QMetaType::construct, the void* is cast to QObject* and qobject_cast calls are used to further query the inheritance hierarchy.
If, however, a dynamic_cast is used on such a QObject* pointer, the cast may fail on some systems in case of multiple inheritance scenarios. This problem occurs when registering the QtWorkbenchTweaklet which inherits both from QObject and WorkbenchTweaklet.