Yes I could do it. Than getDefaultEmitOption becomes a virtual function. For me there is not big difference between virtual overload and dynamic_cast from technical point of view. 

I have thought on this as well, an I have not done it yet, because currently WPushButton/ControlPushButton is the only part where we need to be such generic. With the current solution this can be read from code instantly. 

I think your comment is part of your general concerns. And unfortunately it seems we do not have a common sense in this. 
I will put a comment on this later.