Generator code is highly based on Gustavo Sverzut Barbieri's gobject-class.el