That's not related to the mixins, but simply to the fact that if you declare something as returning "GTK.Widget", you'll get a GTK.Widget. One solution would be to extend the syntax to allow i.e. "GTK.Widget+" as a return type, meaning that subclasses may be returned as well. Or we could simply use push_gobject() always, I don't know if there are any compelling performance reasons to ever use push_gobjectclass(), and risk this type of problem...